Skip to content

Commit 4400544

Browse files
committed
Polish "Generate test app when spring cloud azure storage is selected"
See gh-1582
1 parent b9d7dbd commit 4400544

File tree

6 files changed

+59
-105
lines changed

6 files changed

+59
-105
lines changed

start-site/src/main/java/io/spring/start/site/extension/dependency/springazure/SpringAzureDockerComposeProjectGenerationConfiguration.java

+31-3
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,56 @@
1919
import io.spring.initializr.generator.buildsystem.Build;
2020
import io.spring.initializr.generator.buildsystem.Dependency;
2121
import io.spring.initializr.generator.buildsystem.DependencyScope;
22+
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
23+
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
24+
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
2225
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
2326
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2427
import io.spring.initializr.generator.spring.build.BuildCustomizer;
28+
import io.spring.initializr.generator.spring.build.gradle.DevelopmentOnlyDependencyGradleBuildCustomizer;
29+
import io.spring.initializr.generator.spring.build.maven.OptionalDependencyMavenBuildCustomizer;
30+
import io.spring.start.site.container.ComposeFileCustomizer;
31+
import io.spring.start.site.container.DockerServiceResolver;
2532

2633
import org.springframework.context.annotation.Bean;
2734

2835
/**
2936
* Configuration for generation of projects that depend on Spring Azure Docker Compose.
3037
*
3138
* @author Eddú Meléndez
39+
* @author Moritz Halbritter
3240
*/
3341
@ProjectGenerationConfiguration
3442
@ConditionalOnRequestedDependency("azure-storage")
3543
class SpringAzureDockerComposeProjectGenerationConfiguration {
3644

45+
private static final String DEPENDENCY_ID = "spring-azure-docker-compose";
46+
3747
@Bean
3848
@ConditionalOnRequestedDependency("docker-compose")
3949
BuildCustomizer<Build> springAzureDockerComposeBuildCustomizer() {
4050
return (build) -> build.dependencies()
41-
.add("spring-azure-docker-compose",
42-
Dependency.withCoordinates("com.azure.spring", "spring-cloud-azure-docker-compose")
43-
.scope(DependencyScope.TEST_COMPILE));
51+
.add(DEPENDENCY_ID, Dependency.withCoordinates("com.azure.spring", "spring-cloud-azure-docker-compose")
52+
.scope(DependencyScope.RUNTIME));
53+
}
54+
55+
@Bean
56+
@ConditionalOnBuildSystem(MavenBuildSystem.ID)
57+
OptionalDependencyMavenBuildCustomizer springAzureDockerComposeMavenBuildCustomizer() {
58+
return new OptionalDependencyMavenBuildCustomizer(DEPENDENCY_ID);
59+
}
60+
61+
@Bean
62+
@ConditionalOnBuildSystem(GradleBuildSystem.ID)
63+
DevelopmentOnlyDependencyGradleBuildCustomizer springAzureDockerComposeGradleBuildCustomizer() {
64+
return new DevelopmentOnlyDependencyGradleBuildCustomizer(DEPENDENCY_ID);
65+
}
66+
67+
@Bean
68+
@ConditionalOnRequestedDependency("docker-compose")
69+
ComposeFileCustomizer azureStorageComposeFileCustomizer(DockerServiceResolver serviceResolver) {
70+
return (composeFile) -> serviceResolver.doWith("azurite",
71+
(service) -> composeFile.services().add("azurite", service));
4472
}
4573

4674
}

start-site/src/main/java/io/spring/start/site/extension/dependency/springazure/SpringAzureStorageProjectGenerationConfiguration.java

-52
This file was deleted.

start-site/src/main/java/io/spring/start/site/extension/dependency/springazure/SpringAzureTestcontainersProjectGenerationConfiguration.java

