@Test public void testCreate$exceptionPath() throws Exception { PersonContainerHandler containerHandler = new PersonContainerHandler(); Deencapsulation.setField(containerHandler,"id",new AtomicInteger()); PersonHandler resourceHandler=new PersonHandler(); final Name<String> containerName = name("container"); containerHandler.setHandler(resourceHandler); final DataSet data = empty(containerName); final Name<Integer> memberName = NamingScheme.getDefault().name(1); new Expectations() {{ memberSnapshot.name();result=memberName; session.saveChanges();result=new WriteSessionException("FAILURE"); }}; try { containerHandler.create(snapshot, data, session); fail("Should not create if the session fails"); } catch (ApplicationRuntimeException e) { assertThat(e.getCause(),instanceOf(WriteSessionException.class)); assertThat(e.getCause().getMessage(),equalTo("FAILURE")); try { resourceHandler.get(memberSnapshot); fail("Resource should not be available in the resource handler"); } catch (UnknownResourceException e1) { } } }
@Test public void testCreate$happyPath() throws Exception { PersonContainerHandler containerHandler = new PersonContainerHandler(); Deencapsulation.setField(containerHandler,"id",new AtomicInteger()); PersonHandler resourceHandler=new PersonHandler(); final Name<String> containerName = name("container"); containerHandler.setHandler(resourceHandler); final DataSet data = empty(containerName); final Name<Integer> memberName = NamingScheme.getDefault().name(1); new Expectations() {{ memberSnapshot.name();result=memberName; }}; containerHandler.create(snapshot, data, session); assertThat(resourceHandler.get(memberSnapshot),sameInstance(data)); }