Search in sources :

Example 41 with Client

use of gov.ca.cwds.data.legacy.cms.entity.Client in project api-core by ca-cwds.

the class ClientResultReadAuthorizerTest method clientDifferentCountySensitiveTest.

@Test
public void clientDifferentCountySensitiveTest() {
    when(clientCountyDeterminationServiceMock.getClientCountiesById(anyString())).thenReturn(Arrays.asList(new Short[] { 1034, 1012 }));
    final Client client = initClient(Sensitivity.SENSITIVE);
    checkAllCases(client, "1073", "Colusa", true, true, true, true, true);
}
Also used : Client(gov.ca.cwds.data.legacy.cms.entity.Client) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 42 with Client

use of gov.ca.cwds.data.legacy.cms.entity.Client in project api-core by ca-cwds.

the class ClientBaseReadAuthorizer method checkId.

@Override
protected boolean checkId(final String clientId) {
    Sensitivity sensitivity = sensitivityDeterminationService.getClientSensitivityById(clientId);
    if (sensitivity == null) {
        return true;
    }
    final ClientCondition clientCondition = getClientCondition(clientId, sensitivity);
    List<Object> authorizationFacts = new ArrayList<>();
    authorizationFacts.add(clientCondition);
    Client client = new Client();
    client.setIdentifier(clientId);
    client.setSensitivity(sensitivity);
    return authorizeInstanceOperation(client, authorizationFacts);
}
Also used : Sensitivity(gov.ca.cwds.data.legacy.cms.entity.enums.Sensitivity) ArrayList(java.util.ArrayList) ClientConditionUtils.toClientCondition(gov.ca.cwds.authorizer.util.ClientConditionUtils.toClientCondition) Client(gov.ca.cwds.data.legacy.cms.entity.Client)

Example 43 with Client

use of gov.ca.cwds.data.legacy.cms.entity.Client in project api-core by ca-cwds.

the class OptimisticLockingTest method testClientLastUpdatedTimeUpdatesdAutomatically.

@Test
public void testClientLastUpdatedTimeUpdatesdAutomatically() throws Exception {
    cleanAllAndInsert("/dbunit/OptimisticLocking.xml");
    final ChildClientHolder childClientHolder = new ChildClientHolder();
    executeInTransaction(sessionFactory, (sessionFactory) -> {
        Client client = dao.find(ID);
        assertNotNull(client);
        assertTrue(client instanceof ChildClient);
        ChildClient childClient = (ChildClient) client;
        childClientHolder.setChildClient(childClient);
        Timestamp lastUpdateTime = childClient.getLastUpdateTime();
        assertNotNull(lastUpdateTime);
        assertEquals(new Short((short) 0), childClient.getAdoptedAge());
        // Change child client specific field and assure that Client timestamp changes
        childClient.setAdoptedAge((short) 10);
        dao.update(client);
        Session session = sessionFactory.getCurrentSession();
        session.flush();
        Timestamp newLastUpdateTime = childClient.getLastUpdateTime();
        assertNotNull(newLastUpdateTime);
        assertFalse(lastUpdateTime.equals(newLastUpdateTime));
        assertTrue((newLastUpdateTime.toLocalDateTime()).isAfter(lastUpdateTime.toLocalDateTime()));
        // Check if Client timestamp changes when otherEthnicities collection changes
        Set<ClientOtherEthnicity> otherEthnicities = childClient.getOtherEthnicities();
        assertEquals(1, otherEthnicities.size());
        ClientOtherEthnicity otherEthnicity = otherEthnicities.iterator().next();
        assertEquals(5922, otherEthnicity.getEthnicityCode());
        // Should increase Client timestamp but does not work
        session.lock(childClient, LockMode.OPTIMISTIC_FORCE_INCREMENT);
        ClientOtherEthnicity otherEthnicity2 = new ClientOtherEthnicity();
        otherEthnicity2.setEthnicityCode((short) 5923);
        otherEthnicity2.setId("BaoNM5i00J");
        otherEthnicity2.setLastUpdateTime(LocalDateTime.now());
        otherEthnicity2.setLastUpdateId("04Z");
        childClient.addOtherEthnicity(otherEthnicity2);
        dao.update(client);
    });
    executeInTransaction(sessionFactory, (sessionFactory) -> {
        ChildClient oldChildClient = childClientHolder.getChildClient();
        Timestamp oldLastUpdateTime = oldChildClient.getLastUpdateTime();
        Client client = dao.find(ID);
        assertNotNull(client);
        assertTrue(client instanceof ChildClient);
        ChildClient childClient = (ChildClient) client;
        Timestamp lastUpdateTime = childClient.getLastUpdateTime();
        assertNotNull(lastUpdateTime);
        // changes in otherEthnicities collection DOES NOT change Client timestamp
        assertTrue(oldLastUpdateTime.equals(lastUpdateTime));
    });
}
Also used : ClientOtherEthnicity(gov.ca.cwds.data.legacy.cms.entity.ClientOtherEthnicity) ChildClient(gov.ca.cwds.data.legacy.cms.entity.ChildClient) Client(gov.ca.cwds.data.legacy.cms.entity.Client) Timestamp(java.sql.Timestamp) ChildClient(gov.ca.cwds.data.legacy.cms.entity.ChildClient) Session(org.hibernate.Session) Test(org.junit.Test) BaseCwsCmsInMemoryPersistenceTest(gov.ca.cwds.data.legacy.cms.persistence.BaseCwsCmsInMemoryPersistenceTest)

Example 44 with Client

