Author: simoneg
Date: Wed May 18 23:32:45 2011
New Revision: 1124465

URL: http://svn.apache.org/viewvc?rev=1124465&view=rev
Log:
Relevat tests

Added:
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
   (with props)
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
   (with props)
Modified:
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java
 Wed May 18 23:32:45 2011
@@ -1,5 +1,7 @@
 package org.apache.magma.database.mongo;
 
+import org.apache.magma.database.mongo.test.domain.Address;
+import org.apache.magma.database.mongo.test.domain.Car;
 import org.apache.magma.database.mongo.test.domain.City;
 import org.apache.magma.database.mongo.test.domain.Person;
 import org.apache.magma.database.mongo.test.utils.MongoTestCursor;
@@ -15,6 +17,8 @@ public class BSONPieces {
        public static String simplePersonId = "2296e47076120002";
        public static String complexPersonId = "2296e47076120012";
        public static String cityId = "2296e47076130001";
+       public static String carId = "2296e47076130003";
+       public static String addressId = "2296e47076130005";
        
        public static DBObject simplePerson = (DBObject) JSON.parse(
                        "{" + 
@@ -68,4 +72,33 @@ public class BSONPieces {
                assertThat(c.getNotes().get(0), equalTo("Beautiful monuments, 
horrible taffic jams"));
        }
        
+       public static DBObject car = (DBObject) JSON.parse(
+                       "{" + 
+                       "       \"_id\" : \"" + carId + "\"," + 
+                       "   \"_jcl\" : \"Car\"," +
+                       "   \"version\": 1," +
+                       "       \"name\" : \"Buggy\"," + 
+                       "       \"owner\" : \"" + simplePersonId + "\"" + 
+                       "}" 
+               );
+       public static void assertCarLoaded(Car c) {
+               assertThat(c, notNullValue());
+               assertThat(c.getId(), equalTo(Long.parseLong(carId, 16)));
+               assertThat(c.getName(), equalTo("Buggy"));
+       }
+       
+       public static DBObject address = (DBObject) JSON.parse(
+                       "{" + 
+                       "       \"_id\" : \"" + addressId + "\"," + 
+                       "   \"_jcl\" : \"Address\"," +
+                       "   \"version\": 1," +
+                       "       \"address\" : \"Via Tiburtina\"," + 
+                       "}" 
+               );
+       public static void assertAddressLoaded(Address a) {
+               assertThat(a, notNullValue());
+               assertThat(a.getId(), equalTo(Long.parseLong(addressId, 16)));
+               assertThat(a.getAddress(), equalTo("Via Tiburtina"));
+       }
+       
 }

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java
 Wed May 18 23:32:45 2011
@@ -53,6 +53,14 @@ public class JpaParsingTest {
                assertThat(friendsp.getJpaCascadeType()[0], 
equalTo(CascadeType.PERSIST));
                assertThat(friendsp.isSubEntity(), equalTo(false));
                assertThat(friendsp.isMongoPersisted(), equalTo(true));
+
+               PropertyInfo carp = bd.getProperty("car");
+               assertThat(carp, notNullValue());
+               assertThat(carp.getJpaCascadeType(), notNullValue());
+               assertThat(carp.getJpaCascadeType()[0], 
equalTo(CascadeType.PERSIST));
+               assertThat(carp.isSubEntity(), equalTo(false));
+               assertThat(carp.isMongoPersisted(), equalTo(true));
+               assertThat(carp.isJpaDeleteOrphans(), equalTo(true));
                
                List<PropertyInfo> basic = bd.getJpaBasicFields();
                assertTrue(basic.contains(namep));

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
 Wed May 18 23:32:45 2011
@@ -3,9 +3,11 @@ package org.apache.magma.database.mongo;
 import static org.hamcrest.CoreMatchers.*;
 import static org.junit.Assert.*;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.magma.database.mongo.test.domain.Car;
 import org.apache.magma.database.mongo.test.domain.ImportantPerson;
 import org.apache.magma.database.mongo.test.domain.Person;
 import org.apache.magma.database.mongo.test.domain.Person.PersonType;
@@ -58,6 +60,9 @@ public class ReadingTest extends MongoDb
                Set<Person> friends = p.getFriends();
                
                mdb.checkAll();
+               assertThat(p.isLoaded("friends"), equalTo(true));
+               assertThat(p.getLoaded("friends"), notNullValue());
+               assertThat(p.getLoaded("friends").size(), equalTo(1));
                assertThat(friends, notNullValue());
                assertThat(friends.size(), equalTo(1));
                Person friend = friends.iterator().next();
@@ -65,6 +70,7 @@ public class ReadingTest extends MongoDb
                assertThat(friend.isDirty(), equalTo(false));
                assertThat(friend.isFromDb(), equalTo(true));
                assertThat(friend.isOnDb(), equalTo(true));
+               assertThat(p.getLoaded("friends").iterator().next(), 
sameInstance((MongoEntity)friend));
        }
        
        @Test
@@ -165,12 +171,51 @@ public class ReadingTest extends MongoDb
                
        }
        
+       @Test
+       public void lazyOne() throws Exception {
+               DBObject cloneDbo = cloneDbo(BSONPieces.simplePerson);
+               cloneDbo.put("car", BSONPieces.carId);
+               
+               mdb.getCollection("test", "person")
+                       .expectFindOne(dbObject("{'_id':'" + 
BSONPieces.simplePersonId + "'}"), cloneDbo);
+               
+               Person p = db.load(Person.class, BSONPieces.simplePersonId);
+               
+               mdb.checkAll();
+               BSONPieces.assertSimplePersonLoaded(p);
+
+               mdb.getCollection("test", "car")
+                       .expectFindOne(dbObject("{'_id':'" + BSONPieces.carId + 
"'}"), BSONPieces.car);
+               
+               Car car = p.getCar();
+               
+               mdb.checkAll();
+               BSONPieces.assertCarLoaded(car);
+               
+               Collection<MongoEntity> loaded = p.getLoaded("car");
+               assertThat(loaded, notNullValue());
+               assertThat(loaded.size(), equalTo(1));
+               assertThat(loaded.iterator().next(), 
sameInstance((MongoEntity)car));
+               
+               Person p2 = car.getOwner();
+               mdb.checkAll();
+               assertThat(p2,notNullValue());
+               assertThat(p2,sameInstance(p));
+               
+               Car c1 = new Car();
+               c1.setName("BMW");
+               
+               p.setCar(c1);
+               
+               loaded = p.getLoaded("car");
+               assertThat(loaded, notNullValue());
+               assertThat(loaded.size(), equalTo(1));
+               assertThat(loaded.iterator().next(), 
sameInstance((MongoEntity)car));
+       }
        
        // TODO test map loading
        
        // TODO test lazy map loading
        
-       // TODO test reading of lazy one-to-one
-       
        
 }

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java
 Wed May 18 23:32:45 2011
@@ -4,12 +4,18 @@ import static org.hamcrest.CoreMatchers.
 import static org.junit.Assert.*;
 import static org.apache.magma.database.mongo.test.utils.DBObjectMatcher.*;
 
+import java.util.List;
+
 import org.apache.magma.database.mongo.test.domain.Address;
 import org.apache.magma.database.mongo.test.domain.Car;
+import org.apache.magma.database.mongo.test.domain.F1Team;
 import org.apache.magma.database.mongo.test.domain.Person;
 import org.apache.magma.database.mongo.test.domain.Person.PersonType;
 import org.junit.Test;
 
+import com.mongodb.BasicDBList;
+import com.mongodb.DBObject;
+
 
 public class TransactionPartWritingTest extends MongoDbTestBase {
 
@@ -37,8 +43,6 @@ public class TransactionPartWritingTest 
                
        }
        
-       // TODO test and implement exception cases
-       
        @Test
        public void writeUpdate() throws Exception {
                
@@ -102,7 +106,7 @@ public class TransactionPartWritingTest 
                db.commit();
                
                mdb.checkAll();
-
+               
        }
        
        @Test
@@ -181,4 +185,112 @@ public class TransactionPartWritingTest 
                
        }
        
