Author: fdesbois Date: 2011-04-16 18:52:30 +0200 (Sat, 16 Apr 2011) New Revision: 2262 Url: http://nuiton.org/repositories/revision/topia/2262 Log: Add test with naturalId (unique constraint) Modified: trunk/topia-tutorial/src/main/xmi/library.properties trunk/topia-tutorial/src/test/java/org/nuiton/topia/tutorial/library/MainTest.java Modified: trunk/topia-tutorial/src/main/xmi/library.properties =================================================================== --- trunk/topia-tutorial/src/main/xmi/library.properties 2011-04-16 16:41:18 UTC (rev 2261) +++ trunk/topia-tutorial/src/main/xmi/library.properties 2011-04-16 16:52:30 UTC (rev 2262) @@ -12,4 +12,9 @@ model.tagvalue.notGenerateToString=true # Prefix for all generated constants (used for property names in entities) -model.tagvalue.constantPrefix=PROPERTY_ \ No newline at end of file +model.tagvalue.constantPrefix=PROPERTY_ + +# Consider isbn as Book naturalId : this will create a Unique database constraint +# By default a naturalId can't be updated (immutable) +# To permit mutation you need to define tagvalue.naturalIdMutable=true +org.nuiton.topia.tutorial.library.model.Book.attribute.isbn.tagvalue.naturalId=true \ No newline at end of file Modified: trunk/topia-tutorial/src/test/java/org/nuiton/topia/tutorial/library/MainTest.java =================================================================== --- trunk/topia-tutorial/src/test/java/org/nuiton/topia/tutorial/library/MainTest.java 2011-04-16 16:41:18 UTC (rev 2261) +++ trunk/topia-tutorial/src/test/java/org/nuiton/topia/tutorial/library/MainTest.java 2011-04-16 16:52:30 UTC (rev 2262) @@ -6,6 +6,7 @@ import org.junit.Test; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaContextFactory; +import org.nuiton.topia.TopiaException; import org.nuiton.topia.tutorial.library.model.Book; import org.nuiton.topia.tutorial.library.model.BookDAO; import org.nuiton.topia.tutorial.library.model.BookImpl; @@ -78,4 +79,38 @@ Assert.assertEquals(bookLoaded, book); } + @Test + public void testCreateBookUniqueConstraint() throws Exception { + + // ---- PREPARE DATA ---- // + + Book book = new BookImpl(); + book.setName("Topia for dummies"); + book.setIsbn("T12"); + + BookDAO dao = LibraryDAOHelper.getBookDAO(transaction); + dao.create(book); + transaction.commitTransaction(); + + // ---- EXECUTE ---- // + + Book bookError = new BookImpl(); + bookError.setIsbn("T12"); + + try { + dao.create(bookError); + transaction.commitTransaction(); + Assert.fail("TopiaException is expected"); + } catch (TopiaException ex) { + + // Rollback the transaction + transaction.rollbackTransaction(); + } + + // ---- CHECK DATA ---- // + + // Only one book exists + Assert.assertEquals(1, dao.count()); + } + }