Skip to content

Commit f5a5711

Browse files
Artur-claude
andcommitted
feat: enable SignalTest and add slf4j-simple for test logging
- Applied SignalsPlugin fix from bcb43396b (getIdentifier() ?? add() pattern) - Converted SignalTest to use AbstractFullStackTest - Created SignalEndpoint.ts snapshot with correct type imports - Added slf4j-simple test dependency to eliminate SLF4J warnings - Updated full-stack-test.md progress (5/47 tests converted) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 140caf6 commit f5a5711

File tree

7 files changed

+35
-33
lines changed

7 files changed

+35
-33
lines changed

packages/java/typescript-generator/full-stack-test.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ Transform the testing approach from separate Java→OpenAPI and OpenAPI→TypeSc
2525
- TypeScriptComparator.java ✅
2626
- **AbstractFullStackTest.java** ✅ (base class with all configuration)
2727

28-
**Phase 2: Convert Tests** 🔄 IN PROGRESS (4/47 converted)
28+
**Phase 2: Convert Tests** 🔄 IN PROGRESS (5/47 converted)
2929

30-
**Transfertypes Plugin (4/8):**
30+
**Transfertypes Plugin (5/8):**
3131
- ✅ UUIDTest (cleaned: removed connect-client.default.ts, endpoints.ts)
3232
- ✅ JsonNodeTest (cleaned: removed connect-client.default.ts, endpoints.ts)
3333
- ✅ MultipartFileTest (cleaned: removed connect-client.default.ts, endpoints.ts)
3434
- ✅ PushTypeTest (cleaned: removed connect-client.default.ts, endpoints.ts)
35+
- ✅ SignalTest (applied SignalsPlugin fix from bcb43396b)
3536
- ⏳ PageableTest
3637
- ⏳ BarePageableTest
37-
- ⏳ SignalTest (requires SignalsPlugin fix)
3838
- ⏳ MultipartFileMisuseTest
3939

4040
**Other Plugins (~40 remaining):**

packages/java/typescript-generator/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,11 @@
177177
<artifactId>spring-web</artifactId>
178178
<scope>test</scope>
179179
</dependency>
180+
<dependency>
181+
<groupId>org.slf4j</groupId>
182+
<artifactId>slf4j-simple</artifactId>
183+
<scope>test</scope>
184+
</dependency>
180185
</dependencies>
181186

182187
<build>

packages/java/typescript-generator/src/test/java/com/vaadin/hilla/parser/plugins/transfertypes/signals/SignalTest.java

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,19 @@
1515
*/
1616
package com.vaadin.hilla.parser.plugins.transfertypes.signals;
1717

18-
import java.io.IOException;
19-
import java.net.URISyntaxException;
20-
import java.util.List;
21-
import java.util.Set;
22-
2318
import org.junit.jupiter.api.Test;
2419

25-
import com.vaadin.hilla.parser.core.Parser;
26-
import com.vaadin.hilla.parser.plugins.backbone.BackbonePlugin;
27-
import com.vaadin.hilla.parser.plugins.transfertypes.TransferTypesPlugin;
28-
import com.vaadin.hilla.parser.plugins.transfertypes.test.helpers.TestHelper;
29-
import com.vaadin.hilla.parser.testutils.annotations.Endpoint;
20+
import com.vaadin.hilla.parser.testutils.AbstractFullStackTest;
3021

