Example #1
0
        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);
        }
Example #2
0
 /// <summary>
 /// Check the data in current object
 /// </summary>
 /// <param name='revisionEvent'>The revision event.</param>
 public static void CheckData(this WebTaxonRevisionEvent revisionEvent)
 {
     if (!revisionEvent.IsDataChecked)
     {
         revisionEvent.CheckStrings();
         revisionEvent.IsDataChecked = true;
     }
 }
        public void CreateSpeciesFact_WithSpeciesFactStatusNullData_ThenDyntaxaRevisionSpeciesFactCreated()
        {
            Int32 revisionId = 1;

            WebDyntaxaRevisionSpeciesFact speciesFact = GetReferenceDyntaxaRevisionSpeciesFact((Int32)TaxonId.Bear);

            speciesFact.FactorId            = (Int32)FactorId.SwedishHistory;
            speciesFact.RevisionId          = revisionId;
            speciesFact.IsPublished         = false;
            speciesFact.StatusId            = null;
            speciesFact.ReferenceId         = null;
            speciesFact.QualityId           = null;
            speciesFact.SpeciesFactExists   = true;
            speciesFact.Description         = null;
            speciesFact.OriginalStatusId    = 2;
            speciesFact.OriginalQualityId   = 3;
            speciesFact.OriginalReferenceId = 4;
            speciesFact.OriginalDescription = "test test";

            WebTaxonRevisionEvent revisionEvent;

            revisionEvent = new WebTaxonRevisionEvent()
            {
                CreatedBy    = 2,
                CreatedDate  = DateTime.Now,
                TypeId       = 1,
                RevisionId   = revisionId,
                AffectedTaxa = "Bear",
                OldValue     = "StatusId=Unknown",
                NewValue     = "StatusId=400"
            };

            //using (IWebServiceTransaction transaction = new WebServiceTransaction(GetClientInformation(), WebServiceProxy.DyntaxaInternalService))
            using (IWebServiceTransaction transaction = new WebServiceTransaction(GetRevisionClientInformation(), WebServiceProxy.TaxonService))
            {
                // We now create revision event.
                WebTaxonRevisionEvent createdRevisionEvent = WebServiceProxy.DyntaxaInternalService.CreateCompleteRevisionEvent(GetClientInformation(), revisionEvent);
                speciesFact.RevisionEventId = createdRevisionEvent.Id;
                // We now create the revision species fact.
                speciesFact = WebServiceProxy.DyntaxaInternalService.CreateDyntaxaRevisionSpeciesFact(GetClientInformation(), speciesFact);
                var currentDyntaxaRevisionSpeciesFact = WebServiceProxy.DyntaxaInternalService.GetDyntaxaRevisionSpeciesFact(
                    GetClientInformation(), (Int32)FactorId.SwedishHistory, (Int32)TaxonId.Bear, revisionId);

                // Assert first Insert.
                Assert.AreEqual(createdRevisionEvent.Id, speciesFact.RevisionEventId);
                Assert.IsFalse(currentDyntaxaRevisionSpeciesFact.IsChangedInRevisionEventIdSpecified);
                Assert.IsNull(currentDyntaxaRevisionSpeciesFact.StatusId);
                Assert.IsNull(currentDyntaxaRevisionSpeciesFact.ReferenceId);
                Assert.IsNull(currentDyntaxaRevisionSpeciesFact.QualityId);
                Assert.IsNull(currentDyntaxaRevisionSpeciesFact.Description);
                Assert.AreEqual(speciesFact.StatusId, currentDyntaxaRevisionSpeciesFact.StatusId);
                Assert.IsTrue(currentDyntaxaRevisionSpeciesFact.SpeciesFactExists);
                Assert.AreEqual(2, speciesFact.OriginalStatusId);
                Assert.AreEqual(3, speciesFact.OriginalQualityId);
                Assert.AreEqual(4, speciesFact.OriginalReferenceId);
                Assert.AreEqual("test test", speciesFact.OriginalDescription);
            }
        }
        /// <summary>
        /// gets a RevisionEvent for test
        /// </summary>
        /// <returns></returns>
        private WebTaxonRevisionEvent GetReferenceRevisionEvent()
        {
            WebTaxonRevisionEvent revEvent = new WebTaxonRevisionEvent();

            revEvent.CreatedBy   = Settings.Default.TestUserId;
            revEvent.CreatedDate = DateTime.Now;
            revEvent.TypeId      = 3300;
            revEvent.RevisionId  = 44;
            return(revEvent);
        }
