public void TestConstructor()
        {
            var sourceEntityId        = 1;
            var recipientEntityId     = 2;
            var sourceEntityTypeId    = MoneyFlowSourceRecipientType.TravelStop.Id;
            var recipientEntityTypeId = MoneyFlowSourceRecipientType.Organization.Id;
            var userId            = 1;
            var user              = new User(userId);
            var description       = "description";
            var value             = 1.00m;
            var fiscalYear        = 2015;
            var grantNumber       = "grant";
            var transactionDate   = DateTimeOffset.UtcNow;
            var moneyFlowStatusId = MoneyFlowStatus.Appropriated.Id;
            var parentMoneyFlowId = 5;
            var isDirect          = true;
            var instance          = new AdditionalMoneyFlow(user, parentMoneyFlowId, description, grantNumber, value, moneyFlowStatusId, transactionDate, fiscalYear, sourceEntityId, recipientEntityId, sourceEntityTypeId, recipientEntityTypeId, isDirect);

            Assert.AreEqual(sourceEntityId, instance.SourceEntityId);
            Assert.AreEqual(recipientEntityId, instance.RecipientEntityId);
            Assert.AreEqual(sourceEntityTypeId, instance.SourceEntityTypeId);
            Assert.AreEqual(recipientEntityTypeId, instance.RecipientEntityTypeId);
            Assert.IsTrue(Object.ReferenceEquals(user, instance.Audit.User));
            Assert.AreEqual(description, instance.Description);
            Assert.AreEqual(value, instance.Value);
            Assert.AreEqual(fiscalYear, instance.FiscalYear);
            Assert.AreEqual(transactionDate, instance.TransactionDate);
            Assert.AreEqual(moneyFlowStatusId, instance.MoneyFlowStatusId);
            Assert.AreEqual(MoneyFlowType.Incoming.Id, instance.MoneyFlowTypeId);
            Assert.AreEqual(parentMoneyFlowId, instance.ParentMoneyFlowId);
            Assert.AreEqual(grantNumber, instance.GrantNumber);
            Assert.AreEqual(isDirect, instance.IsDirect);
        }
        public void TestGetMoneyFlow_CheckSourceAndRecipientEntityId_Office()
        {
            var sourceEntityId        = 1;
            var recipientEntityId     = 2;
            var sourceEntityTypeId    = MoneyFlowSourceRecipientType.Office.Id;
            var recipientEntityTypeId = MoneyFlowSourceRecipientType.Office.Id;
            var userId            = 1;
            var user              = new User(userId);
            var description       = "description";
            var value             = 1.00m;
            var fiscalYear        = 2015;
            var transactionDate   = DateTimeOffset.UtcNow;
            var moneyFlowStatusId = MoneyFlowStatus.Appropriated.Id;
            var parentMoneyFlowId = 5;
            var grantNumber       = "grant";
            var isDirect          = true;
            var instance          = new AdditionalMoneyFlow(user, parentMoneyFlowId, description, grantNumber, value, moneyFlowStatusId, transactionDate, fiscalYear, sourceEntityId, recipientEntityId, sourceEntityTypeId, recipientEntityTypeId, isDirect);

            var moneyFlow = instance.GetMoneyFlow();

            Assert.AreEqual(sourceEntityId, moneyFlow.SourceOrganizationId);
            Assert.AreEqual(recipientEntityId, moneyFlow.RecipientOrganizationId);

            nullablePropertyTester(x => x.SourceParticipantId, moneyFlow);
            nullablePropertyTester(x => x.SourceProgramId, moneyFlow);
            nullablePropertyTester(x => x.SourceProjectId, moneyFlow);
            nullablePropertyTester(x => x.SourceItineraryStopId, moneyFlow);

            nullablePropertyTester(x => x.RecipientItineraryStopId, moneyFlow);
            nullablePropertyTester(x => x.RecipientProgramId, moneyFlow);
            nullablePropertyTester(x => x.RecipientProjectId, moneyFlow);
            nullablePropertyTester(x => x.RecipientParticipantId, moneyFlow);
            nullablePropertyTester(x => x.RecipientTransportationId, moneyFlow);
            nullablePropertyTester(x => x.RecipientAccommodationId, moneyFlow);
        }
        public void TestGetMoneyFlow_CheckBasicProperties()
        {
            var sourceEntityId        = 1;
            var recipientEntityId     = 2;
            var sourceEntityTypeId    = MoneyFlowSourceRecipientType.TravelStop.Id;
            var recipientEntityTypeId = MoneyFlowSourceRecipientType.Organization.Id;
            var userId            = 1;
            var user              = new User(userId);
            var description       = "description";
            var value             = 1.00m;
            var fiscalYear        = 2015;
            var transactionDate   = DateTimeOffset.UtcNow;
            var moneyFlowStatusId = MoneyFlowStatus.Appropriated.Id;
            var parentMoneyFlowId = 5;
            var grantNumber       = "grant";
            var isDirect          = true;
            var instance          = new AdditionalMoneyFlow(user, parentMoneyFlowId, description, grantNumber, value, moneyFlowStatusId, transactionDate, fiscalYear, sourceEntityId, recipientEntityId, sourceEntityTypeId, recipientEntityTypeId, isDirect);

            var moneyFlow = instance.GetMoneyFlow();

            Assert.AreEqual(description, moneyFlow.Description);
            Assert.AreEqual(value, moneyFlow.Value);
            Assert.AreEqual(fiscalYear, moneyFlow.FiscalYear);
            Assert.AreEqual(transactionDate, moneyFlow.TransactionDate);
            Assert.AreEqual(moneyFlowStatusId, moneyFlow.MoneyFlowStatusId);
            Assert.AreEqual(sourceEntityId, moneyFlow.SourceItineraryStopId);
            Assert.AreEqual(recipientEntityId, moneyFlow.RecipientOrganizationId);
            Assert.AreEqual(userId, moneyFlow.History.CreatedBy);
            Assert.AreEqual(userId, moneyFlow.History.RevisedBy);
            Assert.AreEqual(parentMoneyFlowId, moneyFlow.ParentMoneyFlowId);
            Assert.AreEqual(grantNumber, moneyFlow.GrantNumber);
            Assert.AreEqual(isDirect, moneyFlow.IsDirect);
            DateTimeOffset.UtcNow.Should().BeCloseTo(moneyFlow.History.CreatedOn, 2000);
            DateTimeOffset.UtcNow.Should().BeCloseTo(moneyFlow.History.RevisedOn, 2000);
            Assert.AreEqual(MoneyFlowType.Incoming.Id, moneyFlow.MoneyFlowTypeId);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="moneyFlow"></param>
 /// <returns></returns>
 public Task <MoneyFlow> CreateAsync(AdditionalMoneyFlow moneyFlow)
 {
     Contract.Requires(moneyFlow != null, "The money flow must not be null.");
     return(Task.FromResult <MoneyFlow>(null));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="moneyFlow"></param>
 /// <returns></returns>
 public MoneyFlow Create(AdditionalMoneyFlow moneyFlow)
 {
     Contract.Requires(moneyFlow != null, "The money flow must not be null.");
     return(null);
 }