31-
public class SignalTest {
32-
private final TestHelper helper = new TestHelper(getClass());
22+
/**
23+
* Full-stack test for Signal type handling - verifies complete Java →
24+
* TypeScript generation pipeline.
25+
*/
26+
public class SignalTest extends AbstractFullStackTest {
3327

3428
@Test
3529
public void should_ReplaceSignalClassesWithLocalSignalRecords()
36-
throws IOException, URISyntaxException {
37-
var openAPI = new Parser()
38-
.classPath(Set.of(helper.getTargetDir().toString()))
39-
.endpointAnnotations(List.of(Endpoint.class))
40-
.addPlugin(new BackbonePlugin())
41-
.addPlugin(new TransferTypesPlugin())
42-
.execute(List.of(SignalEndpoint.class));
43-
44-
helper.executeParserWithConfig(openAPI);
30+
throws Exception {
31+
assertTypescriptMatchesSnapshot(SignalEndpoint.class);
4532
}
4633
}

packages/java/typescript-generator/src/test/java/com/vaadin/hilla/parser/testutils/AbstractFullStackTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ protected void assertTypescriptMatchesSnapshot(Class<?>... endpointClasses)
119119
.endpointExposedAnnotations(List.of(EndpointExposed.class))
120120
.addPlugin(new BackbonePlugin())
121121
.addPlugin(new TransferTypesPlugin())
122-
.addPlugin(new ModelPlugin())
123-
.addPlugin(new NonnullPlugin())
122+
.addPlugin(new ModelPlugin()).addPlugin(new NonnullPlugin())
124123
.addPlugin(new SubTypesPlugin())
125124
.addPlugin(new MultipartFileCheckerPlugin())
126125
.execute(Arrays.asList(endpointClasses));
@@ -148,7 +147,8 @@ private GeneratedFiles executeFullStack(OpenAPI openAPI)
148147
// Find the run-generator.mjs script
149148
Path scriptPath = findGeneratorScript();
150149

151-
// Write OpenAPI JSON to temp file (FrontendUtils doesn't support stdin piping)
150+
// Write OpenAPI JSON to temp file (FrontendUtils doesn't support
151+
// stdin piping)
152152
Path tempFile = Files.createTempFile("openapi", ".json");
153153
String output;
154154
try {

packages/java/typescript-generator/src/test/resources/com/vaadin/hilla/parser/plugins/transfertypes/signals/snapshots/.gitkeep

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { EndpointRequestInit as EndpointRequestInit_1 } from "@vaadin/hilla-frontend";
2+
import type ListSignal_1 from "./com/vaadin/hilla/runtime/transfertypes/ListSignal.js";
3+
import type NumberSignal_1 from "./com/vaadin/hilla/runtime/transfertypes/NumberSignal.js";
4+
import type Signal_1 from "./com/vaadin/hilla/runtime/transfertypes/Signal.js";
5+
import type ValueSignal_1 from "./com/vaadin/hilla/runtime/transfertypes/ValueSignal.js";
6+
import client_1 from "./connect-client.default.js";
7+
async function getNumberSignal_1(init?: EndpointRequestInit_1): Promise<NumberSignal_1 | undefined> { return client_1.call("SignalEndpoint", "getNumberSignal", {}, init); }
8+
async function getStringListSignal_1(init?: EndpointRequestInit_1): Promise<ListSignal_1<string | undefined> | undefined> { return client_1.call("SignalEndpoint", "getStringListSignal", {}, init); }
9+
async function getStringSignal_1(init?: EndpointRequestInit_1): Promise<Signal_1<string | undefined> | undefined> { return client_1.call("SignalEndpoint", "getStringSignal", {}, init); }
10+
async function getStringValueSignal_1(init?: EndpointRequestInit_1): Promise<ValueSignal_1<string | undefined> | undefined> { return client_1.call("SignalEndpoint", "getStringValueSignal", {}, init); }
11+
export { getNumberSignal_1 as getNumberSignal, getStringListSignal_1 as getStringListSignal, getStringSignal_1 as getStringSignal, getStringValueSignal_1 as getStringValueSignal };

packages/ts/generator-plugin-signals/src/SignalProcessor.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,11 @@ export default class SignalProcessor {
5959
if (isFunctionDeclaration(node)) {
6060
// Check if the function is a signal method.
6161
if (node.name && this.#methods.has(node.name.text)) {
62-
// Get the signal class ID that was already imported in
63-
// TransferTypes plugin.
64-
const signalId = imports.named.getIdentifier(
65-
HILLA_REACT_SIGNALS,
66-
simplifyFullyQualifiedName(this.#methods.get(node.name.text)!),
67-
)!;
62+
// Get or add the signal class identifier for runtime use.
63+
const signalClassName = simplifyFullyQualifiedName(this.#methods.get(node.name.text)!);
64+
const signalId =
65+
imports.named.getIdentifier(HILLA_REACT_SIGNALS, signalClassName) ??
66+
imports.named.add(HILLA_REACT_SIGNALS, signalClassName);
6867

6968
// Remove the `init` parameter.
7069
const params = node.parameters.filter(

0 commit comments

Comments
 (0)