Repository: cayenne Updated Branches: refs/heads/master b19de9836 -> aeb0a91a3
rename some integration tests Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/aeb0a91a Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/aeb0a91a Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/aeb0a91a Branch: refs/heads/master Commit: aeb0a91a3e868470b5290b02fea19f0383e34a7a Parents: b19de98 Author: Savva Kolbachev <s.kolbac...@gmail.com> Authored: Fri Jan 22 16:20:29 2016 +0300 Committer: Savva Kolbachev <s.kolbac...@gmail.com> Committed: Fri Jan 22 16:20:29 2016 +0300 ---------------------------------------------------------------------- .../CayenneDataObjectSetToManyCollectionIT.java | 79 +++++ ...ayenneDataObjectSetToManyCollectionTest.java | 79 ----- .../CayenneDataObjectSetToManyListIT.java | 301 +++++++++++++++++++ .../CayenneDataObjectSetToManyListTest.java | 301 ------------------- .../CayenneDataObjectSetToManyMapIT.java | 96 ++++++ .../CayenneDataObjectSetToManyMapTest.java | 96 ------ .../CayenneDataObjectSetToManySetIT.java | 71 +++++ .../CayenneDataObjectSetToManySetTest.java | 71 ----- 8 files changed, 547 insertions(+), 547 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java new file mode 100644 index 0000000..a2a74ab --- /dev/null +++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionIT.java @@ -0,0 +1,79 @@ +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany; +import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget; +import org.apache.cayenne.unit.di.server.CayenneProjects; +import org.apache.cayenne.unit.di.server.ServerCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collection; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +@UseServerRuntime(CayenneProjects.RELATIONSHIPS_COLLECTION_TO_MANY_PROJECT) +public class CayenneDataObjectSetToManyCollectionIT extends ServerCase { + + @Inject + private ObjectContext context; + + @Inject + private DBHelper dbHelper; + + @Before + public void setUp() throws Exception { + TableHelper tCollectionToMany = new TableHelper(dbHelper, "COLLECTION_TO_MANY"); + tCollectionToMany.setColumns("ID"); + + TableHelper tCollectionToManyTarget = new TableHelper(dbHelper, "COLLECTION_TO_MANY_TARGET"); + tCollectionToManyTarget.setColumns("ID", "COLLECTION_TO_MANY_ID"); + + // single data set for all tests + tCollectionToMany.insert(1).insert(2); + tCollectionToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2); + } + + @Test + public void testReadToMany() throws Exception { + + CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1); + + Collection<?> targets = o1.getTargets(); + + assertNotNull(targets); + assertTrue(((ValueHolder) targets).isFault()); + + assertEquals(3, targets.size()); + + assertTrue(targets.contains(Cayenne.objectForPK(o1.getObjectContext(), CollectionToManyTarget.class, 1))); + assertTrue(targets.contains(Cayenne.objectForPK(o1.getObjectContext(), CollectionToManyTarget.class, 2))); + assertTrue(targets.contains(Cayenne.objectForPK(o1.getObjectContext(), CollectionToManyTarget.class, 3))); + } + + /** + * Testing if collection type is Collection, everything should work fine without an + * runtimexception + * + * @throws Exception + */ + @Test + public void testRelationCollectionTypeCollection() throws Exception { + CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1); + assertTrue(o1.readProperty(CollectionToMany.TARGETS_PROPERTY) instanceof Collection); + boolean catchedSomething = false; + try { + o1.setToManyTarget(CollectionToMany.TARGETS_PROPERTY, new ArrayList<CollectionToMany>(0), true); + } catch (RuntimeException e) { + catchedSomething = true; + } + assertEquals(catchedSomething, false); + assertEquals(o1.getTargets().size(), 0); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionTest.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionTest.java deleted file mode 100644 index 10c4bf8..0000000 --- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyCollectionTest.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.apache.cayenne; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.Collection; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany; -import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget; -import org.apache.cayenne.unit.di.server.CayenneProjects; -import org.apache.cayenne.unit.di.server.ServerCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; -import org.junit.Before; -import org.junit.Test; - -@UseServerRuntime(CayenneProjects.RELATIONSHIPS_COLLECTION_TO_MANY_PROJECT) -public class CayenneDataObjectSetToManyCollectionTest extends ServerCase { - - @Inject - private ObjectContext context; - - @Inject - private DBHelper dbHelper; - - @Before - public void setUp() throws Exception { - TableHelper tCollectionToMany = new TableHelper(dbHelper, "COLLECTION_TO_MANY"); - tCollectionToMany.setColumns("ID"); - - TableHelper tCollectionToManyTarget = new TableHelper(dbHelper, "COLLECTION_TO_MANY_TARGET"); - tCollectionToManyTarget.setColumns("ID", "COLLECTION_TO_MANY_ID"); - - // single data set for all tests - tCollectionToMany.insert(1).insert(2); - tCollectionToManyTarget.insert(1, 1).insert(2, 1).insert(3, 1).insert(4, 2); - } - - @Test - public void testReadToMany() throws Exception { - - CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1); - - Collection<?> targets = o1.getTargets(); - - assertNotNull(targets); - assertTrue(((ValueHolder) targets).isFault()); - - assertEquals(3, targets.size()); - - assertTrue(targets.contains(Cayenne.objectForPK(o1.getObjectContext(), CollectionToManyTarget.class, 1))); - assertTrue(targets.contains(Cayenne.objectForPK(o1.getObjectContext(), CollectionToManyTarget.class, 2))); - assertTrue(targets.contains(Cayenne.objectForPK(o1.getObjectContext(), CollectionToManyTarget.class, 3))); - } - - /** - * Testing if collection type is Collection, everything should work fine without an - * runtimexception - * - * @throws Exception - */ - @Test - public void testRelationCollectionTypeCollection() throws Exception { - CollectionToMany o1 = Cayenne.objectForPK(context, CollectionToMany.class, 1); - assertTrue(o1.readProperty(CollectionToMany.TARGETS_PROPERTY) instanceof Collection); - boolean catchedSomething = false; - try { - o1.setToManyTarget(CollectionToMany.TARGETS_PROPERTY, new ArrayList<CollectionToMany>(0), true); - } catch (RuntimeException e) { - catchedSomething = true; - } - assertEquals(catchedSomething, false); - assertEquals(o1.getTargets().size(), 0); - } -} http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListIT.java new file mode 100644 index 0000000..9ca609b --- /dev/null +++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListIT.java @@ -0,0 +1,301 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ + +package org.apache.cayenne; + +import org.apache.cayenne.configuration.server.ServerRuntime; +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.query.ObjectSelect; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.testmap.Artist; +import org.apache.cayenne.testdo.testmap.Painting; +import org.apache.cayenne.testdo.testmap.ROPainting; +import org.apache.cayenne.unit.di.server.CayenneProjects; +import org.apache.cayenne.unit.di.server.ServerCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; +import org.junit.Before; +import org.junit.Test; + +import java.sql.Types; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT) +public class CayenneDataObjectSetToManyListIT extends ServerCase { + + @Inject + private ServerRuntime runtime; + + @Inject + private ObjectContext context; + + @Inject + private DBHelper dbHelper; + + protected TableHelper tArtist; + protected TableHelper tPainting; + + @Before + public void setUp() throws Exception { + tArtist = new TableHelper(dbHelper, "ARTIST"); + tArtist.setColumns("ARTIST_ID", "ARTIST_NAME"); + + tPainting = new TableHelper(dbHelper, "PAINTING"); + tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, + Types.BIGINT); + + } + + private void createArtistWithPaintingDataSet() throws Exception { + tArtist.insert(8, "artist 8"); + tPainting.insert(6, "painting 6", 8); + tPainting.insert(7, "painting 7", 8); + tPainting.insert(8, "painting 8", 8); + } + + @Test + public void testReadRO1() throws Exception { + + createArtistWithPaintingDataSet(); + + Artist a1 = Cayenne.objectForPK(context, Artist.class, 8); + + assertEquals(a1 != null, true); + + List<ROPainting> paints = ObjectSelect.query(ROPainting.class).where(ROPainting.TO_ARTIST.eq(a1)) + .select(context); + + assertEquals(3, paints.size()); + + ROPainting rop1 = paints.get(0); + assertSame(a1, rop1.getToArtist()); + } + + @Test + public void testSetEmptyList1() throws Exception { + createArtistWithPaintingDataSet(); + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), new ArrayList<ROPainting>(0), true); + List<Painting> paints = artist.getPaintingArray(); + assertEquals(0, paints.size()); + } + + @Test + public void testSetEmptyList2() throws Exception { + createArtistWithPaintingDataSet(); + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + boolean thrown = false; + try { + artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), null, true); + } catch (IllegalArgumentException e) { + thrown = true; + } + assertEquals("should throw a IllegalArgumentException", thrown, true); + } + + @Test + public void testWrongRelName() throws Exception { + createArtistWithPaintingDataSet(); + + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + boolean thrown = false; + try { + artist.setToManyTarget("doesnotexist", new ArrayList<ROPainting>(0), true); + } catch (IllegalArgumentException e) { + thrown = true; + } + assertEquals("should throw a IllegalArgumentException, because the relName does not exist", thrown, true); + + thrown = false; + try { + artist.setToManyTarget("", new ArrayList<ROPainting>(0), true); + } catch (IllegalArgumentException e) { + thrown = true; + } + assertEquals("should throw a IllegalArgumentException, because the relName is an empty string", thrown, true); + + thrown = false; + try { + artist.setToManyTarget(null, new ArrayList<ROPainting>(0), true); + } catch (IllegalArgumentException e) { + thrown = true; + } + assertEquals("should throw a IllegalArgumentException, because the relName is NULL", thrown, true); + + } + + @Test + public void testTotalDifferentPaintings() throws Exception { + createArtistWithPaintingDataSet(); + + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + + // copy the paintings list. Replacing paintings wont change the copy + List<Painting> oldPaints = new ArrayList<Painting>(artist.getPaintingArray()); + System.out.println("class:" + oldPaints.getClass()); + + Painting paintX = new Painting(); + paintX.setPaintingTitle("pantingX"); + Painting paintY = new Painting(); + paintY.setPaintingTitle("paintingY"); + Painting paintZ = new Painting(); + paintZ.setPaintingTitle("paintingZ"); + + List<? extends DataObject> returnList = artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), + Arrays.asList(paintX, paintY, paintZ), true); + + assertEquals(returnList.size(), 3); + assertEquals(returnList.containsAll(oldPaints), true); + + List<Painting> newPaints = artist.getPaintingArray(); + + assertEquals(newPaints.size(), 3); + for (Painting oldPaint : oldPaints) { + // no element of oldPaints should exist in the newPaints + assertEquals(newPaints.contains(oldPaint), false); + } + } + + @Test + public void testSamePaintings() throws Exception { + createArtistWithPaintingDataSet(); + + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + List<Painting> oldPaints = new ArrayList<Painting>(artist.getPaintingArray()); + + Painting paint6 = Cayenne.objectForPK(context, Painting.class, 6); + Painting paint7 = Cayenne.objectForPK(context, Painting.class, 7); + Painting paint8 = Cayenne.objectForPK(context, Painting.class, 8); + + List<Painting> newPaints = Arrays.asList(paint6, paint7, paint8); + List<? extends DataObject> returnList = artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), newPaints, + true); + + assertEquals(returnList.size(), 0); + + newPaints = artist.getPaintingArray(); + // testing if oldPaints and newPaints contain the same objects + assertEquals(newPaints.size(), 3); + assertEquals(oldPaints.size(), 3); + assertEquals(newPaints.containsAll(oldPaints), true); + } + + @Test + public void testOldPlusNewPaintings() throws Exception { + createArtistWithPaintingDataSet(); + + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + List<Painting> oldPaints = artist.getPaintingArray(); + + List<Painting> newPaints = new ArrayList<Painting>(6); + for (int i = 0; i < oldPaints.size(); i++) { + newPaints.add(oldPaints.get(i)); + } + + Painting paintX = new Painting(); + paintX.setPaintingTitle("pantingX"); + Painting paintY = new Painting(); + paintY.setPaintingTitle("paintingY"); + Painting paintZ = new Painting(); + paintZ.setPaintingTitle("paintingZ"); + + newPaints.add(paintX); + newPaints.add(paintY); + newPaints.add(paintZ); + + artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), newPaints, true); + + List<Painting> newPaints2 = artist.getPaintingArray(); + Painting paint6 = Cayenne.objectForPK(context, Painting.class, 6); + Painting paint7 = Cayenne.objectForPK(context, Painting.class, 7); + Painting paint8 = Cayenne.objectForPK(context, Painting.class, 8); + + assertEquals(newPaints2.size(), 6); + assertEquals(newPaints2.contains(paintX), true); + assertEquals(newPaints2.contains(paintY), true); + assertEquals(newPaints2.contains(paintZ), true); + assertEquals(newPaints2.contains(paint6), true); + assertEquals(newPaints2.contains(paint7), true); + assertEquals(newPaints2.contains(paint8), true); + } + + @Test + public void testRemoveOneOldAndAddOneNewPaintings() throws Exception { + createArtistWithPaintingDataSet(); + + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + + List<Painting> newPaints = new ArrayList<Painting>(); + + Painting paint6 = artist.getPaintingArray().get(0); + Painting paint7 = artist.getPaintingArray().get(1); + Painting paint8 = artist.getPaintingArray().get(2); + Painting paintX = new Painting(); + paintX.setPaintingTitle("pantingX"); + Painting paintY = new Painting(); + paintY.setPaintingTitle("paintingY"); + + newPaints.add(paint6); + newPaints.add(paint7); + newPaints.add(paintX); + newPaints.add(paintY); + + List<? extends DataObject> returnList = artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), newPaints, + true); + + assertEquals(returnList.size(), 1); + assertEquals(returnList.get(0) == paint8, true); + + List<Painting> newPaints2 = artist.getPaintingArray(); + + assertEquals(newPaints2.size(), 4); + assertEquals(newPaints2.contains(paintX), true); + assertEquals(newPaints2.contains(paintY), true); + assertEquals(newPaints2.contains(paint6), true); + assertEquals(newPaints2.contains(paint7), true); + } + + /** + * Testing if collection type is list, everything should work fine without an + * runtimexception + * + * @throws Exception + */ + @Test + public void testRelationCollectionTypeList() throws Exception { + createArtistWithPaintingDataSet(); + + Artist artist = Cayenne.objectForPK(context, Artist.class, 8); + assertTrue(artist.readProperty(Artist.PAINTING_ARRAY.getName()) instanceof List); + boolean catchedSomething = false; + try { + artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), new ArrayList<Painting>(0), true); + } catch (UnsupportedOperationException e) { + catchedSomething = true; + } + assertEquals(catchedSomething, false); + assertEquals(artist.getPaintingArray().size(), 0); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListTest.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListTest.java deleted file mode 100644 index 169278b..0000000 --- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyListTest.java +++ /dev/null @@ -1,301 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -import java.sql.Types; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.cayenne.configuration.server.ServerRuntime; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.query.ObjectSelect; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.testmap.Artist; -import org.apache.cayenne.testdo.testmap.Painting; -import org.apache.cayenne.testdo.testmap.ROPainting; -import org.apache.cayenne.unit.di.server.CayenneProjects; -import org.apache.cayenne.unit.di.server.ServerCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; -import org.junit.Before; -import org.junit.Test; - -@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT) -public class CayenneDataObjectSetToManyListTest extends ServerCase { - - @Inject - private ServerRuntime runtime; - - @Inject - private ObjectContext context; - - @Inject - private DBHelper dbHelper; - - protected TableHelper tArtist; - protected TableHelper tPainting; - - @Before - public void setUp() throws Exception { - tArtist = new TableHelper(dbHelper, "ARTIST"); - tArtist.setColumns("ARTIST_ID", "ARTIST_NAME"); - - tPainting = new TableHelper(dbHelper, "PAINTING"); - tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, - Types.BIGINT); - - } - - private void createArtistWithPaintingDataSet() throws Exception { - tArtist.insert(8, "artist 8"); - tPainting.insert(6, "painting 6", 8); - tPainting.insert(7, "painting 7", 8); - tPainting.insert(8, "painting 8", 8); - } - - @Test - public void testReadRO1() throws Exception { - - createArtistWithPaintingDataSet(); - - Artist a1 = Cayenne.objectForPK(context, Artist.class, 8); - - assertEquals(a1 != null, true); - - List<ROPainting> paints = ObjectSelect.query(ROPainting.class).where(ROPainting.TO_ARTIST.eq(a1)) - .select(context); - - assertEquals(3, paints.size()); - - ROPainting rop1 = paints.get(0); - assertSame(a1, rop1.getToArtist()); - } - - @Test - public void testSetEmptyList1() throws Exception { - createArtistWithPaintingDataSet(); - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), new ArrayList<ROPainting>(0), true); - List<Painting> paints = artist.getPaintingArray(); - assertEquals(0, paints.size()); - } - - @Test - public void testSetEmptyList2() throws Exception { - createArtistWithPaintingDataSet(); - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - boolean thrown = false; - try { - artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), null, true); - } catch (IllegalArgumentException e) { - thrown = true; - } - assertEquals("should throw a IllegalArgumentException", thrown, true); - } - - @Test - public void testWrongRelName() throws Exception { - createArtistWithPaintingDataSet(); - - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - boolean thrown = false; - try { - artist.setToManyTarget("doesnotexist", new ArrayList<ROPainting>(0), true); - } catch (IllegalArgumentException e) { - thrown = true; - } - assertEquals("should throw a IllegalArgumentException, because the relName does not exist", thrown, true); - - thrown = false; - try { - artist.setToManyTarget("", new ArrayList<ROPainting>(0), true); - } catch (IllegalArgumentException e) { - thrown = true; - } - assertEquals("should throw a IllegalArgumentException, because the relName is an empty string", thrown, true); - - thrown = false; - try { - artist.setToManyTarget(null, new ArrayList<ROPainting>(0), true); - } catch (IllegalArgumentException e) { - thrown = true; - } - assertEquals("should throw a IllegalArgumentException, because the relName is NULL", thrown, true); - - } - - @Test - public void testTotalDifferentPaintings() throws Exception { - createArtistWithPaintingDataSet(); - - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - - // copy the paintings list. Replacing paintings wont change the copy - List<Painting> oldPaints = new ArrayList<Painting>(artist.getPaintingArray()); - System.out.println("class:" + oldPaints.getClass()); - - Painting paintX = new Painting(); - paintX.setPaintingTitle("pantingX"); - Painting paintY = new Painting(); - paintY.setPaintingTitle("paintingY"); - Painting paintZ = new Painting(); - paintZ.setPaintingTitle("paintingZ"); - - List<? extends DataObject> returnList = artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), - Arrays.asList(paintX, paintY, paintZ), true); - - assertEquals(returnList.size(), 3); - assertEquals(returnList.containsAll(oldPaints), true); - - List<Painting> newPaints = artist.getPaintingArray(); - - assertEquals(newPaints.size(), 3); - for (Painting oldPaint : oldPaints) { - // no element of oldPaints should exist in the newPaints - assertEquals(newPaints.contains(oldPaint), false); - } - } - - @Test - public void testSamePaintings() throws Exception { - createArtistWithPaintingDataSet(); - - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - List<Painting> oldPaints = new ArrayList<Painting>(artist.getPaintingArray()); - - Painting paint6 = Cayenne.objectForPK(context, Painting.class, 6); - Painting paint7 = Cayenne.objectForPK(context, Painting.class, 7); - Painting paint8 = Cayenne.objectForPK(context, Painting.class, 8); - - List<Painting> newPaints = Arrays.asList(paint6, paint7, paint8); - List<? extends DataObject> returnList = artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), newPaints, - true); - - assertEquals(returnList.size(), 0); - - newPaints = artist.getPaintingArray(); - // testing if oldPaints and newPaints contain the same objects - assertEquals(newPaints.size(), 3); - assertEquals(oldPaints.size(), 3); - assertEquals(newPaints.containsAll(oldPaints), true); - } - - @Test - public void testOldPlusNewPaintings() throws Exception { - createArtistWithPaintingDataSet(); - - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - List<Painting> oldPaints = artist.getPaintingArray(); - - List<Painting> newPaints = new ArrayList<Painting>(6); - for (int i = 0; i < oldPaints.size(); i++) { - newPaints.add(oldPaints.get(i)); - } - - Painting paintX = new Painting(); - paintX.setPaintingTitle("pantingX"); - Painting paintY = new Painting(); - paintY.setPaintingTitle("paintingY"); - Painting paintZ = new Painting(); - paintZ.setPaintingTitle("paintingZ"); - - newPaints.add(paintX); - newPaints.add(paintY); - newPaints.add(paintZ); - - artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), newPaints, true); - - List<Painting> newPaints2 = artist.getPaintingArray(); - Painting paint6 = Cayenne.objectForPK(context, Painting.class, 6); - Painting paint7 = Cayenne.objectForPK(context, Painting.class, 7); - Painting paint8 = Cayenne.objectForPK(context, Painting.class, 8); - - assertEquals(newPaints2.size(), 6); - assertEquals(newPaints2.contains(paintX), true); - assertEquals(newPaints2.contains(paintY), true); - assertEquals(newPaints2.contains(paintZ), true); - assertEquals(newPaints2.contains(paint6), true); - assertEquals(newPaints2.contains(paint7), true); - assertEquals(newPaints2.contains(paint8), true); - } - - @Test - public void testRemoveOneOldAndAddOneNewPaintings() throws Exception { - createArtistWithPaintingDataSet(); - - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - - List<Painting> newPaints = new ArrayList<Painting>(); - - Painting paint6 = artist.getPaintingArray().get(0); - Painting paint7 = artist.getPaintingArray().get(1); - Painting paint8 = artist.getPaintingArray().get(2); - Painting paintX = new Painting(); - paintX.setPaintingTitle("pantingX"); - Painting paintY = new Painting(); - paintY.setPaintingTitle("paintingY"); - - newPaints.add(paint6); - newPaints.add(paint7); - newPaints.add(paintX); - newPaints.add(paintY); - - List<? extends DataObject> returnList = artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), newPaints, - true); - - assertEquals(returnList.size(), 1); - assertEquals(returnList.get(0) == paint8, true); - - List<Painting> newPaints2 = artist.getPaintingArray(); - - assertEquals(newPaints2.size(), 4); - assertEquals(newPaints2.contains(paintX), true); - assertEquals(newPaints2.contains(paintY), true); - assertEquals(newPaints2.contains(paint6), true); - assertEquals(newPaints2.contains(paint7), true); - } - - /** - * Testing if collection type is list, everything should work fine without an - * runtimexception - * - * @throws Exception - */ - @Test - public void testRelationCollectionTypeList() throws Exception { - createArtistWithPaintingDataSet(); - - Artist artist = Cayenne.objectForPK(context, Artist.class, 8); - assertTrue(artist.readProperty(Artist.PAINTING_ARRAY.getName()) instanceof List); - boolean catchedSomething = false; - try { - artist.setToManyTarget(Artist.PAINTING_ARRAY.getName(), new ArrayList<Painting>(0), true); - } catch (UnsupportedOperationException e) { - catchedSomething = true; - } - assertEquals(catchedSomething, false); - assertEquals(artist.getPaintingArray().size(), 0); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java new file mode 100644 index 0000000..427fd8c --- /dev/null +++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapIT.java @@ -0,0 +1,96 @@ +/***************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + ****************************************************************/ + +package org.apache.cayenne; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.map_to_many.MapToMany; +import org.apache.cayenne.unit.di.server.CayenneProjects; +import org.apache.cayenne.unit.di.server.ServerCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@UseServerRuntime(CayenneProjects.MAP_TO_MANY_PROJECT) +public class CayenneDataObjectSetToManyMapIT extends ServerCase { + + @Inject + protected ObjectContext context; + + @Inject + protected DBHelper dbHelper; + + protected TableHelper tMapToMany; + protected TableHelper tMapToManyTarget; + protected TableHelper tIdMapToMany; + protected TableHelper tIdMapToManyTarget; + + @Before + public void setUp() throws Exception { + tMapToMany = new TableHelper(dbHelper, "MAP_TO_MANY"); + tMapToMany.setColumns("ID"); + + tMapToManyTarget = new TableHelper(dbHelper, "MAP_TO_MANY_TARGET"); + tMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID", "NAME"); + + tIdMapToMany = new TableHelper(dbHelper, "ID_MAP_TO_MANY"); + tIdMapToMany.setColumns("ID"); + + tIdMapToManyTarget = new TableHelper(dbHelper, "ID_MAP_TO_MANY_TARGET"); + tIdMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID"); + } + + + protected void createTestDataSet() throws Exception { + tMapToMany.insert(1); + tMapToMany.insert(2); + tMapToManyTarget.insert(1, 1, "A"); + tMapToManyTarget.insert(2, 1, "B"); + tMapToManyTarget.insert(3, 1, "C"); + tMapToManyTarget.insert(4, 2, "A"); + } + + /** + * Testing if collection type is map, everything should work fine without an runtimexception + * @throws Exception + */ + @Test + public void testRelationCollectionTypeMap() throws Exception { + createTestDataSet(); + + MapToMany o1 = Cayenne.objectForPK(context, MapToMany.class, 1); + assertTrue (o1.readProperty(MapToMany.TARGETS_PROPERTY) instanceof Map); + boolean catchedSomething = false; + try { + o1.setToManyTarget(MapToMany.TARGETS_PROPERTY, new ArrayList<MapToMany>(0), true); + } catch(RuntimeException e) { + catchedSomething = true; + } + assertEquals(catchedSomething,false); + assertEquals(o1.getTargets().size(),0); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapTest.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapTest.java deleted file mode 100644 index 45a1d7e..0000000 --- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManyMapTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.Map; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.map_to_many.MapToMany; -import org.apache.cayenne.unit.di.server.CayenneProjects; -import org.apache.cayenne.unit.di.server.ServerCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; -import org.junit.Before; -import org.junit.Test; - -@UseServerRuntime(CayenneProjects.MAP_TO_MANY_PROJECT) -public class CayenneDataObjectSetToManyMapTest extends ServerCase { - - @Inject - protected ObjectContext context; - - @Inject - protected DBHelper dbHelper; - - protected TableHelper tMapToMany; - protected TableHelper tMapToManyTarget; - protected TableHelper tIdMapToMany; - protected TableHelper tIdMapToManyTarget; - - @Before - public void setUp() throws Exception { - tMapToMany = new TableHelper(dbHelper, "MAP_TO_MANY"); - tMapToMany.setColumns("ID"); - - tMapToManyTarget = new TableHelper(dbHelper, "MAP_TO_MANY_TARGET"); - tMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID", "NAME"); - - tIdMapToMany = new TableHelper(dbHelper, "ID_MAP_TO_MANY"); - tIdMapToMany.setColumns("ID"); - - tIdMapToManyTarget = new TableHelper(dbHelper, "ID_MAP_TO_MANY_TARGET"); - tIdMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID"); - } - - - protected void createTestDataSet() throws Exception { - tMapToMany.insert(1); - tMapToMany.insert(2); - tMapToManyTarget.insert(1, 1, "A"); - tMapToManyTarget.insert(2, 1, "B"); - tMapToManyTarget.insert(3, 1, "C"); - tMapToManyTarget.insert(4, 2, "A"); - } - - /** - * Testing if collection type is map, everything should work fine without an runtimexception - * @throws Exception - */ - @Test - public void testRelationCollectionTypeMap() throws Exception { - createTestDataSet(); - - MapToMany o1 = Cayenne.objectForPK(context, MapToMany.class, 1); - assertTrue (o1.readProperty(MapToMany.TARGETS_PROPERTY) instanceof Map); - boolean catchedSomething = false; - try { - o1.setToManyTarget(MapToMany.TARGETS_PROPERTY, new ArrayList<MapToMany>(0), true); - } catch(RuntimeException e) { - catchedSomething = true; - } - assertEquals(catchedSomething,false); - assertEquals(o1.getTargets().size(),0); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java new file mode 100644 index 0000000..42dfd33 --- /dev/null +++ b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetIT.java @@ -0,0 +1,71 @@ +package org.apache.cayenne; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Set; + +import org.apache.cayenne.di.Inject; +import org.apache.cayenne.test.jdbc.DBHelper; +import org.apache.cayenne.test.jdbc.TableHelper; +import org.apache.cayenne.testdo.map_to_many.MapToMany; +import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany; +import org.apache.cayenne.unit.di.server.CayenneProjects; +import org.apache.cayenne.unit.di.server.ServerCase; +import org.apache.cayenne.unit.di.server.UseServerRuntime; +import org.junit.Before; +import org.junit.Test; + +@UseServerRuntime(CayenneProjects.RELATIONSHIPS_SET_TO_MANY_PROJECT) +public class CayenneDataObjectSetToManySetIT extends ServerCase { + + @Inject + protected ObjectContext context; + + @Inject + protected DBHelper dbHelper; + + protected TableHelper tSetToMany; + protected TableHelper tSetToManyTarget; + + @Before + public void setUp() throws Exception { + tSetToMany = new TableHelper(dbHelper, "SET_TO_MANY"); + tSetToMany.setColumns("ID"); + + tSetToManyTarget = new TableHelper(dbHelper, "SET_TO_MANY_TARGET"); + tSetToManyTarget.setColumns("ID", "SET_TO_MANY_ID"); + } + + protected void createTestDataSet() throws Exception { + tSetToMany.insert(1); + tSetToMany.insert(2); + tSetToManyTarget.insert(1, 1); + tSetToManyTarget.insert(2, 1); + tSetToManyTarget.insert(3, 1); + tSetToManyTarget.insert(4, 2); + } + + /** + * Testing if collection type is set, everything should work fine without an + * runtimexception + * + * @throws Exception + */ + @Test + public void testRelationCollectionTypeMap() throws Exception { + createTestDataSet(); + + SetToMany o1 = Cayenne.objectForPK(context, SetToMany.class, 1); + assertTrue(o1.readProperty(SetToMany.TARGETS_PROPERTY) instanceof Set); + boolean catchedSomething = false; + try { + o1.setToManyTarget(SetToMany.TARGETS_PROPERTY, new ArrayList<MapToMany>(0), true); + } catch (RuntimeException e) { + catchedSomething = true; + } + assertEquals(catchedSomething, false); + assertEquals(o1.getTargets().size(), 0); + } +} http://git-wip-us.apache.org/repos/asf/cayenne/blob/aeb0a91a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetTest.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetTest.java b/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetTest.java deleted file mode 100644 index 944c128..0000000 --- a/cayenne-server/src/test/java/org/apache/cayenne/CayenneDataObjectSetToManySetTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.apache.cayenne; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.Set; - -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.test.jdbc.DBHelper; -import org.apache.cayenne.test.jdbc.TableHelper; -import org.apache.cayenne.testdo.map_to_many.MapToMany; -import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany; -import org.apache.cayenne.unit.di.server.CayenneProjects; -import org.apache.cayenne.unit.di.server.ServerCase; -import org.apache.cayenne.unit.di.server.UseServerRuntime; -import org.junit.Before; -import org.junit.Test; - -@UseServerRuntime(CayenneProjects.RELATIONSHIPS_SET_TO_MANY_PROJECT) -public class CayenneDataObjectSetToManySetTest extends ServerCase { - - @Inject - protected ObjectContext context; - - @Inject - protected DBHelper dbHelper; - - protected TableHelper tSetToMany; - protected TableHelper tSetToManyTarget; - - @Before - public void setUp() throws Exception { - tSetToMany = new TableHelper(dbHelper, "SET_TO_MANY"); - tSetToMany.setColumns("ID"); - - tSetToManyTarget = new TableHelper(dbHelper, "SET_TO_MANY_TARGET"); - tSetToManyTarget.setColumns("ID", "SET_TO_MANY_ID"); - } - - protected void createTestDataSet() throws Exception { - tSetToMany.insert(1); - tSetToMany.insert(2); - tSetToManyTarget.insert(1, 1); - tSetToManyTarget.insert(2, 1); - tSetToManyTarget.insert(3, 1); - tSetToManyTarget.insert(4, 2); - } - - /** - * Testing if collection type is set, everything should work fine without an - * runtimexception - * - * @throws Exception - */ - @Test - public void testRelationCollectionTypeMap() throws Exception { - createTestDataSet(); - - SetToMany o1 = Cayenne.objectForPK(context, SetToMany.class, 1); - assertTrue(o1.readProperty(SetToMany.TARGETS_PROPERTY) instanceof Set); - boolean catchedSomething = false; - try { - o1.setToManyTarget(SetToMany.TARGETS_PROPERTY, new ArrayList<MapToMany>(0), true); - } catch (RuntimeException e) { - catchedSomething = true; - } - assertEquals(catchedSomething, false); - assertEquals(o1.getTargets().size(), 0); - } -}