+11
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
2323
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2424
import io.spring.initializr.generator.spring.build.BuildCustomizer;
25+
import io.spring.start.site.container.DockerServiceResolver;
26+
import io.spring.start.site.container.ServiceConnections;
27+
import io.spring.start.site.container.ServiceConnectionsCustomizer;
2528

2629
import org.springframework.context.annotation.Bean;
2730

@@ -43,4 +46,12 @@ BuildCustomizer<Build> springAzureTestcontainersBuildCustomizer() {
4346
.scope(DependencyScope.TEST_COMPILE));
4447
}
4548

49+
@Bean
50+
@ConditionalOnRequestedDependency("testcontainers")
51+
ServiceConnectionsCustomizer azureStorageServiceConnectionsCustomizer(DockerServiceResolver serviceResolver) {
52+
return (serviceConnections) -> serviceResolver.doWith("azurite",
53+
(service) -> serviceConnections.addServiceConnection(ServiceConnections.ServiceConnection
54+
.ofGenericContainer("azurite", service, "azure-storage/azurite")));
55+
}
56+
4657
}

start-site/src/main/resources/META-INF/spring.factories

-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ io.spring.start.site.extension.dependency.springai.SpringAiTestcontainersProject
3636
io.spring.start.site.extension.dependency.springai.SpringAiWeaviateProjectGenerationConfiguration,\
3737
io.spring.start.site.extension.dependency.springamqp.SpringAmqpProjectGenerationConfiguration,\
3838
io.spring.start.site.extension.dependency.springazure.SpringAzureDockerComposeProjectGenerationConfiguration,\
39-
io.spring.start.site.extension.dependency.springazure.SpringAzureStorageProjectGenerationConfiguration,\
4039
io.spring.start.site.extension.dependency.springazure.SpringAzureProjectGenerationConfiguration,\
4140
io.spring.start.site.extension.dependency.springazure.SpringAzureTestcontainersProjectGenerationConfiguration,\
4241
io.spring.start.site.extension.dependency.springboot.SpringBootProjectGenerationConfiguration,\

start-site/src/test/java/io/spring/start/site/extension/dependency/springazure/SpringAzureDockerComposeProjectGenerationConfigurationTests.java

+17-1
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616

1717
package io.spring.start.site.extension.dependency.springazure;
1818

19+
import io.spring.initializr.generator.test.project.ProjectStructure;
1920
import io.spring.initializr.web.project.ProjectRequest;
2021
import io.spring.start.site.extension.AbstractExtensionTests;
2122
import org.junit.jupiter.api.Test;
2223

24+
import org.springframework.core.io.ClassPathResource;
25+
2326
import static org.assertj.core.api.Assertions.assertThat;
2427

2528
/**
@@ -29,11 +32,24 @@
2932
*/
3033
class SpringAzureDockerComposeProjectGenerationConfigurationTests extends AbstractExtensionTests {
3134

35+
@Test
36+
void doesNothingWithoutDockerCompose() {
37+
ProjectRequest request = createProjectRequest("web", "azure-storage");
38+
ProjectStructure structure = generateProject(request);
39+
assertThat(structure.getProjectDirectory().resolve("compose.yaml")).doesNotExist();
40+
}
41+
42+
@Test
43+
void createsAzuriteService() {
44+
ProjectRequest request = createProjectRequest("docker-compose", "azure-storage");
45+
assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/azurite.yaml"));
46+
}
47+
3248
@Test
3349
void springAzureDockerComposeDependencyIsAdded() {
3450
ProjectRequest projectRequest = createProjectRequest("docker-compose", "azure-storage");
3551
assertThat(mavenPom(projectRequest)).hasDependency("com.azure.spring", "spring-cloud-azure-docker-compose",
36-
null, "test");
52+
null, "runtime");
3753
}
3854

3955
@Test

start-site/src/test/java/io/spring/start/site/extension/dependency/springazure/SpringAzureStorageProjectGenerationConfigurationTests.java

-48
This file was deleted.

0 commit comments

Comments
 (0)