use of org.motechproject.mds.web.domain.EntityRecord in project motech by motech.
the class InstanceServiceTest method shouldThrowExceptionWhileSavingInstanceInNonEditableEntity.
@Test(expected = EntityInstancesNonEditableException.class)
public void shouldThrowExceptionWhileSavingInstanceInNonEditableEntity() {
EntityDto nonEditableEntity = new EntityDto();
nonEditableEntity.setNonEditable(true);
nonEditableEntity.setId(ANOTHER_ENTITY_ID);
EntityRecord entityRecord = new EntityRecord(null, ANOTHER_ENTITY_ID, new ArrayList<FieldRecord>());
when(entityService.getEntity(ANOTHER_ENTITY_ID)).thenReturn(nonEditableEntity);
instanceService.saveInstance(entityRecord);
}
use of org.motechproject.mds.web.domain.EntityRecord in project motech by motech.
the class InstanceServiceTest method shouldThrowExceptionWhileSavingInstanceWithReadOnlyPermission.
@Test(expected = SecurityException.class)
public void shouldThrowExceptionWhileSavingInstanceWithReadOnlyPermission() {
EntityDto entityDto = new EntityDto();
entityDto.setReadOnlySecurityMode(SecurityMode.EVERYONE);
entityDto.setSecurityMode(SecurityMode.NO_ACCESS);
EntityRecord entityRecord = new EntityRecord(null, ANOTHER_ENTITY_ID, new ArrayList<FieldRecord>());
when(entityService.getEntity(ANOTHER_ENTITY_ID)).thenReturn(entityDto);
instanceService.saveInstance(entityRecord);
}
use of org.motechproject.mds.web.domain.EntityRecord in project motech by motech.
the class InstanceServiceTest method shouldAcceptUserWithNoPermissionWhileReadingInstanceWithNoSecurityMode.
@Test
public void shouldAcceptUserWithNoPermissionWhileReadingInstanceWithNoSecurityMode() {
EntityDto entityDto = new EntityDto();
entityDto.setReadOnlySecurityMode(null);
entityDto.setSecurityMode(null);
entityDto.setClassName(TestSample.class.getName());
EntityRecord entityRecord = new EntityRecord(ANOTHER_ENTITY_ID, null, new ArrayList<>());
when(entityService.getEntity(ANOTHER_ENTITY_ID)).thenReturn(entityDto);
mockDataService();
instanceService.getEntityRecords(entityRecord.getId());
verify(entityService).getEntityFieldsForUI(ANOTHER_ENTITY_ID);
}
use of org.motechproject.mds.web.domain.EntityRecord in project motech by motech.
the class InstanceServiceTest method shouldCreateInstanceOfSubclassedEntityWithRelation.
@Test
public void shouldCreateInstanceOfSubclassedEntityWithRelation() {
mockEntity(SubclassSample.class, ENTITY_ID, entity);
mockDataService(SubclassSample.class, motechDataService);
when(motechDataService.retrieve("id", INSTANCE_ID)).thenReturn(new SubclassSample());
when(entityService.getEntityFieldsForUI(ENTITY_ID)).thenReturn(asList(FieldTestHelper.fieldDto(1L, "superclassInteger", Integer.class.getName(), "Superclass Integer", 7), FieldTestHelper.fieldDto(2L, "subclassString", String.class.getName(), "Subclass String", "test"), FieldTestHelper.fieldDto(3L, "superclassRelation", TypeDto.ONE_TO_ONE_RELATIONSHIP.getTypeClass(), "Superclass Relationship", null)));
long relationEntityId = ANOTHER_ENTITY_ID;
long relationInstanceId = INSTANCE_ID + 1;
EntityDto relationEntity = mock(EntityDto.class);
MotechDataService relationDataService = mock(MotechDataService.class);
mockEntity(TestSample.class, relationEntityId, relationEntity);
mockDataService(TestSample.class, relationDataService);
TestSample relatedInstance = new TestSample("test sample", 42);
when(relationDataService.retrieve("id", relationInstanceId)).thenReturn(relatedInstance);
when(relationDataService.findById(relationInstanceId)).thenReturn(relatedInstance);
RelationshipsUpdate relationshipsUpdate = new RelationshipsUpdate();
relationshipsUpdate.getAddedIds().add(relationInstanceId);
EntityRecord createRecord = new EntityRecord(null, ENTITY_ID, asList(FieldTestHelper.fieldRecord("superclassInteger", Integer.class.getName(), "", 77), FieldTestHelper.fieldRecord("subclassString", String.class.getName(), "", "test test"), FieldTestHelper.fieldRecord(TypeDto.ONE_TO_ONE_RELATIONSHIP, "superclassRelation", "", relationshipsUpdate)));
ArgumentCaptor<SubclassSample> createCaptor = ArgumentCaptor.forClass(SubclassSample.class);
instanceService.saveInstance(createRecord);
verify(motechDataService).create(createCaptor.capture());
SubclassSample instance = createCaptor.getValue();
assertEquals(77, (int) instance.getSuperclassInteger());
assertEquals("test test", instance.getSubclassString());
assertNotNull(instance.getSuperclassRelation());
assertEquals(relatedInstance.getStrField(), instance.getSuperclassRelation().getStrField());
assertEquals(relatedInstance.getIntField(), instance.getSuperclassRelation().getIntField());
}
use of org.motechproject.mds.web.domain.EntityRecord in project motech by motech.
the class InstanceServiceTest method testUpdateCreate.
private void testUpdateCreate(boolean edit) throws ClassNotFoundException {
final DateTime dtValue = DateUtil.now();
mockSampleFields();
mockDataService();
mockEntity();
when(motechDataService.retrieve("id", INSTANCE_ID)).thenReturn(new TestSample());
List<FieldRecord> fieldRecords = asList(FieldTestHelper.fieldRecord("strField", String.class.getName(), "", "this is a test"), FieldTestHelper.fieldRecord("intField", Integer.class.getName(), "", 16), FieldTestHelper.fieldRecord("timeField", Time.class.getName(), "", "10:17"), FieldTestHelper.fieldRecord("dtField", DateTime.class.getName(), "", dtValue));
Long id = (edit) ? INSTANCE_ID : null;
EntityRecord record = new EntityRecord(id, ENTITY_ID, fieldRecords);
MDSClassLoader.getInstance().loadClass(TestSample.class.getName());
instanceService.saveInstance(record);
ArgumentCaptor<TestSample> captor = ArgumentCaptor.forClass(TestSample.class);
if (edit) {
verify(motechDataService).update(captor.capture());
} else {
verify(motechDataService).create(captor.capture());
}
TestSample sample = captor.getValue();
assertEquals("this is a test", sample.getStrField());
assertEquals(Integer.valueOf(16), sample.getIntField());
assertEquals(new Time(10, 17), sample.getTimeField());
assertEquals(dtValue, sample.getDtField());
}
Aggregations