public void TestModifyReferenceRelationAndThenModifyBackToOriginalStateInSameRevisionEventAndThenUndo() { // Consts const int TestRevisionId = 24; const string TestObjectGUID = "urn:lsid:dyntaxa.se:Taxon:6010174"; const int TestReferenceId = 1030; // Step 1 - change original artfaktaReferenceRelation from TypeId = 1 to TypeId = 2 WebTaxonRevisionEvent revisionEvent1 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 19, RevisionId = TestRevisionId, AffectedTaxa = "Taxon' [6010174]", OldValue = "Type='1", NewValue = "Type='2" }); WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep1 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateModifyAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId, 2, 1)); // Step 2 - change from TypeId = 2 to TypeId = 1 WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep2 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateModifyAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId, 1, 2)); // Get reference relations for current revision and object GUID. List <WebDyntaxaRevisionReferenceRelation> referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(1, referenceRelations.Count); Assert.AreEqual(1, referenceRelations[0].ReferenceType); // undo last revision event TaxonManager.DeleteTaxonRevisionEvent(GetRevisionContext(), revisionEvent1.Id); referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(0, referenceRelations.Count); }
public void TestAddTwoReferenceRelationsWithSameReferenceButDifferentType() { // Consts const int TestRevisionId = 24; const string TestObjectGUID = "urn:lsid:dyntaxa.se:Taxon:6010174"; const int TestReferenceId3200 = 3200; // Arrange WebTaxonRevisionEvent revisionEvent1; // Act // Add new reference 3200 with type 1 revisionEvent1 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 19, RevisionId = TestRevisionId, AffectedTaxa = "Taxon [6010174]", OldValue = "NULL", NewValue = "Reference3200, Type=1" }); WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep1 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateAddAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId3200, 1)); // Add new reference 3200 with type 2 WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep2 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateAddAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId3200, 2)); // Get reference relations for current revision and object GUID. List <WebDyntaxaRevisionReferenceRelation> referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(2, referenceRelations.Count); Assert.AreEqual(TestReferenceId3200, referenceRelations[0].ReferenceId); Assert.AreEqual(1, referenceRelations[0].ReferenceType); Assert.AreEqual(TestReferenceId3200, referenceRelations[1].ReferenceId); Assert.AreEqual(2, referenceRelations[1].ReferenceType); }
public void CreateCompleteRevisionEvent_WithValidData_ThenRevisionEventIsCreated() { Int32 revisionId = 1; String affectedTaxa, oldValue, newValue; WebTaxonRevisionEvent revisionEvent, newRevisionEvent; revisionEvent = new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 1, RevisionId = revisionId, AffectedTaxa = "Straminergon [1004721]", OldValue = "My old value", NewValue = "My new value" }; newRevisionEvent = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), revisionEvent); Assert.AreEqual(revisionEvent.CreatedBy, newRevisionEvent.CreatedBy); Assert.AreEqual(revisionEvent.TypeId, newRevisionEvent.TypeId); Assert.AreEqual(revisionEvent.OldValue, newRevisionEvent.OldValue); Assert.AreEqual(revisionEvent.NewValue, newRevisionEvent.NewValue); Assert.AreNotEqual(revisionEvent.Id, newRevisionEvent.Id); affectedTaxa = "Strami ' nergon [1004721]"; oldValue = "My old ' value"; newValue = "My new ' value"; revisionEvent = new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 1, RevisionId = revisionId, AffectedTaxa = affectedTaxa, OldValue = oldValue, NewValue = newValue }; newRevisionEvent = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), revisionEvent); Assert.AreEqual(revisionEvent.CreatedBy, newRevisionEvent.CreatedBy); Assert.AreEqual(revisionEvent.TypeId, newRevisionEvent.TypeId); Assert.AreEqual(oldValue, newRevisionEvent.OldValue); Assert.AreEqual(newValue, newRevisionEvent.NewValue); Assert.AreNotEqual(revisionEvent.Id, newRevisionEvent.Id); }
/// <summary> /// Creates a new complete Revision event, i.e. all revision event data is set. /// </summary> /// <param name="clientInformation">The client information.</param> /// <param name="taxonRevisionEvent"> /// The revision Event. /// </param> /// <returns> /// The newly created object. /// </returns> public WebTaxonRevisionEvent CreateCompleteRevisionEvent( WebClientInformation clientInformation, WebTaxonRevisionEvent taxonRevisionEvent) { using (WebServiceContext context = new WebServiceContext(clientInformation)) { try { return(DyntaxaManager.CreateCompleteRevisionEvent(context, taxonRevisionEvent)); } catch (Exception exception) { WebServiceData.LogManager.LogError(context, exception); throw; } } }
public void TestDeleteReferenceAndThenAddItAgainAndThenUndo() { // Consts const int TestRevisionId = 24; const string TestObjectGUID = "urn:lsid:dyntaxa.se:Taxon:6010174"; const int TestReferenceId3200 = 3200; WebTaxonRevisionEvent revisionEvent1; WebTaxonRevisionEvent revisionEvent2; // Act // Step 1 - Delete reference 3200, Type=2 revisionEvent1 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 19, RevisionId = TestRevisionId, AffectedTaxa = "Taxon [6010174]", OldValue = "Ref3200,Typ1", NewValue = "Deleted" }); WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep1 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateDeleteAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId3200, 2, 2)); // Get reference relations for current revision and object GUID. List <WebDyntaxaRevisionReferenceRelation> referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(1, referenceRelations.Count); Assert.AreEqual(TestReferenceId3200, referenceRelations[0].ReferenceId); Assert.AreEqual("Delete", referenceRelations[0].Action); // Step 2 - Add reference 3200, Type=1 revisionEvent2 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 19, RevisionId = TestRevisionId, AffectedTaxa = "Taxon [6010174]", OldValue = "Deleted", NewValue = "Ref3200" }); WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep2 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateAddAction( TestRevisionId, revisionEvent2.Id, TestObjectGUID, TestReferenceId3200, 2)); // Get reference relations for current revision and object GUID. referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(1, referenceRelations.Count); Assert.AreEqual(TestReferenceId3200, referenceRelations[0].ReferenceId); Assert.AreEqual("Add", referenceRelations[0].Action); }
public void TestAddTwoReferenceRelationsToOneObjectGUIDAndThenModifyTypeOfOneOfTheReferences() { // Consts const int TestRevisionId = 24; const string TestObjectGUID = "urn:lsid:dyntaxa.se:Taxon:6010174"; const int TestReferenceId3200 = 3200; const int TestReferenceId1500 = 1500; // Arrange WebTaxonRevisionEvent revisionEvent1; WebTaxonRevisionEvent revisionEvent2; // Act // Add new reference 3200 with type 2 revisionEvent1 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 19, RevisionId = TestRevisionId, AffectedTaxa = "Taxon [6010174]", OldValue = "NULL", NewValue = "Reference3200" }); WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep1 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateAddAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId3200, 2)); // Add new reference 1500 with type 1 WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep2 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateAddAction( TestRevisionId, revisionEvent1.Id, TestObjectGUID, TestReferenceId1500, 1)); // Get reference relations for current revision and object GUID. List <WebDyntaxaRevisionReferenceRelation> referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(2, referenceRelations.Count); Assert.AreEqual(TestReferenceId3200, referenceRelations[0].ReferenceId); Assert.AreEqual(2, referenceRelations[0].ReferenceType); Assert.AreEqual(TestReferenceId1500, referenceRelations[1].ReferenceId); // Change type of Reference 3200 to type 1 revisionEvent2 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 19, RevisionId = TestRevisionId, AffectedTaxa = "Taxon [6010174]", OldValue = "Type=2", NewValue = "Type=1" }); // Add eller Modify? //WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep3 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( // GetRevisionContext(), // WebDyntaxaReferenceRelationTestFactory.CreateAddAction( // TestRevisionId, // revisionEvent2.Id, // TestObjectGUID, // TestReferenceId3200, // 1)); WebDyntaxaRevisionReferenceRelation revisionReferenceRelationStep3 = DyntaxaManager.CreateDyntaxaRevisionReferenceRelation( GetRevisionContext(), WebDyntaxaReferenceRelationTestFactory.CreateModifyAction( TestRevisionId, revisionEvent2.Id, TestObjectGUID, TestReferenceId3200, 1, 2)); // 2 eller null? // Get reference relations for current revision and object GUID. referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(2, referenceRelations.Count); Assert.AreEqual(TestReferenceId1500, referenceRelations[0].ReferenceId); Assert.AreEqual(TestReferenceId3200, referenceRelations[1].ReferenceId); Assert.AreEqual(1, referenceRelations[1].ReferenceType); // undo last revision event TaxonManager.DeleteTaxonRevisionEvent(GetRevisionContext(), revisionEvent2.Id); referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(2, referenceRelations[0].ReferenceType); // Get reference relations for current revision and object GUID. referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(2, referenceRelations.Count); Assert.AreEqual(TestReferenceId3200, referenceRelations[0].ReferenceId); Assert.AreEqual(2, referenceRelations[0].ReferenceType); Assert.AreEqual(TestReferenceId1500, referenceRelations[1].ReferenceId); // undo last revision event once more TaxonManager.DeleteTaxonRevisionEvent(GetRevisionContext(), revisionEvent1.Id); referenceRelations = DyntaxaManager.GetDyntaxaRevisionReferenceRelation( GetRevisionContext(), TestRevisionId, TestObjectGUID); Assert.AreEqual(0, referenceRelations.Count); }
public void GetDyntaxaRevisionSpeciesFact_WhenRevisionSpeciesFactIsCreatedAndLaterChanged_ThenLastChangedRevisionSpeciesFactIsReturned() { WebDyntaxaRevisionSpeciesFact dyntaxaRevisionSpeciesFact1, getDyntaxaRevisionSpeciesFact1, dyntaxaRevisionSpeciesFact2, getDyntaxaRevisionSpeciesFact2, currentDyntaxaRevisionSpeciesFact; WebTaxonRevisionEvent revisionEvent1, revisionEvent2; Int32 revisionId = 1; //------------------------------------------------------------------- // Create first dyntaxa revision species fact and revision event. dyntaxaRevisionSpeciesFact1 = WebDyntaxaSpeciesFactTestFactory.Create((Int32)TaxonId.Bear); dyntaxaRevisionSpeciesFact1.FactorId = (Int32)FactorId.SwedishHistory; dyntaxaRevisionSpeciesFact1.RevisionId = revisionId; dyntaxaRevisionSpeciesFact1.IsPublished = false; dyntaxaRevisionSpeciesFact1.StatusId = 400; revisionEvent1 = new WebTaxonRevisionEvent() { CreatedBy = 2, CreatedDate = DateTime.Now, TypeId = 1, RevisionId = revisionId, AffectedTaxa = "Bear", OldValue = "StatusId=Unknown", NewValue = "StatusId=400" }; revisionEvent1 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), revisionEvent1); dyntaxaRevisionSpeciesFact1.RevisionEventId = revisionEvent1.Id; dyntaxaRevisionSpeciesFact1 = DyntaxaManager.CreateDyntaxaRevisionSpeciesFact(GetRevisionContext(), dyntaxaRevisionSpeciesFact1); currentDyntaxaRevisionSpeciesFact = DyntaxaManager.GetDyntaxaRevisionSpeciesFact( GetRevisionContext(), (Int32)FactorId.SwedishHistory, (Int32)TaxonId.Bear, revisionId); //Assert first Insert Assert.AreEqual(revisionEvent1.Id, dyntaxaRevisionSpeciesFact1.RevisionEventId); Assert.IsFalse(currentDyntaxaRevisionSpeciesFact.IsChangedInRevisionEventIdSpecified); Assert.AreEqual(400, currentDyntaxaRevisionSpeciesFact.StatusId); Assert.AreEqual(dyntaxaRevisionSpeciesFact1.StatusId, currentDyntaxaRevisionSpeciesFact.StatusId); //--------------------------------------------------------------------- // Create second dyntaxa revision species fact and revision event. dyntaxaRevisionSpeciesFact2 = WebDyntaxaSpeciesFactTestFactory.Create((Int32)TaxonId.Bear); dyntaxaRevisionSpeciesFact2.FactorId = (Int32)FactorId.SwedishHistory; dyntaxaRevisionSpeciesFact2.RevisionId = revisionId; dyntaxaRevisionSpeciesFact2.IsPublished = false; dyntaxaRevisionSpeciesFact2.StatusId = 450; // changed from 400 to 450. revisionEvent2 = new WebTaxonRevisionEvent() { CreatedBy = 3, //Changed CreatedDate = DateTime.Now, TypeId = 1, RevisionId = revisionId, AffectedTaxa = "Bear", OldValue = "StatusId=400", //Changed NewValue = "StatusId=450" //Changed }; revisionEvent2 = DyntaxaManager.CreateCompleteRevisionEvent(GetRevisionContext(), revisionEvent2); dyntaxaRevisionSpeciesFact2.RevisionEventId = revisionEvent2.Id; dyntaxaRevisionSpeciesFact2 = DyntaxaManager.CreateDyntaxaRevisionSpeciesFact(GetRevisionContext(), dyntaxaRevisionSpeciesFact2); currentDyntaxaRevisionSpeciesFact = DyntaxaManager.GetDyntaxaRevisionSpeciesFact( GetRevisionContext(), (Int32)FactorId.SwedishHistory, (Int32)TaxonId.Bear, revisionId); getDyntaxaRevisionSpeciesFact1 = DyntaxaManager.GetDyntaxaRevisionSpeciesFactById(GetRevisionContext(), dyntaxaRevisionSpeciesFact1.Id); getDyntaxaRevisionSpeciesFact2 = DyntaxaManager.GetDyntaxaRevisionSpeciesFactById(GetRevisionContext(), dyntaxaRevisionSpeciesFact2.Id); // Check values. Assert.AreEqual(450, currentDyntaxaRevisionSpeciesFact.StatusId); Assert.AreEqual(getDyntaxaRevisionSpeciesFact2.StatusId, currentDyntaxaRevisionSpeciesFact.StatusId); Assert.AreEqual(400, getDyntaxaRevisionSpeciesFact1.StatusId); Assert.AreNotEqual(getDyntaxaRevisionSpeciesFact1.StatusId, currentDyntaxaRevisionSpeciesFact.StatusId); Assert.AreEqual(revisionEvent1.Id, getDyntaxaRevisionSpeciesFact1.RevisionEventId); Assert.AreEqual(revisionEvent2.Id, getDyntaxaRevisionSpeciesFact1.ChangedInRevisionEventId); Assert.AreEqual(revisionEvent2.Id, currentDyntaxaRevisionSpeciesFact.RevisionEventId); Assert.IsFalse(currentDyntaxaRevisionSpeciesFact.IsChangedInRevisionEventIdSpecified); }