/** * */ package org.minnal.instrument.entity; import static org.mockito.Matchers.any; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import org.activejpa.entity.Model; import org.minnal.utils.scanner.Scanner.Listener; import org.testng.annotations.Test; /** * @author ganeshs * */ public class AggregateRootScannerTest { @Test public void shouldScanAggregateRootsFromASinglePackage() { AggregateRootScanner scanner = new AggregateRootScanner("org.minnal.instrument.entity"); Listener<Class<?>> listener = mock(Listener.class); scanner.scan(listener); verify(listener, atLeast(2)).handle(any(Class.class)); verify(listener).handle(Model1.class); verify(listener).handle(Model2.class); } @Test public void shouldScanAggregateRootsFromMultiplePackage() { AggregateRootScanner scanner = new AggregateRootScanner("org.minnal.instrument.resource", "org.minnal.instrument.entity"); Listener<Class<?>> listener = mock(Listener.class); scanner.scan(listener); verify(listener, atLeast(2)).handle(any(Class.class)); verify(listener).handle(Model1.class); verify(listener).handle(Model2.class); } @Test public void shouldScanAggregateRootsRecursivelyInAPackage() { AggregateRootScanner scanner = new AggregateRootScanner("org.minnal.instrument"); Listener<Class<?>> listener = mock(Listener.class); scanner.scan(listener); verify(listener, atLeast(2)).handle(any(Class.class)); verify(listener).handle(Model1.class); verify(listener).handle(Model2.class); } } @AggregateRoot @Entity class Model1 extends Model { @Id public Serializable getId() { return null; } } @AggregateRoot @Entity class Model2 extends Model { @Id public Serializable getId() { return null; } }