public void TestCRUD() { u1 = new User( "Ford", "Prefect", Roles.Employee ); // insert u1.Persist(); Assert.IsTrue( u1.Id != 0, "No id generated for the User just inserted!" ); // select u2 = new User( u1.Id ); // verify select/insert Assert.IsTrue( u2.Id != 0, "The object could not be retrieved from the database!" ); Assert.AreEqual( u1.Id, u2.Id, "The object could not be retrieved from the database!" ); Assert.AreEqual( "Ford", u2.FirstName, "The object was not properly retrieved on construction!" ); // update u2.FirstName = "Arthur"; u2.LastName = "Dent"; u2.PrimaryRole = Roles.Customer; u2.Persist(); // verify update u1 = new User( u2.Id ); Assert.AreEqual( u2.FirstName, u1.FirstName, "FirstName not updated!" ); Assert.AreEqual( u2.LastName, u1.LastName, "LastName not updated!" ); Assert.AreEqual( u2.PrimaryRole, u1.PrimaryRole, "PrimaryRole not updated!" ); // delete u2.Remove(); // verify delete by selecting the now non-existing row try { u2 = new User( u1.Id ); Assert.IsNull( u2, "Object not removed" ); } catch( GentleException fe ) { Assert.AreEqual( Error.UnexpectedRowCount, fe.Error, "Unexpected error occurred!" ); } }
public void Test_GentleListWithCaching() { // enable all caching GentleSettings.CacheObjects = true; GentleSettings.CacheStatements = true; GentleSettings.SkipQueryExecution = true; CacheManager.Clear(); // create a user with a known id u1 = new User( "John", "Doe", Roles.Customer ); u1.Persist(); // create n:m type list GentleList list = new GentleList( typeof(Role), u1, typeof(UserRole) ); Assert.AreEqual( 0, list.Count, "Test requires that tables are initially empty." ); // verify add Role r1 = new Role( 0, "Role 1" ); r1.Persist(); list.Add( r1 ); Assert.AreEqual( 1, list.Count, "No element in relation table." ); Role r2 = new Role( 0, "Role 2" ); r2.Persist(); list.Add( r2 ); Assert.AreEqual( 2, list.Count, "Wrong number of elements in relation table." ); // verify read upon create list = new GentleList( typeof(Role), u1, typeof(UserRole) ); Assert.AreEqual( 2, list.Count, "Elements in relation table were not automatically retrieved." ); // verify remove list.Remove( r1 ); Assert.AreEqual( 1, list.Count, "Element was not removed from list." ); // verify add after remove Role r3 = new Role( 0, "Role 3" ); r3.Persist(); list.Add( r3 ); Assert.AreEqual( 2, list.Count, "Wrong number of elements in relation table." ); // remove remaining elements list.Remove( r2 ); list.Remove( r3 ); Assert.AreEqual( 0, list.Count, "Relation element was not removed from list." ); list = new GentleList( typeof(UserRole), u1 ); Assert.AreEqual( 0, list.Count, "Relation element was not removed from database." ); u1.Remove(); }
public void Test_AutoRead() { // create a user with a known id u1 = new User( "John", "Doe", Roles.Customer ); u1.Persist(); Role r1 = fixedRoles[ 1 ]; Role r2 = fixedRoles[ 2 ]; // add a role (will insert the userrole relation) Assert.AreEqual( 0, u1.Roles.Count, "Roles list be empty when starting out." ); u1.Roles.Add( r1 ); Assert.AreEqual( 1, u1.Roles.Count, "Roles list must contain an entry after calling Add." ); u1.Roles.Add( r2 ); Assert.AreEqual( 2, u1.Roles.Count, "Roles list must contain an entry after calling Add." ); // read user 1 again u2 = new User( u1.Id ); Assert.AreEqual( u1.Roles.Count, u2.Roles.Count, "Roles not auto-populated during list creation." ); // verify UserRole table IList relations = Broker.RetrieveList( typeof(UserRole) ); Assert.AreEqual( 2, relations.Count, "Relations not added." ); // add the same role again //u2.Roles.Add( r1 ); //u1 = new User( 1 ); //Assert.AreEqual( 1, u1.Roles.Count, "Roles was added twice - no duplicate filtering." ); // remove role u1.Roles.Remove( r1 ); u1 = new User( u1.Id ); Assert.AreEqual( 1, u1.Roles.Count, "Role not removed." ); // remove role u1.Roles.Remove( r2 ); u1 = new User( u1.Id ); Assert.AreEqual( 0, u1.Roles.Count, "Role not removed." ); // verify UserRole table relations = Broker.RetrieveList( typeof(UserRole) ); Assert.AreEqual( 0, relations.Count, "Relations not removed." ); u1.Remove(); }
public void Test_NtoM_WithExtraRelationColumn() { // create a user with a known id u1 = new User( "John", "Doe", Roles.Customer ); u1.Persist(); Role r1 = fixedRoles[ 2 ]; Assert.IsNotNull( u1, "Test case invalid unless a record with UserId=" + u1.Id + " exists" ); Member m = Member.Retrieve( 1 ); // add role u1.MemberRoles.Add( r1, m ); // verify UserRole table IList relations = Broker.RetrieveList( typeof(UserRole) ); Assert.AreEqual( 1, relations.Count, "No relation created." ); UserRole ur = relations[ 0 ] as UserRole; Assert.AreEqual( m.Id, ur.MemberId, "Relation did not save additional type reference." ); // remove role u1.MemberRoles.Remove( r1 ); // verify UserRole table relations = Broker.RetrieveList( typeof(UserRole) ); Assert.AreEqual( 0, relations.Count, "Relation not removed." ); u1.Remove(); }
public void Test_NtoM() { // create a user with a known id u1 = new User( "John", "Doe", Roles.Customer ); u1.Persist(); Role r1 = fixedRoles[ 2 ]; Assert.IsNotNull( u1, "Test case invalid unless a record with UserId=" + u1.Id + " exists" ); // add role u1.Roles.Add( r1 ); // verify UserRole table IList relations = Broker.RetrieveList( typeof(UserRole) ); Assert.AreEqual( 1, relations.Count, "No relation created." ); // remove role u1.Roles.Remove( r1 ); // verify UserRole table relations = Broker.RetrieveList( typeof(UserRole) ); Assert.AreEqual( 0, relations.Count, "Relation not removed." ); u1.Remove(); }
public void Test_GentleRelation() { Role r1 = fixedRoles[ 1 ]; // create a user with a known id u1 = new User( "John", "Doe", Roles.Customer ); u1.Persist(); // create 1:n type list GentleRelation list = new GentleRelation( typeof(UserRole), u1, typeof(Role) ); Assert.AreEqual( 0, list.Count, "Relation table not empty." ); // verify add list.Add( r1 ); list.Add( fixedRoles[ 2 ] ); Assert.AreEqual( 2, list.Count, "Wrong number of elements in relation table." ); // verify read upon create list = new GentleRelation( typeof(UserRole), u1, typeof(Role) ); Assert.AreEqual( 2, list.Count, "Elements in relation table not automatically retrieved." ); // verify remove list.Remove( r1 ); Assert.AreEqual( 1, list.Count, "Relation element was not removed from list." ); list.Remove( fixedRoles[ 2 ] ); Assert.AreEqual( 0, list.Count, "Relation element was not removed from list." ); list = new GentleRelation( typeof(UserRole), u1, typeof(Role) ); Assert.AreEqual( 0, list.Count, "Relation element was not removed from database." ); u1.Remove(); }