Skip to content

Commit 561ec7e

Browse files
committed
Add unit test for default package description updated based on artifact type
1 parent 2eb74a7 commit 561ec7e

File tree

4 files changed

+96
-5
lines changed

4 files changed

+96
-5
lines changed

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/PackageJsonGenerator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
@SmithyInternalApi
3131
final class PackageJsonGenerator {
3232

33+
public static final String PACKAGE_JSON_FILENAME = "package.json";
34+
3335
private PackageJsonGenerator() {}
3436

3537
static void writePackageJson(
@@ -74,6 +76,6 @@ static void writePackageJson(
7476
template = template.replace("${packageDescription}", settings.getPackageDescription());
7577
template = template.replace("${packageVersion}", settings.getPackageVersion());
7678
template = template.replace("${packageManager}", settings.getPackageManager().getCommand());
77-
manifest.writeFile("package.json", template);
79+
manifest.writeFile(PACKAGE_JSON_FILENAME, template);
7880
}
7981
}

smithy-typescript-codegen/src/main/java/software/amazon/smithy/typescript/codegen/TypeScriptSettings.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,17 @@ public static TypeScriptSettings from(Model model, ObjectNode config, ArtifactTy
111111
}
112112

113113
private String getDefaultDescription() {
114-
String defaultDescription = getPackageName();
114+
String description = getPackageName();
115115
switch (artifactType) {
116116
case CLIENT:
117-
defaultDescription += " client";
117+
description += " client";
118118
break;
119119
case SSDK:
120-
defaultDescription += " server";
120+
description += " server";
121121
break;
122122
default:
123123
}
124-
return defaultDescription;
124+
return description;
125125
}
126126

127127
// TODO: this seems reusable across generators.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package software.amazon.smithy.typescript.codegen;
2+
3+
import org.junit.jupiter.params.ParameterizedTest;
4+
import org.junit.jupiter.params.provider.Arguments;
5+
import org.junit.jupiter.params.provider.MethodSource;
6+
import software.amazon.smithy.build.MockManifest;
7+
import software.amazon.smithy.model.Model;
8+
import software.amazon.smithy.model.node.Node;
9+
import software.amazon.smithy.model.node.ObjectNode;
10+
11+
import java.util.HashMap;
12+
import java.util.stream.Stream;
13+
14+
import static org.hamcrest.MatcherAssert.assertThat;
15+
import static org.hamcrest.Matchers.containsString;
16+
import static org.junit.jupiter.api.Assertions.assertTrue;
17+
18+
class PackageJsonGeneratorTest {
19+
@ParameterizedTest
20+
@MethodSource("providePackageDescriptionTestCases")
21+
void expectPackageDescriptionUpdatedByArtifactType(TypeScriptSettings.ArtifactType artifactType, String expectedDescription) {
22+
Model model = Model.assembler()
23+
.addImport(getClass().getResource("simple-service.smithy"))
24+
.assemble()
25+
.unwrap();
26+
27+
MockManifest manifest = new MockManifest();
28+
29+
ObjectNode settings = Node.objectNodeBuilder()
30+
.withMember("service", Node.from("smithy.example#Example"))
31+
.withMember("package", Node.from("example"))
32+
.withMember("packageVersion", Node.from("1.0.0"))
33+
.build();
34+
35+
final TypeScriptSettings typeScriptSettings = TypeScriptSettings.from(model, settings, artifactType);
36+
37+
PackageJsonGenerator.writePackageJson(typeScriptSettings, manifest, new HashMap<>());
38+
39+
assertTrue(manifest.getFileString(PackageJsonGenerator.PACKAGE_JSON_FILENAME).isPresent());
40+
41+
String packageJson = manifest.getFileString(PackageJsonGenerator.PACKAGE_JSON_FILENAME).get();
42+
43+
assertThat(packageJson, containsString(String.format("\"description\": \"%s\"", expectedDescription)));
44+
}
45+
46+
private static Stream<Arguments> providePackageDescriptionTestCases() {
47+
return Stream.of(
48+
Arguments.of(TypeScriptSettings.ArtifactType.SSDK, "example server"),
49+
Arguments.of(TypeScriptSettings.ArtifactType.CLIENT, "example client")
50+
);
51+
}
52+
}

smithy-typescript-codegen/src/test/java/software/amazon/smithy/typescript/codegen/TypeScriptSettingsTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
package software.amazon.smithy.typescript.codegen;
22

33
import static org.hamcrest.MatcherAssert.assertThat;
4+
import static org.hamcrest.Matchers.containsString;
45
import static org.hamcrest.Matchers.equalTo;
56
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
import static org.junit.jupiter.api.Assertions.assertTrue;
68

79
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.params.ParameterizedTest;
11+
import org.junit.jupiter.params.provider.Arguments;
12+
import org.junit.jupiter.params.provider.MethodSource;
13+
import software.amazon.smithy.build.MockManifest;
814
import software.amazon.smithy.model.Model;
915
import software.amazon.smithy.model.node.Node;
16+
import software.amazon.smithy.model.node.ObjectNode;
1017
import software.amazon.smithy.model.shapes.ShapeId;
1118

19+
import java.util.HashMap;
20+
import java.util.stream.Stream;
21+
1222
public class TypeScriptSettingsTest {
1323

1424
@Test
@@ -54,6 +64,33 @@ public void canBeConfiguredToNpm() {
5464
assertEquals(TypeScriptSettings.PackageManager.NPM, settings.getPackageManager());
5565
}
5666

67+
68+
@ParameterizedTest
69+
@MethodSource("providePackageDescriptionTestCases")
70+
void expectPackageDescriptionUpdatedByArtifactType(TypeScriptSettings.ArtifactType artifactType, String expectedDescription) {
71+
Model model = Model.assembler()
72+
.addImport(getClass().getResource("simple-service.smithy"))
73+
.assemble()
74+
.unwrap();
75+
76+
ObjectNode settings = Node.objectNodeBuilder()
77+
.withMember("service", Node.from("smithy.example#Example"))
78+
.withMember("package", Node.from("example"))
79+
.withMember("packageVersion", Node.from("1.0.0"))
80+
.build();
81+
82+
final TypeScriptSettings typeScriptSettings = TypeScriptSettings.from(model, settings, artifactType);
83+
84+
assertThat(typeScriptSettings.getPackageDescription(), containsString(expectedDescription));
85+
}
86+
87+
private static Stream<Arguments> providePackageDescriptionTestCases() {
88+
return Stream.of(
89+
Arguments.of(TypeScriptSettings.ArtifactType.SSDK, "example server"),
90+
Arguments.of(TypeScriptSettings.ArtifactType.CLIENT, "example client")
91+
);
92+
}
93+
5794
@Test
5895
public void resolvesSupportProtocols() {
5996
// TODO

0 commit comments

Comments
 (0)