package jnpf.limsService.impl; import jnpf.lims.api.model.TestWorkItemRequestIdentityActorRequest; import jnpf.lims.api.model.TestWorkItemRequestIdentityBatch; import jnpf.lims.api.model.TestWorkItemRequestIdentityRequest; import org.junit.Test; import java.util.Collections; import java.util.concurrent.atomic.AtomicReference; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; public class LimsTestWorkItemRequestIdentityActorServiceImplTest { @Test public void routesTheInternalLookupToTheRequestedTenantAndAlwaysClearsIt() { TestWorkItemRequestIdentityBatch expected = new TestWorkItemRequestIdentityBatch(); AtomicReference routedTenant = new AtomicReference<>(); AtomicReference serviceTenant = new AtomicReference<>(); AtomicReference cleared = new AtomicReference<>(false); LimsTestWorkItemRequestIdentityActorServiceImpl service = new LimsTestWorkItemRequestIdentityActorServiceImpl( (tenantId, request) -> { serviceTenant.set(tenantId); return expected; }, new LimsTestWorkItemRequestIdentityActorServiceImpl.TenantRoute() { @Override public void switchTo(String tenantId) { routedTenant.set(tenantId); } @Override public void clear() { cleared.set(true); } }); TestWorkItemRequestIdentityRequest request = new TestWorkItemRequestIdentityRequest(); request.setTestWorkItemIds(Collections.singletonList("item-1")); TestWorkItemRequestIdentityActorRequest actor = new TestWorkItemRequestIdentityActorRequest(); actor.setTenantId(" tenant-a "); actor.setRequest(request); TestWorkItemRequestIdentityBatch actual = service.resolve(actor); assertSame(expected, actual); assertEquals("tenant-a", routedTenant.get()); assertEquals("tenant-a", serviceTenant.get()); assertEquals(Boolean.TRUE, cleared.get()); } }