Skip to content

Commit

Permalink
chore(custom-jhlite): add unit test for custom npm version source reader
Browse files Browse the repository at this point in the history
This is necessary for having full code coverage
  • Loading branch information
murdos committed Sep 18, 2024
1 parent 6139e48 commit dad5d50
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@ public class CustomJHLiteModuleFactory {

private static final String DOMAIN = "domain";
private static final String SHARED = "shared";
private static final String INFRASTRUCTURE = "infrastructure";
private static final String SECONDARY = "secondary";

private static final JHipsterSource SOURCE = from("server/springboot/custom-jhlite");
private static final JHipsterSource MAIN_SOURCE = SOURCE.append("main");
private static final JHipsterSource SLUG_SOURCE = MAIN_SOURCE.append(SHARED).append("slug");
private static final JHipsterSource NPM_SOURCE = MAIN_SOURCE.append(SHARED).append("npm");
private static final JHipsterSource NPM_MAIN_SOURCE = MAIN_SOURCE.append(SHARED).append("npm");
private static final JHipsterSource TEST_SOURCE = SOURCE.append("test");
private static final JHipsterSource NPM_TEST_SOURCE = TEST_SOURCE.append(SHARED).append("npm");
private static final JHipsterSource CUCUMBER_SOURCE = from("server/springboot/cucumber");

private static final String SRC_MAIN_JAVA = "src/main/java";
Expand Down Expand Up @@ -99,7 +102,8 @@ private Consumer<JHipsterModuleBuilder> cucumberBuilder(JHipsterModuleProperties
private Consumer<JHipsterModuleBuilder> npmVersionSourceBuilder(JHipsterModuleProperties properties) {
String packagePath = properties.packagePath();
String baseName = properties.projectBaseName().capitalized();
JHipsterDestination npmDestination = toSrcMainJava().append(packagePath).append(SHARED).append("npm");
JHipsterDestination npmMainDestination = toSrcMainJava().append(packagePath).append(SHARED).append("npm");
JHipsterDestination npmTestDestination = toSrcTestJava().append(packagePath).append(SHARED).append("npm");

//@formatter:off
return builder -> builder
Expand All @@ -108,14 +112,18 @@ private Consumer<JHipsterModuleBuilder> npmVersionSourceBuilder(JHipsterModulePr
.put("baseNameKebabCased", properties.projectBaseName().kebabCase())
.and()
.files()
.add(NPM_SOURCE.template(PACKAGE_INFO_JAVA), npmDestination.append(PACKAGE_INFO_JAVA))
.add(NPM_MAIN_SOURCE.template(PACKAGE_INFO_JAVA), npmMainDestination.append(PACKAGE_INFO_JAVA))
.add(
NPM_SOURCE.append(DOMAIN).template("NpmVersionSource.java"),
npmDestination.append(DOMAIN).append(baseName + "NpmVersionSource.java")
NPM_MAIN_SOURCE.append(DOMAIN).template("NpmVersionSource.java"),
npmMainDestination.append(DOMAIN).append(baseName + "NpmVersionSource.java")
)
.add(
NPM_SOURCE.append("infrastructure").append("secondary").template("FileSystemNpmVersionReader.java"),
npmDestination.append("infrastructure").append("secondary").append(baseName + "FileSystemNpmVersionReader.java")
NPM_MAIN_SOURCE.append(INFRASTRUCTURE).append(SECONDARY).template("FileSystemNpmVersionReader.java"),
npmMainDestination.append(INFRASTRUCTURE).append(SECONDARY).append(baseName + "FileSystemNpmVersionReader.java")
)
.add(
NPM_TEST_SOURCE.append(INFRASTRUCTURE).append(SECONDARY).template("FileSystemNpmVersionReaderTest.java"),
npmTestDestination.append(INFRASTRUCTURE).append(SECONDARY).append(baseName + "FileSystemNpmVersionReaderTest.java")
)
.add(
SOURCE.file("package.json"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package {{ packageName }}.shared.npm.infrastructure.secondary;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import {{ packageName }}.UnitTest;
import tech.jhipster.lite.module.domain.ProjectFiles;
import tech.jhipster.lite.module.domain.npm.NpmPackageName;
import tech.jhipster.lite.module.domain.npm.NpmPackageVersion;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
import static {{ packageName }}.shared.npm.domain.{{ baseName }}NpmVersionSource.{{ baseNameUpperCased }};

@UnitTest
@ExtendWith(MockitoExtension.class)
class {{ baseName }}FileSystemNpmVersionReaderTest {
@Mock
private ProjectFiles projectFiles;
@InjectMocks
private {{ baseName }}FileSystemNpmVersionReader reader;

@Test
void shouldGetVersionFromCustomSource() {
mockProjectFiles();
NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), {{ baseNameUpperCased }}.build());

assertThat(version).isEqualTo(new NpmPackageVersion("1.2.3"));
}

private void mockProjectFiles() {
when(projectFiles.readString(anyString())).thenReturn(
"""
{
"dependencies": {
"vue": "1.2.3"
},
}
"""
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ void shouldBuildModule() {
.and()
.hasPrefixedFiles("src/main/java/tech/jhipster/jhlitest/shared/slug", "package-info.java", "domain/MyAppFeatureSlug.java", "domain/MyAppModuleSlug.java")
.hasPrefixedFiles("src/main/java/tech/jhipster/jhlitest/shared/npm", "package-info.java", "domain/MyAppNpmVersionSource.java", "infrastructure/secondary/MyAppFileSystemNpmVersionReader.java")
.hasPrefixedFiles("src/test/java/tech/jhipster/jhlitest/shared/npm/infrastructure/secondary", "MyAppFileSystemNpmVersionReaderTest.java")
.hasFile("src/main/java/tech/jhipster/jhlitest/shared/npm/domain/MyAppNpmVersionSource.java")
.containing(
"""
Expand Down

0 comments on commit dad5d50

Please sign in to comment.