This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-5623-8001e4c86e8d60971887ad7509b88c42a9fd1ad5 in repository https://gitbox.apache.org/repos/asf/texera.git
commit 39a12345a50292c3b047b7a44f8848a7c7102d8a Author: Benjamin Le <[email protected]> AuthorDate: Thu Jun 11 16:09:20 2026 -0700 test(frontend): add unit tests for CodeEditorService (#5623) ### What changes were proposed in this PR? Adds unit tests for CodeEditorService, which previously had no spec file. Covers service creation, `setEditorState`/`getEditorState` for true and false states, and independent state tracking across multiple operator IDs. ### Any related issues, documentation, discussions? Closes #5502 ### How was this PR tested? New spec run via `yarn test -- code-editor.service` and `yarn lint`. 4 tests passing. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude (Claude Sonnet 4.6) Co-authored-by: Benjamin Le <[email protected]> --- .../code-editor/code-editor.service.spec.ts | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/frontend/src/app/workspace/service/code-editor/code-editor.service.spec.ts b/frontend/src/app/workspace/service/code-editor/code-editor.service.spec.ts new file mode 100644 index 0000000000..500e5fe2ec --- /dev/null +++ b/frontend/src/app/workspace/service/code-editor/code-editor.service.spec.ts @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { CodeEditorService } from "./code-editor.service"; + +describe("CodeEditorService", () => { + let service: CodeEditorService; + + beforeEach(() => { + service = new CodeEditorService(); + }); + + it("should be created", () => { + expect(service).toBeTruthy(); + }); + + it("should emit true after setEditorState is called with true", () => { + let value: boolean | undefined; + service.getEditorState("op1").subscribe(v => (value = v)); + service.setEditorState("op1", true); + expect(value).toBe(true); + }); + + it("should emit false after setEditorState is called with false", () => { + let value: boolean | undefined; + service.getEditorState("op1").subscribe(v => (value = v)); + service.setEditorState("op1", false); + expect(value).toBe(false); + }); + + it("should track state independently for different operator IDs", () => { + let valueA: boolean | undefined; + let valueB: boolean | undefined; + service.getEditorState("opA").subscribe(v => (valueA = v)); + service.getEditorState("opB").subscribe(v => (valueB = v)); + service.setEditorState("opA", true); + expect(valueA).toBe(true); + expect(valueB).toBe(false); + }); +});