Example #5
0
 /// <summary>
 /// </summary>
 /// <param name="revisionEvent">
 /// The revision event.
 /// </param>
 /// <param name="dataReader">
 /// The data reader.
 /// </param>
 public static void LoadData(this WebTaxonRevisionEvent revisionEvent, DataReader dataReader)
 {
     revisionEvent.Id           = dataReader.GetInt32(RevisionEventData.ID);
     revisionEvent.RevisionId   = dataReader.GetInt32(RevisionEventData.REVISIONID);
     revisionEvent.CreatedBy    = dataReader.GetInt32(RevisionEventData.CREATEDBYID);
     revisionEvent.CreatedDate  = dataReader.GetDateTime(RevisionEventData.CREATEDDATE);
     revisionEvent.TypeId       = dataReader.GetInt32(RevisionEventData.EVENTTYPEID);
     revisionEvent.AffectedTaxa = dataReader.GetString(RevisionEventData.DESCRIPTION_AFFECTEDTAXA);
     revisionEvent.NewValue     = dataReader.GetString(RevisionEventData.DESCRIPTION_NEWVALUE);
     revisionEvent.OldValue     = dataReader.GetString(RevisionEventData.DESCRIPTION_OLDVALUE);
 }
 /// <summary>
 /// Copies data from webobject to domainobject.
 /// </summary>
 /// <param name="userContext">
 /// The user context.
 /// </param>
 /// <param name="taxonRevisionEvent">
 /// The revision event.
 /// </param>
 /// <param name="webRevisionEvent">
 /// The web revision event.
 /// </param>
 private void UpdateTaxonRevisionEvent(
     IUserContext userContext,
     ITaxonRevisionEvent taxonRevisionEvent,
     WebTaxonRevisionEvent webRevisionEvent)
 {
     taxonRevisionEvent.AffectedTaxa = webRevisionEvent.AffectedTaxa;
     taxonRevisionEvent.CreatedBy    = webRevisionEvent.CreatedBy;
     taxonRevisionEvent.CreatedDate  = webRevisionEvent.CreatedDate;
     taxonRevisionEvent.DataContext  = GetDataContext(userContext);
     taxonRevisionEvent.Id           = webRevisionEvent.Id;
     taxonRevisionEvent.NewValue     = webRevisionEvent.NewValue;
     taxonRevisionEvent.OldValue     = webRevisionEvent.OldValue;
     taxonRevisionEvent.RevisionId   = webRevisionEvent.RevisionId;
     taxonRevisionEvent.Type         = CoreData.TaxonManager.GetTaxonRevisionEventType(userContext, webRevisionEvent.TypeId);
 }
        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;
         }
     }
 }
        /// <summary>
        /// Convert a ITaxonRevisionEvent instance
        /// to a WebTaxonRevisionEvent instance.
        /// </summary>
        /// <param name="taxonRevisionEvent">A ITaxonRevisionEvent object.</param>
        /// <returns>A WebTaxonRevisionEvent instance.</returns>
        private WebTaxonRevisionEvent GetTaxonRevisionEvent(ITaxonRevisionEvent taxonRevisionEvent)
        {
            WebTaxonRevisionEvent webTaxonRevisionEvent;

            webTaxonRevisionEvent = null;
            if (taxonRevisionEvent.IsNotNull())
            {
                webTaxonRevisionEvent = new WebTaxonRevisionEvent();
                webTaxonRevisionEvent.AffectedTaxa = taxonRevisionEvent.AffectedTaxa;
                webTaxonRevisionEvent.CreatedBy    = taxonRevisionEvent.CreatedBy;
                webTaxonRevisionEvent.CreatedDate  = taxonRevisionEvent.CreatedDate;
                webTaxonRevisionEvent.Id           = taxonRevisionEvent.Id;
                webTaxonRevisionEvent.NewValue     = taxonRevisionEvent.NewValue;
                webTaxonRevisionEvent.OldValue     = taxonRevisionEvent.OldValue;
                webTaxonRevisionEvent.RevisionId   = taxonRevisionEvent.RevisionId;
                webTaxonRevisionEvent.TypeId       = taxonRevisionEvent.Type.Id;
            }

            return(webTaxonRevisionEvent);
        }
        public void GetAllDyntaxaRevisionSpeciesFacts_WhenOneRevisionSpeciesFactIsCreated_ThenOneChangedRevisionSpeciesFactIsReturned()
        {
            WebDyntaxaRevisionSpeciesFact dyntaxaRevisionSpeciesFact1;
            WebTaxonRevisionEvent         revisionEvent1;
            Int32 revisionId = 1;

            //-------------------------------------------------------------------
            // Create first dyntaxa revision species fact and revision event.
            dyntaxaRevisionSpeciesFact1             = GetReferenceDyntaxaRevisionSpeciesFact((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"
            };

            //using (IWebServiceTransaction transaction = new WebServiceTransaction(GetClientInformation(), WebServiceProxy.DyntaxaInternalService))
            using (IWebServiceTransaction transaction = new WebServiceTransaction(GetRevisionClientInformation(), WebServiceProxy.TaxonService))
            {
                revisionEvent1 = WebServiceProxy.DyntaxaInternalService.CreateCompleteRevisionEvent(GetClientInformation(), revisionEvent1);
                dyntaxaRevisionSpeciesFact1.RevisionEventId = revisionEvent1.Id;
                dyntaxaRevisionSpeciesFact1 = WebServiceProxy.DyntaxaInternalService.CreateDyntaxaRevisionSpeciesFact(GetClientInformation(),
                                                                                                                      dyntaxaRevisionSpeciesFact1);
                var currentDyntaxaRevisionSpeciesFacts = WebServiceProxy.DyntaxaInternalService.GetAllDyntaxaRevisionSpeciesFacts(
                    GetClientInformation(), revisionId);

                //Assert first Insert
                Assert.AreEqual(1, currentDyntaxaRevisionSpeciesFacts.Count);
            }
        }
        public void SetRevisionSpeciesFactPublished()
        {
            WebDyntaxaRevisionSpeciesFact dyntaxaRevisionSpeciesFact;
            WebTaxonRevisionEvent         revisionEvent;
            Int32 revisionId = 1;

            //-------------------------------------------------------------------
            // Create first dyntaxa revision species fact and revision event.
            dyntaxaRevisionSpeciesFact             = GetReferenceDyntaxaRevisionSpeciesFact((Int32)TaxonId.Bear);
            dyntaxaRevisionSpeciesFact.FactorId    = (Int32)FactorId.SwedishHistory;
            dyntaxaRevisionSpeciesFact.RevisionId  = revisionId;
            dyntaxaRevisionSpeciesFact.IsPublished = false;
            dyntaxaRevisionSpeciesFact.StatusId    = 400;

            revisionEvent = new WebTaxonRevisionEvent()
            {
                CreatedBy    = 2,
                CreatedDate  = DateTime.Now,
                TypeId       = 1,
                RevisionId   = revisionId,
                AffectedTaxa = "Bear",
                OldValue     = "StatusId=Unknown",
                NewValue     = "StatusId=400"
            };

            //using (IWebServiceTransaction transaction = new WebServiceTransaction(GetClientInformation(), WebServiceProxy.DyntaxaInternalService))
            using (IWebServiceTransaction transaction = new WebServiceTransaction(GetRevisionClientInformation(), WebServiceProxy.TaxonService))
            {
                revisionEvent = WebServiceProxy.DyntaxaInternalService.CreateCompleteRevisionEvent(GetClientInformation(), revisionEvent);
                dyntaxaRevisionSpeciesFact.RevisionEventId = revisionEvent.Id;
                WebServiceProxy.DyntaxaInternalService.CreateDyntaxaRevisionSpeciesFact(GetClientInformation(), dyntaxaRevisionSpeciesFact);
                var result = WebServiceProxy.DyntaxaInternalService.SetRevisionSpeciesFactPublished(
                    GetClientInformation(), revisionId);

                //Assert first Insert
                Assert.AreEqual(true, result);
            }
        }
        public void GetDyntaxaRevisionSpeciesFact_WhenRevisionSpeciesFactIsCreatedAndLaterChanged_ThenLastChangedRevisionSpeciesFactIsReturned()
        {
            WebDyntaxaRevisionSpeciesFact dyntaxaRevisionSpeciesFact1, dyntaxaRevisionSpeciesFact2, currentDyntaxaRevisionSpeciesFact;
            WebTaxonRevisionEvent         revisionEvent1, revisionEvent2;
            Int32 revisionId = 1;

            //-------------------------------------------------------------------
            // Create first dyntaxa revision species fact and revision event.
            dyntaxaRevisionSpeciesFact1             = GetReferenceDyntaxaRevisionSpeciesFact((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"
            };

            //using (IWebServiceTransaction transaction = new WebServiceTransaction(GetClientInformation(), WebServiceProxy.DyntaxaInternalService))
            using (IWebServiceTransaction transaction = new WebServiceTransaction(GetRevisionClientInformation(), WebServiceProxy.TaxonService))
            {
                revisionEvent1 = WebServiceProxy.DyntaxaInternalService.CreateCompleteRevisionEvent(GetClientInformation(), revisionEvent1);
                dyntaxaRevisionSpeciesFact1.RevisionEventId = revisionEvent1.Id;
                dyntaxaRevisionSpeciesFact1 = WebServiceProxy.DyntaxaInternalService.CreateDyntaxaRevisionSpeciesFact(GetClientInformation(),
                                                                                                                      dyntaxaRevisionSpeciesFact1);
                currentDyntaxaRevisionSpeciesFact = WebServiceProxy.DyntaxaInternalService.GetDyntaxaRevisionSpeciesFact(
                    GetClientInformation(), (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             = GetReferenceDyntaxaRevisionSpeciesFact((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 = WebServiceProxy.DyntaxaInternalService.CreateCompleteRevisionEvent(GetClientInformation(), revisionEvent2);
                dyntaxaRevisionSpeciesFact2.RevisionEventId = revisionEvent2.Id;
                dyntaxaRevisionSpeciesFact2 = WebServiceProxy.DyntaxaInternalService.CreateDyntaxaRevisionSpeciesFact(GetClientInformation(),
                                                                                                                      dyntaxaRevisionSpeciesFact2);
                currentDyntaxaRevisionSpeciesFact = WebServiceProxy.DyntaxaInternalService.GetDyntaxaRevisionSpeciesFact(
                    GetClientInformation(), (Int32)FactorId.SwedishHistory, (Int32)TaxonId.Bear, revisionId);

                // Check values.
                Assert.AreEqual(450, currentDyntaxaRevisionSpeciesFact.StatusId);
                Assert.AreEqual(revisionEvent2.Id, currentDyntaxaRevisionSpeciesFact.RevisionEventId);
                Assert.IsFalse(currentDyntaxaRevisionSpeciesFact.IsChangedInRevisionEventIdSpecified);
                // Check latest change is returned.
                Assert.AreEqual(dyntaxaRevisionSpeciesFact2.Id, currentDyntaxaRevisionSpeciesFact.Id);
                Assert.AreNotEqual(dyntaxaRevisionSpeciesFact1.Id, currentDyntaxaRevisionSpeciesFact.Id);
            }
        }
 /// <summary>
 /// Creates the complete revision event.
 /// </summary>
 /// <param name="clientInformation">The client information.</param>
 /// <param name="revisionEvent">The revision event.</param>
 /// <returns></returns>
 public WebTaxonRevisionEvent CreateCompleteRevisionEvent(WebClientInformation clientInformation, WebTaxonRevisionEvent revisionEvent)
 {
     using (ClientProxy client = new ClientProxy(this, 1))
     {
         return(client.Client.CreateCompleteRevisionEvent(clientInformation, revisionEvent));
     }
 }
        /// <summary>
        /// Creates a new complete Revision event, i.e. all revision event data is set.
        /// </summary>
        /// <param name="context">Web service request context.</param>
        /// <param name="revisionEvent">Revision event object.</param>
        /// <returns>The created revision event object.</returns>
        public static WebTaxonRevisionEvent CreateCompleteRevisionEvent(WebServiceContext context, WebTaxonRevisionEvent revisionEvent)
        {
            // Check authority - AuthorityIdentifier.DyntaxaTaxonEditation
            WebServiceData.AuthorizationManager.CheckAuthorization(context, AuthorityIdentifier.DyntaxaTaxonEditation);

            context.CheckTransaction();
            revisionEvent.CheckData();
            var revisionId = context.GetTaxonDatabase().CreateCompleteRevisionEvent(revisionEvent.RevisionId, revisionEvent.TypeId, revisionEvent.CreatedBy,
                                                                                    revisionEvent.CreatedDate, revisionEvent.AffectedTaxa, revisionEvent.NewValue, revisionEvent.OldValue);

            return(TaxonManager.GetRevisionEventById(context, revisionId));
        }
        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);
        }