public void Test_ParentDirtyIfHasDirtyChildren() { //---------------Set up test pack------------------- OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation(); SingleRelationship <ContactPersonTestBO> relationship = GetCompositionRelationship(organisation); ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson(); relationship.SetRelatedObject(contactPerson); contactPerson.Surname = TestUtil.GetRandomString(); contactPerson.FirstName = TestUtil.GetRandomString(); contactPerson.Save(); //---------------Assert Precondition---------------- Assert.IsFalse(contactPerson.Status.IsDirty); Assert.IsFalse(relationship.IsDirty); Assert.IsFalse(organisation.Relationships.IsDirty); Assert.IsFalse(organisation.Status.IsDirty); //---------------Execute Test ---------------------- contactPerson.FirstName = TestUtil.GetRandomString(); //---------------Test Result ----------------------- Assert.IsTrue(contactPerson.Status.IsDirty); Assert.IsTrue(relationship.IsDirty); Assert.IsTrue(organisation.Relationships.IsDirty); Assert.IsTrue(organisation.Status.IsDirty); }
public void Test_UpdateStateAsCommitted() { //---------------Set up test pack------------------- ContactPersonTestBO contactPersonTestBO = new ContactPersonTestBO(); OrganisationTestBO organisationTestBO = new OrganisationTestBO(); SingleRelationship <OrganisationTestBO> singleRelationship = contactPersonTestBO.Relationships.GetSingle <OrganisationTestBO>("Organisation"); singleRelationship.SetRelatedObject(organisationTestBO); IRelationship relationship = organisationTestBO.Relationships.GetMultiple <ContactPersonTestBO>("ContactPeople"); TransactionalSingleRelationship_Added tsr = new TransactionalSingleRelationship_Added(relationship, contactPersonTestBO); IBOProp relationshipProp = contactPersonTestBO.Props["OrganisationID"]; //---------------Assert PreConditions--------------- Assert.IsTrue(relationshipProp.IsDirty); Assert.AreNotEqual(relationshipProp.Value, relationshipProp.PersistedPropertyValue); //---------------Execute Test ---------------------- tsr.UpdateStateAsCommitted(); //---------------Test Result ----------------------- Assert.IsFalse(relationshipProp.IsDirty); Assert.AreEqual(relationshipProp.Value, relationshipProp.PersistedPropertyValue); }
public void Test_IsDeletable_WhenSingle_WhenDeleteAction_EQ_PreventDelete_WhenHasRelated_ShouldBeFalse() { //---------------Set up test pack------------------- BORegistry.DataAccessor = new DataAccessorInMemory(); ClassDef.ClassDefs.Clear(); IClassDef classDef = MyBO.LoadClassDefWithRelationship(); MyRelatedBo.LoadClassDef(); MyBO bo = (MyBO)classDef.CreateNewBusinessObject(); bo.Save(); SingleRelationship <MyRelatedBo> relationship = (SingleRelationship <MyRelatedBo>)bo.Relationships["MyRelationship"]; relationship.SetRelatedObject(new MyRelatedBo()); //---------------Assert Precondition---------------- Assert.IsFalse(bo.Status.IsDeleted); Assert.IsNotNull(relationship.GetRelatedObject()); Assert.AreEqual(DeleteParentAction.Prevent, relationship.DeleteParentAction); //---------------Execute Test ---------------------- string message; bool isDeletable = relationship.IsDeletable(out message); //---------------Test Result ----------------------- Assert.IsFalse(isDeletable); }
public void Test_UpdateSqlStatement() { //---------------Set up test pack------------------- ContactPersonTestBO.LoadClassDefOrganisationTestBORelationship_MultipleReverse(); OrganisationTestBO.LoadDefaultClassDef(); ContactPersonTestBO contactPersonTestBO = ContactPersonTestBO.CreateSavedContactPerson(); OrganisationTestBO organisationTestBO = new OrganisationTestBO(); SingleRelationship <OrganisationTestBO> singleRelationship = contactPersonTestBO.Relationships.GetSingle <OrganisationTestBO>("Organisation"); singleRelationship.SetRelatedObject(organisationTestBO); IRelationship relationship = organisationTestBO.Relationships.GetMultiple <ContactPersonTestBO>("ContactPeople"); //TransactionalSingleRelationship_Added tsr = new TransactionalSingleRelationship_Added(singleRelationship); var generator = CreateUpdateStatementGenerator(contactPersonTestBO, DatabaseConfig.MySql); //---------------Assert PreConditions--------------- //---------------Execute Test ---------------------- var sql = generator.GenerateForRelationship(relationship, contactPersonTestBO); //---------------Test Result ----------------------- var sqlStatements = sql.ToList(); Assert.AreEqual(1, sqlStatements.Count); Assert.AreEqual("UPDATE `contact_person` SET `OrganisationID` = ?Param0 WHERE `ContactPersonID` = ?Param1", sqlStatements[0].Statement.ToString()); Assert.AreEqual(organisationTestBO.OrganisationID.Value.ToString("B").ToUpper(), sqlStatements[0].Parameters[0].Value); Assert.AreEqual(contactPersonTestBO.ContactPersonID.ToString("B").ToUpper(), sqlStatements[0].Parameters[1].Value); }
public void Test_NotDirty_IfChildIsAddedThenRemoved() { //---------------Set up test pack------------------- OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation(); ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson(); SingleRelationship <ContactPersonTestBO> relationship = GetCompositionRelationship(organisation); relationship.SetRelatedObject(contactPerson); IList <ContactPersonTestBO> children = relationship.GetDirtyChildren(); //---------------Assert preconditions--------------- Assert.AreEqual(1, children.Count); //---------------Execute Test ---------------------- relationship.SetRelatedObject(null); children = relationship.GetDirtyChildren(); //---------------Test Result ----------------------- Assert.AreEqual(0, children.Count); }
public void Test_RemoveMethod() { //---------------Set up test pack------------------- OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation(); SingleRelationship <ContactPersonTestBO> relationship = GetAggregationRelationshipContactPerson(organisation, "ContactPerson"); ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson(); relationship.SetRelatedObject(contactPerson); //---------------Assert Precondition---------------- Assert.AreEqual(contactPerson.OrganisationID, organisation.OrganisationID); Assert.AreSame(organisation.ContactPerson, contactPerson); //---------------Execute Test ---------------------- relationship.SetRelatedObject(null); //---------------Test Result ----------------------- Assert.IsNull(contactPerson.OrganisationID); Assert.IsNull(organisation.ContactPerson); Assert.IsNotNull(organisation.OrganisationID); Assert.IsNull(contactPerson.Organisation); }
public void Test_SetChild_AggregateDoesNotOwnForeignKey_NewChild() { //A new Heart can be set as the heart of a person. This is allowed in Habanero for flexibility, but // it is rather recommended that the Person creates the Heart. //---------------Set up test pack------------------- OrganisationTestBO organisationTestBO = OrganisationTestBO.CreateSavedOrganisation(); ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson(); SingleRelationship <OrganisationTestBO> relationship = GetAggregationRelationshipOrganisation(contactPerson, "Organisation"); //---------------Execute Test ---------------------- relationship.SetRelatedObject(organisationTestBO); //---------------Test Result ----------------------- Assert.AreSame(organisationTestBO, relationship.GetRelatedObject()); }
public void Test_SetChild_NewChild() { //A new ContactPerson can be set as the contact person of an organisation. //---------------Set up test pack------------------- OrganisationTestBO organisationTestBO = OrganisationTestBO.CreateSavedOrganisation(); SingleRelationship <ContactPersonTestBO> relationship = GetAssociationRelationship(organisationTestBO); ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson(); //---------------Execute Test ---------------------- relationship.SetRelatedObject(contactPerson); //---------------Test Result ----------------------- Assert.AreSame(contactPerson, relationship.GetRelatedObject()); }
public void Test_SetChild_PersistedChild() { //An already persisted Heart can be set as the heart of a person (since you can transplant hearts) //---------------Set up test pack------------------- OrganisationTestBO organisationTestBO = OrganisationTestBO.CreateSavedOrganisation(); SingleRelationship <ContactPersonTestBO> relationship = GetAggregationRelationshipContactPerson(organisationTestBO, "ContactPerson"); ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateSavedContactPerson(); //---------------Execute Test ---------------------- relationship.SetRelatedObject(contactPerson); //---------------Test Result ----------------------- Assert.AreSame(contactPerson, relationship.GetRelatedObject()); }
public void Test_UpdateStateAsCommitted_UpdateDirtyStatus_IDOnly() { //---------------Set up test pack------------------- ContactPersonTestBO contactPersonTestBO = ContactPersonTestBO.CreateSavedContactPerson(); OrganisationTestBO organisationTestBO = OrganisationTestBO.CreateSavedOrganisation(); SingleRelationship <OrganisationTestBO> singleRelationship = contactPersonTestBO.Relationships.GetSingle <OrganisationTestBO>("Organisation"); singleRelationship.SetRelatedObject(organisationTestBO); IRelationship relationship = organisationTestBO.Relationships.GetMultiple <ContactPersonTestBO>("ContactPeople"); TransactionalSingleRelationship_Added tsr = new TransactionalSingleRelationship_Added(relationship, contactPersonTestBO); //---------------Assert PreConditions--------------- Assert.IsTrue(contactPersonTestBO.Status.IsDirty); //---------------Execute Test ---------------------- tsr.UpdateStateAsCommitted(); //---------------Test Result ----------------------- Assert.IsFalse(contactPersonTestBO.Status.IsDirty); //---------------Tear Down ------------------------- }
public void Test_UpdateStateAsCommitted_UpdateDirtyStatus_OtherDirtyField() { //---------------Set up test pack------------------- ContactPersonTestBO contactPersonTestBO = ContactPersonTestBO.CreateSavedContactPerson(); OrganisationTestBO organisationTestBO = new OrganisationTestBO(); SingleRelationship <OrganisationTestBO> singleRelationship = contactPersonTestBO.Relationships.GetSingle <OrganisationTestBO>("Organisation"); singleRelationship.SetRelatedObject(organisationTestBO); TransactionalSingleRelationship_Added tsr = new TransactionalSingleRelationship_Added(singleRelationship, organisationTestBO); contactPersonTestBO.Surname = TestUtil.GetRandomString(); //---------------Assert PreConditions--------------- Assert.IsTrue(contactPersonTestBO.Status.IsDirty); //---------------Execute Test ---------------------- tsr.UpdateStateAsCommitted(); //---------------Test Result ----------------------- Assert.IsTrue(contactPersonTestBO.Status.IsDirty); //---------------Tear Down ------------------------- }
public void Test_UpdateSqlStatement_CompositeKey() { //---------------Set up test pack------------------- TestUsingDatabase.SetupDBDataAccessor(); Car car = new Car(); car.Save(); ContactPersonCompositeKey contactPerson = new ContactPersonCompositeKey(); contactPerson.PK1Prop1 = TestUtil.GetRandomString(); contactPerson.PK1Prop2 = TestUtil.GetRandomString(); contactPerson.Save(); contactPerson.GetCarsDriven().Add(car); SingleRelationship <ContactPersonCompositeKey> singleRelationship = car.Relationships.GetSingle <ContactPersonCompositeKey>("Driver"); singleRelationship.SetRelatedObject(contactPerson); IRelationship relationship = contactPerson.Relationships.GetMultiple <Car>("Driver"); var generator = CreateUpdateStatementGenerator(car, DatabaseConfig.MySql); //---------------Assert PreConditions--------------- //---------------Execute Test ---------------------- var sql = generator.GenerateForRelationship(relationship, car); //---------------Test Result ----------------------- var sqlStatements = sql.ToList(); Assert.AreEqual(1, sqlStatements.Count); Assert.AreEqual("UPDATE `car_table` SET `Driver_FK1` = ?Param0, `Driver_FK2` = ?Param1 WHERE `CAR_ID` = ?Param2", sqlStatements[0].Statement.ToString()); Assert.AreEqual(contactPerson.PK1Prop1, sqlStatements[0].Parameters[0].Value); Assert.AreEqual(contactPerson.PK1Prop2, sqlStatements[0].Parameters[1].Value); Assert.AreEqual(car.CarID.ToString("B").ToUpper(), sqlStatements[0].Parameters[2].Value); //---------------Tear Down ------------------------- }