}
@Test
public void crudTypedA() {
// create
final CapabilityA created = capabilities().create(CapabilityA.class)
.withNotes("Some notes")
.withPropertyA1("foo")
.save();
assertThat(created.id(), is(notNullValue()));
assertThat(created.notes(), is("Some notes"));
assertThat(created.property("a1"), is("foo"));
assertThat(created.propertyA1(), is("foo"));
// read
final CapabilityA read = capabilities().get(CapabilityA.class, created.id());
assertThat(read.id(), is(created.id()));
assertThat(read.notes(), is(created.notes()));
assertThat(read.type(), is(created.type()));
assertThat(read.properties(), is(created.properties()));
assertThat(read.propertyA1(), is(created.propertyA1()));
// update
read.withNotes("Some other notes").save();
final CapabilityA updated = capabilities().get(CapabilityA.class, created.id());
assertThat(updated.notes(), is("Some other notes"));
assertThat(created.refresh().notes(), is("Some other notes"));
// delete
read.remove();