1818
1919import java .sql .Connection ;
2020import java .sql .SQLException ;
21- import java .util .Arrays ;
21+ import java .util .List ;
2222import java .util .Map ;
2323import java .util .UUID ;
2424
3434import org .springframework .boot .jdbc .EmbeddedDatabaseConnection ;
3535import org .springframework .boot .jdbc .init .DataSourceScriptDatabaseInitializer ;
3636import org .springframework .boot .sql .init .DatabaseInitializationSettings ;
37+ import org .springframework .boot .test .context .assertj .AssertableApplicationContext ;
3738import org .springframework .boot .test .context .runner .ApplicationContextRunner ;
39+ import org .springframework .boot .test .context .runner .ContextConsumer ;
3840import org .springframework .boot .testsupport .classpath .resources .WithResource ;
3941import org .springframework .context .ApplicationContext ;
4042import org .springframework .context .annotation .Bean ;
5052 * @author Andy Wilkinson
5153 * @author Stephane Nicoll
5254 * @author Leo Li
53- * @author Nabil Fawwaz Elqayyim
5455 */
5556@ WithResource (name = "db/changelog/db.changelog-master.yaml" , content = """
5657 databaseChangeLog:
@@ -66,14 +67,7 @@ class LiquibaseEndpointTests {
6667
6768 @ Test
6869 void liquibaseReportIsReturned () {
69- this .contextRunner .withUserConfiguration (Config .class ).run ((context ) -> {
70- Map <String , LiquibaseBeanDescriptor > liquibaseBeans = context .getBean (LiquibaseEndpoint .class )
71- .liquibaseBeans ()
72- .getContexts ()
73- .get (context .getId ())
74- .getLiquibaseBeans ();
75- assertThat (liquibaseBeans .get ("liquibase" ).getChangeSets ()).hasSize (1 );
76- });
70+ this .contextRunner .withUserConfiguration (Config .class ).run (hasEndpointWithInitializedSchema ());
7771 }
7872
7973 @ Test
@@ -91,48 +85,60 @@ void liquibaseReportIsReturnedForContextHierarchy() {
9185 }
9286
9387 @ Test
94- @ WithResource (name = "db/create-custom-schema.sql" , content = "CREATE SCHEMA CUSTOMSCHEMA ;" )
95- void invokeWithCustomSchema () {
88+ @ WithResource (name = "db/create-custom-schema.sql" , content = "CREATE SCHEMA ANOTHER_SCHEMA ;" )
89+ void invokeWithCustomDefaultSchemaFailsIfItDoesNotExist () {
9690 this .contextRunner .withUserConfiguration (Config .class , DataSourceWithSchemaConfiguration .class )
97- .withPropertyValues ("spring.liquibase.default-schema=CUSTOMSCHEMA" )
98- .run ((context ) -> {
99- Map <String , LiquibaseBeanDescriptor > liquibaseBeans = context .getBean (LiquibaseEndpoint .class )
100- .liquibaseBeans ()
101- .getContexts ()
102- .get (context .getId ())
103- .getLiquibaseBeans ();
104- assertThat (liquibaseBeans .get ("liquibase" ).getChangeSets ()).hasSize (1 );
105- });
91+ .withPropertyValues ("spring.liquibase.default-schema=CUSTOM_DEFAULT_SCHEMA" )
92+ .run ((context ) -> assertThat (context ).hasFailed ()
93+ .getFailure ()
94+ .rootCause ()
95+ .hasMessageContaining ("CUSTOM_DEFAULT_SCHEMA" ));
10696 }
10797
10898 @ Test
109- void invokeWithCustomTables () {
110- this .contextRunner .withUserConfiguration (Config .class )
111- .withPropertyValues ("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock" ,
112- "spring.liquibase.database-change-log-table=liquibase_database_changelog" )
113- .run ((context ) -> {
114- Map <String , LiquibaseBeanDescriptor > liquibaseBeans = context .getBean (LiquibaseEndpoint .class )
115- .liquibaseBeans ()
116- .getContexts ()
117- .get (context .getId ())
118- .getLiquibaseBeans ();
119- assertThat (liquibaseBeans .get ("liquibase" ).getChangeSets ()).hasSize (1 );
120- });
99+ @ WithResource (name = "db/create-custom-schema.sql" , content = "CREATE SCHEMA CUSTOM_SCHEMA;" )
100+ void invokeWithCustomDefaultSchema () {
101+ this .contextRunner .withUserConfiguration (Config .class , DataSourceWithSchemaConfiguration .class )
102+ .withPropertyValues ("spring.liquibase.default-schema=CUSTOM_SCHEMA" )
103+ .run (hasEndpointWithInitializedSchema ());
104+ }
105+
106+ @ Test
107+ @ WithResource (name = "db/create-custom-schema.sql" , content = "CREATE SCHEMA ANOTHER_SCHEMA;" )
108+ void invokeWithLiquibaseSchemaFailsIfItDoesNotExist () {
109+ this .contextRunner .withUserConfiguration (Config .class , DataSourceWithSchemaConfiguration .class )
110+ .withPropertyValues ("spring.liquibase.liquibase-schema=CUSTOM_LIQUIBASE_SCHEMA" )
111+ .run ((context ) -> assertThat (context ).hasFailed ()
112+ .getFailure ()
113+ .rootCause ()
114+ .hasMessageContaining ("CUSTOM_LIQUIBASE_SCHEMA" ));
121115 }
122116
123117 @ Test
124118 @ WithResource (name = "db/create-custom-schema.sql" , content = "CREATE SCHEMA LIQUIBASE_SCHEMA;" )
125119 void invokeWithLiquibaseSchema () {
126120 this .contextRunner .withUserConfiguration (Config .class , DataSourceWithSchemaConfiguration .class )
127- .withPropertyValues ("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA" )
128- .run ((context ) -> {
129- Map <String , LiquibaseBeanDescriptor > liquibaseBeans = context .getBean (LiquibaseEndpoint .class )
130- .liquibaseBeans ()
131- .getContexts ()
132- .get (context .getId ())
133- .getLiquibaseBeans ();
134- assertThat (liquibaseBeans .get ("liquibase" ).getChangeSets ()).hasSize (1 );
135- });
121+ .withPropertyValues ("spring.liquibase.liquibase-schema=LIQUIBASE_SCHEMA" )
122+ .run (hasEndpointWithInitializedSchema ());
123+ }
124+
125+ @ Test
126+ void invokeWithCustomTables () {
127+ this .contextRunner .withUserConfiguration (Config .class )
128+ .withPropertyValues ("spring.liquibase.database-change-log-lock-table=liquibase_database_changelog_lock" ,
129+ "spring.liquibase.database-change-log-table=liquibase_database_changelog" )
130+ .run (hasEndpointWithInitializedSchema ());
131+ }
132+
133+ private ContextConsumer <AssertableApplicationContext > hasEndpointWithInitializedSchema () {
134+ return (context ) -> {
135+ Map <String , LiquibaseBeanDescriptor > liquibaseBeans = context .getBean (LiquibaseEndpoint .class )
136+ .liquibaseBeans ()
137+ .getContexts ()
138+ .get (context .getId ())
139+ .getLiquibaseBeans ();
140+ assertThat (liquibaseBeans .get ("liquibase" ).getChangeSets ()).hasSize (1 );
141+ };
136142 }
137143
138144 @ Test
@@ -195,7 +201,7 @@ DataSource dataSource() {
195201 .setName (UUID .randomUUID ().toString ())
196202 .build ();
197203 DatabaseInitializationSettings settings = new DatabaseInitializationSettings ();
198- settings .setSchemaLocations (Arrays . asList ("classpath:/db/create-custom-schema.sql" ));
204+ settings .setSchemaLocations (List . of ("classpath:/db/create-custom-schema.sql" ));
199205 DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer (dataSource ,
200206 settings );
201207 initializer .initializeDatabase ();
0 commit comments