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<String> routedTenant = new AtomicReference<>();
|
AtomicReference<String> serviceTenant = new AtomicReference<>();
|
AtomicReference<Boolean> 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());
|
}
|
}
|