22
33import io .mongock .runner .springboot .MongockScanPackage ;
44import io .mongock .runner .springboot .RunnerSpringbootBuilder ;
5+ import org .junit .jupiter .api .Assertions ;
56import org .junit .jupiter .api .Test ;
67import org .springframework .context .ApplicationContext ;
78import org .springframework .context .annotation .Configuration ;
1011
1112import static org .mockito .Mockito .*;
1213
13- public class MongockContextTest {
14+ public class MongockScanPackageTest {
1415
1516 @ Test
16- void shouldAddPackagesToBuilder_whenMongockScanPackageAnnotationIsPresent () {
17+ void shouldAddPackagesToBuilder_whenMongockScanPackageAnnotationIsPresentAndProvidePackages () {
1718 // Arrange
1819 MongockContext context = new MongockContext ();
1920 ApplicationContext springContext = mock (ApplicationContext .class );
@@ -27,31 +28,41 @@ void shouldAddPackagesToBuilder_whenMongockScanPackageAnnotationIsPresent() {
2728 class TestConfiguration {}
2829
2930 Map <String , Object > beans = new HashMap <>();
30- beans .put ("bean" , new TestConfiguration ());
31+ String expectedBeanName = "testConfigurationBean" ;
32+ beans .put (expectedBeanName , new TestConfiguration ());
3133 when (springContext .getBeansWithAnnotation (MongockScanPackage .class )).thenReturn (beans );
34+ List <String > packagesToScan = Arrays .asList (
35+ "com.example.packageone.migrations" ,
36+ "com.example.packagetwo.migrations"
37+ );
3238
3339 // Act
3440 context .addPackagesFromAnnotationMongockScanPackage (builder , springContext );
3541
3642 // Assert
37- verify (builder ).addMigrationScanPackages (Arrays .asList (
38- "com.example.packageone.migrations" ,
39- "com.example.packagetwo.migrations"
40- ));
43+ verify (builder , times (1 )).addMigrationScanPackages (packagesToScan );
44+ verify (springContext , times (1 )).getBeansWithAnnotation (MongockScanPackage .class );
45+ Assertions .assertEquals (1 , springContext .getBeansWithAnnotation (MongockScanPackage .class ).size ());
46+
47+ Object bean = springContext .getBeansWithAnnotation (MongockScanPackage .class ).get (expectedBeanName );
48+ MongockScanPackage annotation = bean .getClass ().getAnnotation (MongockScanPackage .class );
49+ Assertions .assertEquals (packagesToScan .size (), annotation .value ().length );
4150 }
4251
4352 @ Test
44- void shouldDoNothing_WhenMongockScanPackageIsNotPresent () {
53+ void shouldDoNothing_WhenAnnotationMongockScanPackageIsNotPresent () {
4554 // Arrange
4655 MongockContext context = new MongockContext ();
4756 ApplicationContext springContext = mock (ApplicationContext .class );
4857 RunnerSpringbootBuilder builder = mock (RunnerSpringbootBuilder .class );
58+ when (springContext .getBeansWithAnnotation (MongockScanPackage .class )).thenReturn (Collections .emptyMap ());
4959
5060 // Act
5161 context .addPackagesFromAnnotationMongockScanPackage (builder , springContext );
5262
5363 // Assert
5464 verify (builder , never ()).addMigrationScanPackages (any ());
65+ verify (springContext , times (1 )).getBeansWithAnnotation (MongockScanPackage .class );
5566 }
5667
5768}
0 commit comments