use of gov.ca.cwds.data.legacy.cms.entity.Client in project api-core by ca-cwds.

the class OptimisticLockingTest method testUpdateSuccess.

@Test
public void testUpdateSuccess() throws Exception {
    cleanAllAndInsert("/dbunit/OptimisticLocking.xml");
    final ChildClientHolder childClientHolder = new ChildClientHolder();
    // read entity from DB
    executeInTransaction(sessionFactory, (sessionFactory) -> {
        Client client = dao.find(ID);
        assertNotNull(client);
        assertTrue(client instanceof ChildClient);
        ChildClient childClient = (ChildClient) client;
        assertEquals(AdoptionStatus.NOT_FREE, childClient.getAdoptionStatus());
        Timestamp lastUpdateTime = childClient.getLastUpdateTime();
        assertNotNull(lastUpdateTime);
        childClientHolder.setChildClient(childClient);
    });
    // UI edit
    childClientHolder.getChildClient().setAdoptionStatus(AdoptionStatus.NOT_APPLICABLE);
    // persist in new transaction
    executeInTransaction(sessionFactory, (sessionFactory) -> {
        dao.update(childClientHolder.getChildClient());
    });
}
Also used : ChildClient(gov.ca.cwds.data.legacy.cms.entity.ChildClient) Client(gov.ca.cwds.data.legacy.cms.entity.Client) Timestamp(java.sql.Timestamp) ChildClient(gov.ca.cwds.data.legacy.cms.entity.ChildClient) Test(org.junit.Test) BaseCwsCmsInMemoryPersistenceTest(gov.ca.cwds.data.legacy.cms.persistence.BaseCwsCmsInMemoryPersistenceTest)

Example 45 with Client

use of gov.ca.cwds.data.legacy.cms.entity.Client in project api-core by ca-cwds.

the class OptimisticLockingTest method testNoTimestampPropagationToUI.

@Test
public void testNoTimestampPropagationToUI() throws Exception {
    cleanAllAndInsert("/dbunit/OptimisticLocking.xml");
    final ChildClientHolder childClientHolder = new ChildClientHolder();
    // read entity from DB
    executeInTransaction(sessionFactory, (sessionFactory) -> {
        Client client = dao.find(ID);
        assertNotNull(client);
        assertTrue(client instanceof ChildClient);
        ChildClient childClient = (ChildClient) client;
        assertEquals(AdoptionStatus.NOT_FREE, childClient.getAdoptionStatus());
        childClientHolder.setChildClient(childClient);
    });
    // UI edit
    childClientHolder.getChildClient().setLastUpdateTime(null);
    childClientHolder.getChildClient().setAdoptionStatus(AdoptionStatus.TOTALLY_FREE);
    // recreate entity  and attempt to persist
    try {
        executeInTransaction(sessionFactory, (sessionFactory) -> {
            Session session = sessionFactory.getCurrentSession();
            ChildClient childClient = childClientHolder.getChildClient();
            // populate lastUpdateTime by current time
            childClient.setLastUpdateTime(Timestamp.valueOf(LocalDateTime.now()));
            dao.update(childClient);
        });
        fail("OptimisticLockException should be thrown");
    } catch (OptimisticLockException e) {
    }
}
Also used : OptimisticLockException(javax.persistence.OptimisticLockException) ChildClient(gov.ca.cwds.data.legacy.cms.entity.ChildClient) Client(gov.ca.cwds.data.legacy.cms.entity.Client) ChildClient(gov.ca.cwds.data.legacy.cms.entity.ChildClient) Session(org.hibernate.Session) Test(org.junit.Test) BaseCwsCmsInMemoryPersistenceTest(gov.ca.cwds.data.legacy.cms.persistence.BaseCwsCmsInMemoryPersistenceTest)

Aggregations

Client (gov.ca.cwds.data.legacy.cms.entity.Client)127 Test (org.junit.Test)105 ChildClientEntityAwareDTO (gov.ca.cwds.cms.data.access.dto.ChildClientEntityAwareDTO)21 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)14 ChildClient (gov.ca.cwds.data.legacy.cms.entity.ChildClient)13 BaseCwsCmsInMemoryPersistenceTest (gov.ca.cwds.data.legacy.cms.persistence.BaseCwsCmsInMemoryPersistenceTest)10 DasHistory (gov.ca.cwds.data.legacy.cms.entity.DasHistory)6 SafetyAlert (gov.ca.cwds.data.legacy.cms.entity.SafetyAlert)6 SchoolOriginHistory (gov.ca.cwds.data.legacy.cms.entity.SchoolOriginHistory)6 ClientOtherEthnicity (gov.ca.cwds.data.legacy.cms.entity.ClientOtherEthnicity)4 NameType (gov.ca.cwds.data.legacy.cms.entity.syscodes.NameType)4 Session (org.hibernate.Session)4 Timestamp (java.sql.Timestamp)3 DeliveredService (gov.ca.cwds.data.legacy.cms.entity.DeliveredService)2 OptimisticLockException (javax.persistence.OptimisticLockException)2 IDataSet (org.dbunit.dataset.IDataSet)2 ITable (org.dbunit.dataset.ITable)2 ClientConditionUtils.toClientCondition (gov.ca.cwds.authorizer.util.ClientConditionUtils.toClientCondition)1 FacilityChildParameterObject (gov.ca.cwds.cals.web.rest.parameter.FacilityChildParameterObject)1 ClientEntityAwareDTO (gov.ca.cwds.cms.data.access.dto.ClientEntityAwareDTO)1