@typespec/emitter-framework 0.11.0-dev.0 → 0.11.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/core/components/index.d.ts +2 -0
- package/dist/src/core/components/index.d.ts.map +1 -1
- package/dist/src/core/components/index.js +4 -1
- package/dist/src/core/components/index.js.map +1 -0
- package/dist/src/core/components/output.js +2 -1
- package/dist/src/core/components/output.js.map +1 -0
- package/dist/src/core/components/overrides/component-overrides.d.ts +64 -0
- package/dist/src/core/components/overrides/component-overrides.d.ts.map +1 -0
- package/dist/src/core/components/overrides/component-overrides.js +41 -0
- package/dist/src/core/components/overrides/component-overrides.js.map +1 -0
- package/dist/src/core/components/overrides/config.d.ts +28 -0
- package/dist/src/core/components/overrides/config.d.ts.map +1 -0
- package/dist/src/core/components/overrides/config.js +55 -0
- package/dist/src/core/components/overrides/config.js.map +1 -0
- package/dist/src/core/components/overrides/context.d.ts +11 -0
- package/dist/src/core/components/overrides/context.d.ts.map +1 -0
- package/dist/src/core/components/overrides/context.js +9 -0
- package/dist/src/core/components/overrides/context.js.map +1 -0
- package/dist/src/core/context/index.js +2 -1
- package/dist/src/core/context/index.js.map +1 -0
- package/dist/src/core/context/name-policy-context.js +2 -1
- package/dist/src/core/context/name-policy-context.js.map +1 -0
- package/dist/src/core/context/tsp-context.js +2 -1
- package/dist/src/core/context/tsp-context.js.map +1 -0
- package/dist/src/core/index.js +2 -1
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/transport-name-policy.js +2 -1
- package/dist/src/core/transport-name-policy.js.map +1 -0
- package/dist/src/core/write-output.d.ts.map +1 -1
- package/dist/src/core/write-output.js +4 -3
- package/dist/src/core/write-output.js.map +1 -0
- package/dist/src/csharp/components/class/declaration.d.ts +1 -1
- package/dist/src/csharp/components/class/declaration.d.ts.map +1 -1
- package/dist/src/csharp/components/class/declaration.js +14 -5
- package/dist/src/csharp/components/class/declaration.js.map +1 -0
- package/dist/src/csharp/components/class/declaration.test.js +125 -92
- package/dist/src/csharp/components/class/declaration.test.js.map +1 -0
- package/dist/src/csharp/components/enum/declaration.js +2 -1
- package/dist/src/csharp/components/enum/declaration.js.map +1 -0
- package/dist/src/csharp/components/enum/declaration.test.js +52 -88
- package/dist/src/csharp/components/enum/declaration.test.js.map +1 -0
- package/dist/src/csharp/components/index.js +2 -1
- package/dist/src/csharp/components/index.js.map +1 -0
- package/dist/src/csharp/components/property/property.d.ts.map +1 -1
- package/dist/src/csharp/components/property/property.js +40 -14
- package/dist/src/csharp/components/property/property.js.map +1 -0
- package/dist/src/csharp/components/property/property.test.js +129 -29
- package/dist/src/csharp/components/property/property.test.js.map +1 -0
- package/dist/src/csharp/components/type-expression.d.ts.map +1 -1
- package/dist/src/csharp/components/type-expression.js +34 -6
- package/dist/src/csharp/components/type-expression.js.map +1 -0
- package/dist/src/csharp/components/type-expression.test.js +87 -54
- package/dist/src/csharp/components/type-expression.test.js.map +1 -0
- package/dist/src/csharp/components/utils/doc-comments.js +2 -1
- package/dist/src/csharp/components/utils/doc-comments.js.map +1 -0
- package/dist/src/csharp/components/utils/nullable-util.d.ts +4 -0
- package/dist/src/csharp/components/utils/nullable-util.d.ts.map +1 -0
- package/dist/src/csharp/components/utils/nullable-util.js +27 -0
- package/dist/src/csharp/components/utils/nullable-util.js.map +1 -0
- package/dist/src/csharp/components/utils/refkey.js +2 -1
- package/dist/src/csharp/components/utils/refkey.js.map +1 -0
- package/dist/src/csharp/index.js +2 -1
- package/dist/src/csharp/index.js.map +1 -0
- package/dist/src/lib.js +2 -1
- package/dist/src/lib.js.map +1 -0
- package/dist/src/testing/index.js +2 -1
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/scenario-test/code-block-expectation.js +2 -1
- package/dist/src/testing/scenario-test/code-block-expectation.js.map +1 -0
- package/dist/src/testing/scenario-test/code-block-expectation.test.js +2 -1
- package/dist/src/testing/scenario-test/code-block-expectation.test.js.map +1 -0
- package/dist/src/testing/scenario-test/harness.js +8 -2
- package/dist/src/testing/scenario-test/harness.js.map +1 -0
- package/dist/src/testing/scenario-test/index.js +2 -1
- package/dist/src/testing/scenario-test/index.js.map +1 -0
- package/dist/src/testing/scenario-test/snippet-extractor.js +2 -1
- package/dist/src/testing/scenario-test/snippet-extractor.js.map +1 -0
- package/dist/src/typescript/components/array-expression.js +2 -1
- package/dist/src/typescript/components/array-expression.js.map +1 -0
- package/dist/src/typescript/components/arrow-function.js +2 -1
- package/dist/src/typescript/components/arrow-function.js.map +1 -0
- package/dist/src/typescript/components/class-method.js +2 -1
- package/dist/src/typescript/components/class-method.js.map +1 -0
- package/dist/src/typescript/components/enum-declaration.js +2 -1
- package/dist/src/typescript/components/enum-declaration.js.map +1 -0
- package/dist/src/typescript/components/function-declaration.js +2 -1
- package/dist/src/typescript/components/function-declaration.js.map +1 -0
- package/dist/src/typescript/components/function-expression.js +2 -1
- package/dist/src/typescript/components/function-expression.js.map +1 -0
- package/dist/src/typescript/components/function-type.js +2 -1
- package/dist/src/typescript/components/function-type.js.map +1 -0
- package/dist/src/typescript/components/index.js +2 -1
- package/dist/src/typescript/components/index.js.map +1 -0
- package/dist/src/typescript/components/interface-declaration.js +2 -1
- package/dist/src/typescript/components/interface-declaration.js.map +1 -0
- package/dist/src/typescript/components/interface-member.d.ts.map +1 -1
- package/dist/src/typescript/components/interface-member.js +13 -20
- package/dist/src/typescript/components/interface-member.js.map +1 -0
- package/dist/src/typescript/components/interface-method.js +2 -1
- package/dist/src/typescript/components/interface-method.js.map +1 -0
- package/dist/src/typescript/components/record-expression.js +2 -1
- package/dist/src/typescript/components/record-expression.js.map +1 -0
- package/dist/src/typescript/components/static-serializers.js +2 -1
- package/dist/src/typescript/components/static-serializers.js.map +1 -0
- package/dist/src/typescript/components/type-alias-declaration.js +2 -1
- package/dist/src/typescript/components/type-alias-declaration.js.map +1 -0
- package/dist/src/typescript/components/type-declaration.js +2 -1
- package/dist/src/typescript/components/type-declaration.js.map +1 -0
- package/dist/src/typescript/components/type-expression.d.ts +0 -1
- package/dist/src/typescript/components/type-expression.d.ts.map +1 -1
- package/dist/src/typescript/components/type-expression.js +13 -12
- package/dist/src/typescript/components/type-expression.js.map +1 -0
- package/dist/src/typescript/components/type-transform.d.ts.map +1 -1
- package/dist/src/typescript/components/type-transform.js +5 -4
- package/dist/src/typescript/components/type-transform.js.map +1 -0
- package/dist/src/typescript/components/union/declaration.js +2 -1
- package/dist/src/typescript/components/union/declaration.js.map +1 -0
- package/dist/src/typescript/components/union/declaration.test.js +2 -1
- package/dist/src/typescript/components/union/declaration.test.js.map +1 -0
- package/dist/src/typescript/components/union/expression.js +2 -1
- package/dist/src/typescript/components/union/expression.js.map +1 -0
- package/dist/src/typescript/components/union/expression.test.js +2 -1
- package/dist/src/typescript/components/union/expression.test.js.map +1 -0
- package/dist/src/typescript/components/value-expression.js +2 -1
- package/dist/src/typescript/components/value-expression.js.map +1 -0
- package/dist/src/typescript/index.js +2 -1
- package/dist/src/typescript/index.js.map +1 -0
- package/dist/src/typescript/lib.js +2 -1
- package/dist/src/typescript/lib.js.map +1 -0
- package/dist/src/typescript/utils/index.js +2 -1
- package/dist/src/typescript/utils/index.js.map +1 -0
- package/dist/src/typescript/utils/operation.js +2 -1
- package/dist/src/typescript/utils/operation.js.map +1 -0
- package/dist/src/typescript/utils/refkey.js +2 -1
- package/dist/src/typescript/utils/refkey.js.map +1 -0
- package/dist/test/test-host.js +2 -1
- package/dist/test/test-host.js.map +1 -0
- package/dist/test/testing/snippet-extractor-csharp.test.js +2 -1
- package/dist/test/testing/snippet-extractor-csharp.test.js.map +1 -0
- package/dist/test/testing/snippet-extractor-java.test.js +2 -1
- package/dist/test/testing/snippet-extractor-java.test.js.map +1 -0
- package/dist/test/testing/snippet-extractor-python.test.js +2 -1
- package/dist/test/testing/snippet-extractor-python.test.js.map +1 -0
- package/dist/test/testing/snippet-extractor-typescript.test.js +2 -1
- package/dist/test/testing/snippet-extractor-typescript.test.js.map +1 -0
- package/dist/test/typescript/components/arrow-function.test.js +18 -22
- package/dist/test/typescript/components/arrow-function.test.js.map +1 -0
- package/dist/test/typescript/components/component-override.test.d.ts +2 -0
- package/dist/test/typescript/components/component-override.test.d.ts.map +1 -0
- package/dist/test/typescript/components/component-override.test.js +78 -0
- package/dist/test/typescript/components/component-override.test.js.map +1 -0
- package/dist/test/typescript/components/enum-declaration.test.js +2 -1
- package/dist/test/typescript/components/enum-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/function-declaration.test.js +3 -2
- package/dist/test/typescript/components/function-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/function-expression.test.js +18 -22
- package/dist/test/typescript/components/function-expression.test.js.map +1 -0
- package/dist/test/typescript/components/function-type.test.js +18 -22
- package/dist/test/typescript/components/function-type.test.js.map +1 -0
- package/dist/test/typescript/components/interface-declaration.test.js +3 -2
- package/dist/test/typescript/components/interface-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/interface-method.test.js +37 -45
- package/dist/test/typescript/components/interface-method.test.js.map +1 -0
- package/dist/test/typescript/components/member-expression.test.js +2 -1
- package/dist/test/typescript/components/member-expression.test.js.map +1 -0
- package/dist/test/typescript/components/type-alias-declaration.test.js +8 -5
- package/dist/test/typescript/components/type-alias-declaration.test.js.map +1 -0
- package/dist/test/typescript/components/type-transform.test.js +29 -27
- package/dist/test/typescript/components/type-transform.test.js.map +1 -0
- package/dist/test/typescript/components/value-expression.test.js +3 -2
- package/dist/test/typescript/components/value-expression.test.js.map +1 -0
- package/dist/test/typescript/utils.js +2 -1
- package/dist/test/typescript/utils.js.map +1 -0
- package/dist/test/utils.d.ts +1 -0
- package/dist/test/utils.d.ts.map +1 -1
- package/dist/test/utils.js +13 -3
- package/dist/test/utils.js.map +1 -0
- package/dist/test/vitest.setup.js +2 -1
- package/dist/test/vitest.setup.js.map +1 -0
- package/package.json +9 -13
- package/src/core/components/index.tsx +2 -0
- package/src/core/components/overrides/component-overrides.tsx +134 -0
- package/src/core/components/overrides/config.ts +85 -0
- package/src/core/components/overrides/context.ts +14 -0
- package/src/core/write-output.ts +2 -2
- package/src/csharp/components/class/declaration.test.tsx +114 -88
- package/src/csharp/components/class/declaration.tsx +13 -3
- package/src/csharp/components/enum/declaration.test.tsx +47 -78
- package/src/csharp/components/property/property.test.tsx +108 -25
- package/src/csharp/components/property/property.tsx +43 -11
- package/src/csharp/components/type-expression.test.tsx +84 -69
- package/src/csharp/components/type-expression.tsx +31 -5
- package/src/csharp/components/utils/nullable-util.ts +25 -0
- package/src/testing/scenario-test/harness.ts +6 -1
- package/src/typescript/components/interface-member.tsx +8 -14
- package/src/typescript/components/type-expression.tsx +7 -8
- package/src/typescript/components/type-transform.tsx +3 -7
- package/test/typescript/components/arrow-function.test.tsx +23 -42
- package/test/typescript/components/component-override.test.tsx +71 -0
- package/test/typescript/components/function-declaration.test.tsx +2 -1
- package/test/typescript/components/function-expression.test.tsx +23 -42
- package/test/typescript/components/function-type.test.tsx +22 -40
- package/test/typescript/components/interface-declaration.test.tsx +1 -1
- package/test/typescript/components/interface-method.test.tsx +50 -92
- package/test/typescript/components/type-alias-declaration.test.tsx +8 -6
- package/test/typescript/components/type-transform.test.tsx +37 -37
- package/test/typescript/components/value-expression.test.tsx +1 -1
- package/test/utils.ts +10 -3
- package/dist/test/typescript/test-host.d.ts +0 -16
- package/dist/test/typescript/test-host.d.ts.map +0 -1
- package/dist/test/typescript/test-host.js +0 -40
- package/test/typescript/test-host.ts +0 -49
|
@@ -1,71 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { d } from "@alloy-js/core/testing";
|
|
1
|
+
import { Tester } from "#test/test-host.js";
|
|
3
2
|
import { SourceFile } from "@alloy-js/typescript";
|
|
4
|
-
import type
|
|
5
|
-
import
|
|
6
|
-
import { beforeEach, describe, it } from "vitest";
|
|
3
|
+
import { type TesterInstance, t } from "@typespec/compiler/testing";
|
|
4
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
7
5
|
import { Output } from "../../../src/core/components/output.jsx";
|
|
8
6
|
import { ArrowFunction } from "../../../src/typescript/components/arrow-function.jsx";
|
|
9
|
-
import { assertFileContents } from "../../utils.js";
|
|
10
|
-
import { createEmitterFrameworkTestRunner } from "../test-host.js";
|
|
11
7
|
|
|
12
8
|
describe("arrow functions with a `type` prop", () => {
|
|
13
|
-
let runner:
|
|
9
|
+
let runner: TesterInstance;
|
|
14
10
|
|
|
15
11
|
beforeEach(async () => {
|
|
16
|
-
runner = await
|
|
12
|
+
runner = await Tester.createInstance();
|
|
17
13
|
});
|
|
18
14
|
|
|
19
15
|
it("creates a function", async () => {
|
|
20
|
-
const { getName } =
|
|
21
|
-
@test op getName(id: string): string;
|
|
22
|
-
`)
|
|
16
|
+
const { getName } = await runner.compile(t.code`
|
|
17
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
18
|
+
`);
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
expect(
|
|
25
21
|
<Output program={runner.program}>
|
|
26
22
|
<SourceFile path="test.ts">
|
|
27
23
|
<ArrowFunction type={getName}>console.log("Hello!");</ArrowFunction>
|
|
28
24
|
</SourceFile>
|
|
29
25
|
</Output>,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
assertFileContents(
|
|
33
|
-
res,
|
|
34
|
-
d`
|
|
26
|
+
).toRenderTo(`
|
|
35
27
|
(id: string): string => {
|
|
36
28
|
console.log("Hello!");
|
|
37
29
|
}
|
|
38
|
-
|
|
39
|
-
);
|
|
30
|
+
`);
|
|
40
31
|
});
|
|
41
32
|
|
|
42
33
|
it("creates an async function", async () => {
|
|
43
|
-
const { getName } =
|
|
44
|
-
@test op getName(id: string): string;
|
|
45
|
-
`)
|
|
34
|
+
const { getName } = await runner.compile(t.code`
|
|
35
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
36
|
+
`);
|
|
46
37
|
|
|
47
|
-
|
|
38
|
+
expect(
|
|
48
39
|
<Output program={runner.program}>
|
|
49
40
|
<SourceFile path="test.ts">
|
|
50
41
|
<ArrowFunction async type={getName} />
|
|
51
42
|
</SourceFile>
|
|
52
43
|
</Output>,
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
assertFileContents(
|
|
56
|
-
res,
|
|
57
|
-
d`
|
|
44
|
+
).toRenderTo(`
|
|
58
45
|
async (id: string): Promise<string> => {}
|
|
59
|
-
|
|
60
|
-
);
|
|
46
|
+
`);
|
|
61
47
|
});
|
|
62
48
|
|
|
63
49
|
it("can append extra parameters with raw params provided", async () => {
|
|
64
|
-
const { getName } =
|
|
65
|
-
@test op getName(id: string): string;
|
|
66
|
-
`)
|
|
50
|
+
const { getName } = await runner.compile(t.code`
|
|
51
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
52
|
+
`);
|
|
67
53
|
|
|
68
|
-
|
|
54
|
+
expect(
|
|
69
55
|
<Output program={runner.program}>
|
|
70
56
|
<SourceFile path="test.ts">
|
|
71
57
|
<ArrowFunction
|
|
@@ -74,13 +60,8 @@ describe("arrow functions with a `type` prop", () => {
|
|
|
74
60
|
/>
|
|
75
61
|
</SourceFile>
|
|
76
62
|
</Output>,
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
assertFileContents(
|
|
80
|
-
res,
|
|
81
|
-
d`
|
|
63
|
+
).toRenderTo(`
|
|
82
64
|
(additionalParam: number, id: string): string => {}
|
|
83
|
-
|
|
84
|
-
);
|
|
65
|
+
`);
|
|
85
66
|
});
|
|
86
67
|
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Experimental_ComponentOverrides,
|
|
3
|
+
Experimental_ComponentOverridesConfig,
|
|
4
|
+
} from "#core/index.js";
|
|
5
|
+
import { Tester } from "#test/test-host.js";
|
|
6
|
+
import { FunctionDeclaration } from "#typescript/index.js";
|
|
7
|
+
import { For, List, type Children } from "@alloy-js/core";
|
|
8
|
+
import { d } from "@alloy-js/core/testing";
|
|
9
|
+
import { SourceFile } from "@alloy-js/typescript";
|
|
10
|
+
import type { Namespace } from "@typespec/compiler";
|
|
11
|
+
import { expect, it } from "vitest";
|
|
12
|
+
import { Output } from "../../../src/core/components/output.jsx";
|
|
13
|
+
import { InterfaceDeclaration } from "../../../src/typescript/components/interface-declaration.jsx";
|
|
14
|
+
|
|
15
|
+
it("uses overridden component", async () => {
|
|
16
|
+
const { program } = await Tester.compile(`
|
|
17
|
+
namespace DemoService;
|
|
18
|
+
model Foo {
|
|
19
|
+
knownProp: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
op foo(): Foo;
|
|
23
|
+
|
|
24
|
+
`);
|
|
25
|
+
|
|
26
|
+
const [namespace] = program.resolveTypeReference("DemoService");
|
|
27
|
+
const models = Array.from((namespace as Namespace).models.values());
|
|
28
|
+
const operations = Array.from((namespace as Namespace).operations.values());
|
|
29
|
+
|
|
30
|
+
expect(
|
|
31
|
+
<Output program={program}>
|
|
32
|
+
<TestClientOverrides>
|
|
33
|
+
<SourceFile path="test.ts">
|
|
34
|
+
<List hardline>
|
|
35
|
+
{models.map((model) => (
|
|
36
|
+
<InterfaceDeclaration export type={model} />
|
|
37
|
+
))}
|
|
38
|
+
</List>
|
|
39
|
+
<hbr />
|
|
40
|
+
<For each={operations}>
|
|
41
|
+
{(operation) => <FunctionDeclaration export type={operation} />}
|
|
42
|
+
</For>
|
|
43
|
+
</SourceFile>
|
|
44
|
+
</TestClientOverrides>
|
|
45
|
+
</Output>,
|
|
46
|
+
).toRenderTo(
|
|
47
|
+
d`
|
|
48
|
+
export interface Foo {
|
|
49
|
+
knownProp: string;
|
|
50
|
+
}
|
|
51
|
+
export function foo(): unknown {}
|
|
52
|
+
`,
|
|
53
|
+
);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
function TestClientOverrides(props: { children?: Children }) {
|
|
57
|
+
const overrides = Experimental_ComponentOverridesConfig().forTypeKind("Model", {
|
|
58
|
+
reference: (props) => {
|
|
59
|
+
if (props.type.name === "Foo") {
|
|
60
|
+
return "unknown";
|
|
61
|
+
} else {
|
|
62
|
+
return props.default;
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
return (
|
|
67
|
+
<Experimental_ComponentOverrides overrides={overrides}>
|
|
68
|
+
{props.children}
|
|
69
|
+
</Experimental_ComponentOverrides>
|
|
70
|
+
);
|
|
71
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getProgram } from "#test/utils.js";
|
|
1
2
|
import { code } from "@alloy-js/core";
|
|
2
3
|
import { d } from "@alloy-js/core/testing";
|
|
3
4
|
import { SourceFile } from "@alloy-js/typescript";
|
|
@@ -5,7 +6,7 @@ import type { Namespace } from "@typespec/compiler";
|
|
|
5
6
|
import { describe, expect, it } from "vitest";
|
|
6
7
|
import { Output } from "../../../src/core/components/output.jsx";
|
|
7
8
|
import { FunctionDeclaration } from "../../../src/typescript/components/function-declaration.js";
|
|
8
|
-
|
|
9
|
+
|
|
9
10
|
describe("Typescript Function Declaration", () => {
|
|
10
11
|
describe("Function bound to Typespec Types", () => {
|
|
11
12
|
describe("Bound to Operation", () => {
|
|
@@ -1,71 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { d } from "@alloy-js/core/testing";
|
|
1
|
+
import { Tester } from "#test/test-host.js";
|
|
3
2
|
import { SourceFile } from "@alloy-js/typescript";
|
|
4
|
-
import type
|
|
5
|
-
import
|
|
6
|
-
import { beforeEach, describe, it } from "vitest";
|
|
3
|
+
import { t, type TesterInstance } from "@typespec/compiler/testing";
|
|
4
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
7
5
|
import { Output } from "../../../src/core/components/output.jsx";
|
|
8
6
|
import { FunctionExpression } from "../../../src/typescript/components/function-expression.jsx";
|
|
9
|
-
import { assertFileContents } from "../../utils.js";
|
|
10
|
-
import { createEmitterFrameworkTestRunner } from "../test-host.js";
|
|
11
7
|
|
|
12
8
|
describe("function expressions with a `type` prop", () => {
|
|
13
|
-
let runner:
|
|
9
|
+
let runner: TesterInstance;
|
|
14
10
|
|
|
15
11
|
beforeEach(async () => {
|
|
16
|
-
runner = await
|
|
12
|
+
runner = await Tester.createInstance();
|
|
17
13
|
});
|
|
18
14
|
|
|
19
15
|
it("creates a function", async () => {
|
|
20
|
-
const { getName } =
|
|
21
|
-
@test op getName(id: string): string;
|
|
22
|
-
`)
|
|
16
|
+
const { getName } = await runner.compile(t.code`
|
|
17
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
18
|
+
`);
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
expect(
|
|
25
21
|
<Output program={runner.program}>
|
|
26
22
|
<SourceFile path="test.ts">
|
|
27
23
|
<FunctionExpression type={getName}>console.log("Hello!");</FunctionExpression>
|
|
28
24
|
</SourceFile>
|
|
29
25
|
</Output>,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
assertFileContents(
|
|
33
|
-
res,
|
|
34
|
-
d`
|
|
26
|
+
).toRenderTo(`
|
|
35
27
|
function (id: string): string {
|
|
36
28
|
console.log("Hello!");
|
|
37
29
|
}
|
|
38
|
-
|
|
39
|
-
);
|
|
30
|
+
`);
|
|
40
31
|
});
|
|
41
32
|
|
|
42
33
|
it("creates an async function", async () => {
|
|
43
|
-
const { getName } =
|
|
44
|
-
@test op getName(id: string): string;
|
|
45
|
-
`)
|
|
34
|
+
const { getName } = await runner.compile(t.code`
|
|
35
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
36
|
+
`);
|
|
46
37
|
|
|
47
|
-
|
|
38
|
+
expect(
|
|
48
39
|
<Output program={runner.program}>
|
|
49
40
|
<SourceFile path="test.ts">
|
|
50
41
|
<FunctionExpression async type={getName} />
|
|
51
42
|
</SourceFile>
|
|
52
43
|
</Output>,
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
assertFileContents(
|
|
56
|
-
res,
|
|
57
|
-
d`
|
|
44
|
+
).toRenderTo(`
|
|
58
45
|
async function (id: string): Promise<string> {}
|
|
59
|
-
|
|
60
|
-
);
|
|
46
|
+
`);
|
|
61
47
|
});
|
|
62
48
|
|
|
63
49
|
it("can append extra parameters with raw params provided", async () => {
|
|
64
|
-
const { getName } =
|
|
65
|
-
@test op getName(id: string): string;
|
|
66
|
-
`)
|
|
50
|
+
const { getName } = await runner.compile(t.code`
|
|
51
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
52
|
+
`);
|
|
67
53
|
|
|
68
|
-
|
|
54
|
+
expect(
|
|
69
55
|
<Output program={runner.program}>
|
|
70
56
|
<SourceFile path="test.ts">
|
|
71
57
|
<FunctionExpression
|
|
@@ -74,13 +60,8 @@ describe("function expressions with a `type` prop", () => {
|
|
|
74
60
|
/>
|
|
75
61
|
</SourceFile>
|
|
76
62
|
</Output>,
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
assertFileContents(
|
|
80
|
-
res,
|
|
81
|
-
d`
|
|
63
|
+
).toRenderTo(`
|
|
82
64
|
function (additionalParam: number, id: string): string {}
|
|
83
|
-
|
|
84
|
-
);
|
|
65
|
+
`);
|
|
85
66
|
});
|
|
86
67
|
});
|
|
@@ -1,81 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { d } from "@alloy-js/core/testing";
|
|
1
|
+
import { Tester } from "#test/test-host.js";
|
|
3
2
|
import { SourceFile } from "@alloy-js/typescript";
|
|
4
3
|
import type { Operation } from "@typespec/compiler";
|
|
5
|
-
import type
|
|
6
|
-
import { beforeEach, describe, it } from "vitest";
|
|
4
|
+
import { t, type TesterInstance } from "@typespec/compiler/testing";
|
|
5
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
7
6
|
import { Output } from "../../../src/core/components/output.jsx";
|
|
8
7
|
import { FunctionType } from "../../../src/typescript/index.js";
|
|
9
|
-
import { assertFileContents } from "../../utils.js";
|
|
10
|
-
import { createEmitterFrameworkTestRunner } from "../test-host.js";
|
|
11
8
|
|
|
12
9
|
describe("function types with a `type` prop", () => {
|
|
13
|
-
let runner:
|
|
10
|
+
let runner: TesterInstance;
|
|
14
11
|
|
|
15
12
|
beforeEach(async () => {
|
|
16
|
-
runner = await
|
|
13
|
+
runner = await Tester.createInstance();
|
|
17
14
|
});
|
|
18
15
|
|
|
19
16
|
it("creates a function type", async () => {
|
|
20
|
-
const { getName } =
|
|
21
|
-
@test op getName(id: string): string;
|
|
22
|
-
`)
|
|
17
|
+
const { getName } = await runner.compile(t.code`
|
|
18
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
19
|
+
`);
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
expect(
|
|
25
22
|
<Output program={runner.program}>
|
|
26
23
|
<SourceFile path="test.ts">
|
|
27
24
|
<FunctionType type={getName} />
|
|
28
25
|
</SourceFile>
|
|
29
26
|
</Output>,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
assertFileContents(
|
|
33
|
-
res,
|
|
34
|
-
d`
|
|
27
|
+
).toRenderTo(`
|
|
35
28
|
(id: string) => string
|
|
36
|
-
|
|
37
|
-
);
|
|
29
|
+
`);
|
|
38
30
|
});
|
|
39
31
|
|
|
40
32
|
it("creates an async function type", async () => {
|
|
41
|
-
const { getName } =
|
|
42
|
-
@test op getName(id: string): string;
|
|
43
|
-
`)
|
|
33
|
+
const { getName } = await runner.compile(t.code`
|
|
34
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
35
|
+
`);
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
expect(
|
|
46
38
|
<Output program={runner.program}>
|
|
47
39
|
<SourceFile path="test.ts">
|
|
48
40
|
<FunctionType async type={getName} />
|
|
49
41
|
</SourceFile>
|
|
50
42
|
</Output>,
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
assertFileContents(
|
|
54
|
-
res,
|
|
55
|
-
d`
|
|
43
|
+
).toRenderTo(`
|
|
56
44
|
(id: string) => Promise<string>
|
|
57
|
-
|
|
58
|
-
);
|
|
45
|
+
`);
|
|
59
46
|
});
|
|
60
47
|
|
|
61
48
|
it("can append extra parameters with raw params provided", async () => {
|
|
62
|
-
const { getName } = (await runner.compile(`
|
|
63
|
-
@test op getName(id: string): string;
|
|
49
|
+
const { getName } = (await runner.compile(t.code`
|
|
50
|
+
@test op ${t.op("getName")}(id: string): string;
|
|
64
51
|
`)) as { getName: Operation };
|
|
65
52
|
|
|
66
|
-
|
|
53
|
+
expect(
|
|
67
54
|
<Output program={runner.program}>
|
|
68
55
|
<SourceFile path="test.ts">
|
|
69
56
|
<FunctionType type={getName} parameters={[{ name: "additionalParam", type: "number" }]} />
|
|
70
57
|
</SourceFile>
|
|
71
58
|
</Output>,
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
assertFileContents(
|
|
75
|
-
res,
|
|
76
|
-
d`
|
|
59
|
+
).toRenderTo(`
|
|
77
60
|
(additionalParam: number, id: string) => string
|
|
78
|
-
|
|
79
|
-
);
|
|
61
|
+
`);
|
|
80
62
|
});
|
|
81
63
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { getProgram } from "#test/utils.js";
|
|
1
2
|
import { For, List } from "@alloy-js/core";
|
|
2
3
|
import { SourceFile } from "@alloy-js/typescript";
|
|
3
4
|
import type { Namespace } from "@typespec/compiler";
|
|
4
5
|
import { describe, expect, it } from "vitest";
|
|
5
6
|
import { Output } from "../../../src/core/components/output.jsx";
|
|
6
7
|
import { InterfaceDeclaration } from "../../../src/typescript/components/interface-declaration.js";
|
|
7
|
-
import { getProgram } from "../test-host.js";
|
|
8
8
|
|
|
9
9
|
describe("Typescript Interface", () => {
|
|
10
10
|
describe("Interface bound to Typespec Types", () => {
|