+       @Test
+       public void updateOld() throws Exception {
+               DBObject pclone = cloneDbo(BSONPieces.simplePerson);
+               BasicDBList addresses = new BasicDBList();
+               addresses.add(BSONPieces.addressId);
+               pclone.put("addresses", addresses);
+               
+               mdb.getCollection("test", "person")
+                       .expectFindOne(dbObject("{'_id':'" + 
BSONPieces.simplePersonId + "'}"), pclone);
+               mdb.getCollection("test", "address")
+                       .expectFind(dbObject("{'_id':{'$in':['" + 
BSONPieces.addressId + "']}}"), cloneDbo(BSONPieces.address));
+               
+               Person p = db.load(Person.class, BSONPieces.simplePersonId);
+               List<Address> paddr = p.getAddresses();
+               
+               mdb.checkAll();
+               BSONPieces.assertSimplePersonLoaded(p);
+               assertThat(paddr, notNullValue());
+               assertThat(paddr.size(), equalTo(1));
+               Address olda = paddr.iterator().next();
+               BSONPieces.assertAddressLoaded(olda);
+
+               olda.setAddress("Altra via");
+               p.getAddresses().clear();
+               
+               db.save(p);
+
+               mdb.checkAll();
+               
+               mdb.getCollection("test", "person")
+                       .expectUpdate(
+                               dbObject("{'_id':'" + BSONPieces.simplePersonId 
+ "', 'version' : 1}"),
+                               dbObject("{'$push' : {'__transactions': 
{'__transactionId' : '" + tr.getId() + "', 'addresses' : [] } }, '$set' : 
{'version': 2}}")
+                       );
+               mdb.getCollection("test", "address")
+                       .expectUpdate(
+                               dbObject("{'_id':'" + BSONPieces.addressId + 
"', 'version' : 1}"),
+                               dbObject("{'$push' : {'__transactions': 
{'__transactionId' : '" + tr.getId() + "', 'address' : 'Altra via' } }, '$set' 
: {'version': 2}}")
+                       );
+               
+               mdb.getCollection("test", "transactions")
+                       .clearExpectations()
+                       .expectInsert(dbObject("{'_id' : '" + tr.getId() + "', 
'state':'R', 'entities' : {'person' : ['" + Long.toHexString(p.getId()) + "'], 
'address' : ['" + BSONPieces.addressId + "']} }"))
+                       .expectUpdate(dbObject("{'_id' : '" + tr.getId() + 
"'}"),dbObject("{'$set': {'state':'D'}}"));
+       
+               
+               db.commit();
+               mdb.checkAll();
+       }
+       
+       @Test
+       public void selfGeneratedPersisting() throws Exception {
+               F1Team f1t = new F1Team();
+               
+               Car c1 = f1t.hiddenGetCar();
+               Car c2 = f1t.getCar();
+               
+               assertThat(c2, notNullValue());
+               assertThat(c2, sameInstance(c1));
+               
+               db.save(f1t);
+
+               mdb.checkAll();
+               
+               mdb.getCollection("test", "f1team")
+                       .expectInsert(dbObject("{'version': 1, 
'__transactions': [{'__transactionId' : '" + tr.getId() + "', 'car':'" + 
Long.toHexString(c1.getId()) + "','_jcl':'F1Team'}]}"));
+               mdb.getCollection("test", "car")
+                       .expectInsert(dbObject("{'version': 1, 
'__transactions': [{'__transactionId' : '" + tr.getId() + "', 
'_jcl':'Car'}]}"));
+       
+               mdb.getCollection("test", "transactions")
+                       .clearExpectations()
+                       .expectInsert(dbObject("{'_id' : '" + tr.getId() + "', 
'state':'R', 'entities' : {'f1team' : ['" + Long.toHexString(f1t.getId()) + 
"'], 'car': ['" + Long.toHexString(c2.getId()) + "']} }"))
+                       .expectUpdate(dbObject("{'_id' : '" + tr.getId() + 
"'}"),dbObject("{'$set': {'state':'D'}}"));
+                       
+               
+               db.commit();
+               mdb.checkAll();
+       }
+
+       @Test
+       public void constructorGeneratedPersisting() throws Exception {
+               Car c1 = new Car();
+               F1Team f1t = new F1Team(c1);
+               
+               db.save(f1t);
+
+               mdb.checkAll();
+               
+               mdb.getCollection("test", "f1team")
+                       .expectInsert(dbObject("{'version': 1, 
'__transactions': [{'__transactionId' : '" + tr.getId() + "', 'car':'" + 
Long.toHexString(c1.getId()) + "','_jcl':'F1Team'}]}"));
+               mdb.getCollection("test", "car")
+                       .expectInsert(dbObject("{'version': 1, 
'__transactions': [{'__transactionId' : '" + tr.getId() + "', 
'_jcl':'Car'}]}"));
+       
+               mdb.getCollection("test", "transactions")
+                       .clearExpectations()
+                       .expectInsert(dbObject("{'_id' : '" + tr.getId() + "', 
'state':'R', 'entities' : {'f1team' : ['" + Long.toHexString(f1t.getId()) + 
"'], 'car': ['" + Long.toHexString(c1.getId()) + "']} }"))
+                       .expectUpdate(dbObject("{'_id' : '" + tr.getId() + 
"'}"),dbObject("{'$set': {'state':'D'}}"));
+                       
+               
+               db.commit();
+               mdb.checkAll();
+       }
+       
+       // TODO test delete orphans
+       
+       // TODO test and implement exception cases
+       
+       
 }

Added: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java?rev=1124465&view=auto
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
 (added)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
 Wed May 18 23:32:45 2011
@@ -0,0 +1,33 @@
+package org.apache.magma.database.mongo.test.domain;
+
+import javax.persistence.Entity;
+import javax.persistence.OneToOne;
+
+import org.apache.magma.beans.MagmaBean;
+
+@Entity
+@MagmaBean
+public class F1Team {
+
+       private Car car = new Car();
+       
+       public F1Team() {}
+       
+       public F1Team(Car c) {
+               this.car = c;
+       }
+
+       @OneToOne
+       public Car getCar() {
+               return car;
+       }
+       public void setCar(Car car) {
+               this.car = car;
+       }
+       
+       public Car hiddenGetCar() {
+               return car;
+       }
+       
+       
+}

Propchange: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
 Wed May 18 23:32:45 2011
@@ -14,6 +14,7 @@ import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
 import org.apache.magma.database.LogicallyNamed;
+import org.apache.openjpa.persistence.ElementDependent;
 
 @Entity
 public class Person implements LogicallyNamed {
@@ -91,6 +92,7 @@ public class Person implements Logically
        }
        
        @OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE})
+       @ElementDependent
        public Car getCar() {
                return car;
        }

Added: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java?rev=1124465&view=auto
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
 (added)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
 Wed May 18 23:32:45 2011
@@ -0,0 +1,12 @@
+package org.apache.openjpa.persistence;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface ElementDependent {
+
+}

Propchange: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to