You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2013/12/19 10:57:33 UTC
git commit: [OLINGO-86] Test for 'AnnotationInMemoryDs' methods.
Updated Branches:
refs/heads/master fe0393d54 -> 96e9d9e01
[OLINGO-86] Test for 'AnnotationInMemoryDs' methods.
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/commit/96e9d9e0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/tree/96e9d9e0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/diff/96e9d9e0
Branch: refs/heads/master
Commit: 96e9d9e01ddc4a318d5c3a0618a270878b077a19
Parents: fe0393d
Author: Michael Bolz <mi...@apache.org>
Authored: Thu Dec 19 10:51:06 2013 +0100
Committer: Michael Bolz <mi...@apache.org>
Committed: Thu Dec 19 10:54:41 2013 +0100
----------------------------------------------------------------------
.../data/AnnotationsInMemoryDsTest.java | 220 +++++++++++++++++--
1 file changed, 202 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/96e9d9e0/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
index 8b0e5d8..3e2fbd4 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/core/annotation/data/AnnotationsInMemoryDsTest.java
@@ -34,12 +34,14 @@ import org.apache.olingo.odata2.api.edm.EdmEntityType;
import org.apache.olingo.odata2.api.edm.FullQualifiedName;
import org.apache.olingo.odata2.api.edm.provider.EntitySet;
import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.exception.ODataNotFoundException;
import org.apache.olingo.odata2.core.annotation.edm.AnnotationEdmProvider;
import org.apache.olingo.odata2.core.annotation.model.Building;
import org.apache.olingo.odata2.core.annotation.model.ModelSharedConstants;
import org.apache.olingo.odata2.core.annotation.model.Photo;
import org.apache.olingo.odata2.core.annotation.model.Room;
import org.apache.olingo.odata2.core.annotation.util.AnnotationHelper;
+import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
@@ -171,19 +173,20 @@ public class AnnotationsInMemoryDsTest {
byte[] image = "binary".getBytes(Charset.defaultCharset());
photo.setImage(image);
photo.setImageType("image/png");
- Photo createdPhoto = photoDataStore.create(photo);
-
-// datasource.createData(entitySet, data);
+ photoDataStore.create(photo);
Map<String, Object> keys = new HashMap<String, Object>();
keys.put("Name", "SomePic");
keys.put("ImageFormat", "PNG");
- photo = (Photo) datasource.readData(entitySet, keys);
- BinaryData readPhoto = datasource.readBinaryData(entitySet, photo);
+ Photo toReadPhoto = (Photo) datasource.readData(entitySet, keys);
- Assert.assertEquals("binary", new String(readPhoto.getData(), Charset.defaultCharset()));
- Assert.assertArrayEquals(image, readPhoto.getData());
- Assert.assertEquals("image/png", readPhoto.getMimeType());
+ // execute
+ BinaryData readBinaryData = datasource.readBinaryData(entitySet, toReadPhoto);
+
+ // validate
+ Assert.assertEquals("binary", new String(readBinaryData.getData(), Charset.defaultCharset()));
+ Assert.assertArrayEquals(image, readBinaryData.getData());
+ Assert.assertEquals("image/png", readBinaryData.getMimeType());
}
@Test
@@ -197,21 +200,142 @@ public class AnnotationsInMemoryDsTest {
byte[] image = "binary".getBytes(Charset.defaultCharset());
photo.setImage(image);
photo.setImageType("image/png");
- Photo createdPhoto = photoDataStore.create(photo);
+ photoDataStore.create(photo);
- photo = new Photo();
- photo.setName("SomePic");
- photo.setType("PNG");
- photo.setImage(null);
- photo.setImageType(null);
+ Photo toReadPhoto = new Photo();
+ toReadPhoto.setName("SomePic");
+ toReadPhoto.setType("PNG");
+ toReadPhoto.setImage(null);
+ toReadPhoto.setImageType(null);
- BinaryData readPhoto = datasource.readBinaryData(entitySet, photo);
+ BinaryData readBinaryData = datasource.readBinaryData(entitySet, toReadPhoto);
- Assert.assertEquals("binary", new String(readPhoto.getData(), Charset.defaultCharset()));
- Assert.assertArrayEquals(image, readPhoto.getData());
- Assert.assertEquals("image/png", readPhoto.getMimeType());
+ Assert.assertEquals("binary", new String(readBinaryData.getData(), Charset.defaultCharset()));
+ Assert.assertArrayEquals(image, readBinaryData.getData());
+ Assert.assertEquals("image/png", readBinaryData.getMimeType());
+ }
+
+
+ @Test
+ public void writeBinaryData() throws Exception {
+ EdmEntitySet entitySet = createMockedEdmEntitySet("Photos");
+
+ DataStore<Photo> photoDataStore = datasource.getDataStore(Photo.class);
+
+ Photo toWritePhoto = new Photo();
+ toWritePhoto.setName("SomePic");
+ toWritePhoto.setType("PNG");
+ photoDataStore.create(toWritePhoto);
+ byte[] image = "binary".getBytes(Charset.defaultCharset());
+ String mimeType = "image/png";
+ BinaryData writeBinaryData = new BinaryData(image, mimeType);
+ // execute
+ datasource.writeBinaryData(entitySet, toWritePhoto, writeBinaryData);
+
+ // validate
+ Photo photoKey = new Photo();
+ photoKey.setName("SomePic");
+ photoKey.setType("PNG");
+ Photo storedPhoto = photoDataStore.read(photoKey);
+ Assert.assertEquals("binary", new String(storedPhoto.getImage(), Charset.defaultCharset()));
+ Assert.assertArrayEquals(image, storedPhoto.getImage());
+ Assert.assertEquals("image/png", storedPhoto.getImageType());
+ }
+
+ @Test(expected=ODataNotFoundException.class)
+ public void writeBinaryDataNotFound() throws Exception {
+ EdmEntitySet entitySet = createMockedEdmEntitySet("Photos");
+
+ Photo toWritePhoto = new Photo();
+ toWritePhoto.setName("SomePic");
+ toWritePhoto.setType("PNG");
+ byte[] image = "binary".getBytes(Charset.defaultCharset());
+ String mimeType = "image/png";
+ BinaryData writeBinaryData = new BinaryData(image, mimeType);
+ // execute
+ datasource.writeBinaryData(entitySet, toWritePhoto, writeBinaryData);
+ }
+
+
+ @Test
+ public void newDataObject() throws Exception {
+ EdmEntitySet roomsEntitySet = createMockedEdmEntitySet("Rooms");
+ Room room = (Room) datasource.newDataObject(roomsEntitySet);
+
+ Assert.assertNotNull(room);
+ }
+
+ @Test
+ public void readEntity() throws Exception {
+ EdmEntitySet buildingsEntitySet = createMockedEdmEntitySet("Buildings");
+ EdmEntitySet roomsEntitySet = createMockedEdmEntitySet("Rooms");
+
+ Building building = new Building();
+ building.setName("Common Building");
+
+ final int roomsCount = 3;
+ List<Room> rooms = new ArrayList<Room>();
+ for (int i = 0; i < roomsCount; i++) {
+ Room room = new Room(i, "Room " + i);
+ room.setBuilding(building);
+ datasource.createData(roomsEntitySet, room);
+ rooms.add(room);
+ }
+
+ building.getRooms().addAll(rooms);
+ datasource.createData(buildingsEntitySet, building);
+
+ Map<String, Object> keys = new HashMap<String, Object>();
+ keys.put("Id", "1");
+
+ // execute
+ Object relatedData = datasource.readData(buildingsEntitySet, keys);
+
+ // validate
+ Building readBuilding = (Building) relatedData;
+ Assert.assertEquals("Common Building", readBuilding.getName());
+ Assert.assertEquals("1", readBuilding.getId());
+
+ Collection<Room> relatedRooms = readBuilding.getRooms();
+ Assert.assertEquals(roomsCount, relatedRooms.size());
+ for (Room room : relatedRooms) {
+ Assert.assertNotNull(room.getId());
+ Assert.assertTrue(room.getName().matches("Room \\d*"));
+ Assert.assertEquals("Common Building", room.getBuilding().getName());
+ }
+ }
+
+ @Test
+ public void readEntities() throws Exception {
+ EdmEntitySet roomsEntitySet = createMockedEdmEntitySet("Rooms");
+
+ Building building = new Building();
+ building.setName("Common Building");
+
+ final int roomsCount = 11;
+ List<Room> rooms = new ArrayList<Room>();
+ for (int i = 0; i < roomsCount; i++) {
+ Room room = new Room(i, "Room " + i);
+ room.setBuilding(building);
+ datasource.createData(roomsEntitySet, room);
+ rooms.add(room);
+ }
+
+ // execute
+ Object relatedData = datasource.readData(roomsEntitySet);
+
+ // validate
+ @SuppressWarnings("unchecked")
+ Collection<Room> relatedRooms = (Collection<Room>) relatedData;
+ Assert.assertEquals(roomsCount, relatedRooms.size());
+ for (Room room : relatedRooms) {
+ Assert.assertNotNull(room.getId());
+ Assert.assertTrue(room.getName().matches("Room \\d*"));
+ Assert.assertEquals("Common Building", room.getBuilding().getName());
+ }
}
+
@Test
@SuppressWarnings("unchecked")
public void readRelatedEntities() throws Exception {
@@ -421,6 +545,66 @@ public class AnnotationsInMemoryDsTest {
Assert.assertEquals("image/jpg", readUpdated.getImageType());
Assert.assertEquals("https://localhost/image.jpg", readUpdated.getImageUri());
}
+
+
+ @Test
+ public void deleteSimpleEntity() throws Exception {
+ EdmEntitySet edmEntitySet = createMockedEdmEntitySet("Buildings");
+ DataStore<Building> datastore = datasource.getDataStore(Building.class);
+
+ Building building = new Building();
+ building.setName("Common Building");
+ datastore.create(building);
+
+ Map<String, Object> keys = new HashMap<String, Object>();
+ keys.put("Id", "1");
+
+ Building read = (Building) datasource.readData(edmEntitySet, keys);
+ Assert.assertEquals("Common Building", read.getName());
+ Assert.assertEquals("1", read.getId());
+
+ //
+ datasource.deleteData(edmEntitySet, keys);
+
+ // validate
+ try {
+ Building readAfterDelete = (Building) datasource.readData(edmEntitySet, keys);
+ Assert.fail("Expected " + ODataNotFoundException.class + "was not thrown for '" + readAfterDelete + "'.");
+ } catch (ODataNotFoundException e) { }
+ }
+
+ @Test(expected=ODataRuntimeException.class)
+ public void unknownEntitySetForEntity() throws Exception {
+ String entitySetName = "Unknown";
+ FullQualifiedName entityType = new FullQualifiedName(DEFAULT_CONTAINER, entitySetName);
+
+ EdmEntitySet edmEntitySet = Mockito.mock(EdmEntitySet.class);
+ Mockito.when(edmEntitySet.getName()).thenReturn(entitySetName);
+ EdmEntityType edmEntityType = Mockito.mock(EdmEntityType.class);
+ Mockito.when(edmEntitySet.getEntityType()).thenReturn(edmEntityType);
+ Mockito.when(edmEntityType.getName()).thenReturn(entityType.getName());
+
+ Map<String, Object> keys = new HashMap<String, Object>();
+ keys.put("Id", "1");
+ //
+ datasource.readData(edmEntitySet, keys);
+ }
+
+ @Test(expected=ODataRuntimeException.class)
+ public void unknownEntitySetForEntities() throws Exception {
+ String entitySetName = "Unknown";
+ FullQualifiedName entityType = new FullQualifiedName(DEFAULT_CONTAINER, entitySetName);
+
+ EdmEntitySet edmEntitySet = Mockito.mock(EdmEntitySet.class);
+ Mockito.when(edmEntitySet.getName()).thenReturn(entitySetName);
+ EdmEntityType edmEntityType = Mockito.mock(EdmEntityType.class);
+ Mockito.when(edmEntitySet.getEntityType()).thenReturn(edmEntityType);
+ Mockito.when(edmEntityType.getName()).thenReturn(entityType.getName());
+
+ //
+ datasource.readData(edmEntitySet);
+ }
+
private EdmEntitySet createMockedEdmEntitySet(final String entitySetName) throws ODataException {
return createMockedEdmEntitySet(edmProvider, entitySetName);