public void GivenOwnCreditCard_WhenDeriving_ThenCreditCardRelationMustExist() { var creditCard = new CreditCardBuilder(this.Session) .WithCardNumber("4012888888881881") .WithExpirationYear(this.Session.Now().Year + 1) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.Session).WithName("Visa").Build()) .Build(); this.Session.Commit(); var builder = new OwnCreditCardBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithCreditCard(creditCard); builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenOwnCreditCardForSingleton_WhenDeriving_ThenExpiredCardIsBlocked() { var creditCard = new CreditCardBuilder(this.Session) .WithCardNumber("4012888888881881") .WithExpirationYear(this.Session.Now().Year + 1) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.Session).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.Session) .WithCreditCard(creditCard) .Build(); this.InternalOrganisation.AddPaymentMethod(paymentMethod); this.Session.Derive(); Assert.True(paymentMethod.IsActive); creditCard.ExpirationYear = this.Session.Now().Year; creditCard.ExpirationMonth = this.Session.Now().Month; this.Session.Derive(); Assert.False(paymentMethod.IsActive); }
public void GivenOwnCreditCardForInternalOrganisationThatDoesAccounting_WhenDeriving_ThenCreditorIsRequired() { var creditCard = new CreditCardBuilder(this.DatabaseSession) .WithCardNumber("4012888888881881") .WithExpirationYear(2016) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.DatabaseSession).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.DatabaseSession) .WithCreditCard(creditCard) .Build(); var internalOrganisation = Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation; internalOrganisation.RemovePaymentMethods(); internalOrganisation.AddPaymentMethod(paymentMethod); internalOrganisation.DoAccounting = false; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); internalOrganisation.DoAccounting = true; Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); }
public void GivenOwnCreditCard_WhenDeriving_ThenGeneralLedgerAccountAndJournalAtMostOne() { this.InternalOrganisation.DoAccounting = true; this.Session.Derive(); var generalLedgerAccount = new GeneralLedgerAccountBuilder(this.Session) .WithAccountNumber("0001") .WithName("GeneralLedgerAccount") .WithBalanceSheetAccount(true) .Build(); var internalOrganisationGlAccount = new OrganisationGlAccountBuilder(this.Session) .WithGeneralLedgerAccount(generalLedgerAccount) .Build(); var journal = new JournalBuilder(this.Session).WithDescription("journal").Build(); var creditCard = new CreditCardBuilder(this.Session) .WithCardNumber("4012888888881881") .WithExpirationYear(this.Session.Now().Year + 1) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.Session).WithName("Visa").Build()) .Build(); var collectionMethod = new OwnCreditCardBuilder(this.Session) .WithCreditCard(creditCard) .WithGeneralLedgerAccount(internalOrganisationGlAccount) .Build(); ((OrganisationDerivedRoles)this.InternalOrganisation).AddActiveCollectionMethod(collectionMethod); this.Session.Commit(); var internalOrganisation = this.InternalOrganisation; internalOrganisation.DoAccounting = true; internalOrganisation.DefaultCollectionMethod = collectionMethod; Assert.False(this.Session.Derive(false).HasErrors); collectionMethod.Journal = journal; Assert.True(this.Session.Derive(false).HasErrors); collectionMethod.RemoveGeneralLedgerAccount(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenOwnCreditCardForSingletonThatDoesAccounting_WhenDeriving_ThenEitherGeneralLedgerAccountOrJournalMustExist() { this.InternalOrganisation.DoAccounting = true; this.Session.Derive(); var generalLedgerAccount = new GeneralLedgerAccountBuilder(this.Session) .WithAccountNumber("0001") .WithName("GeneralLedgerAccount") .WithBalanceSheetAccount(true) .Build(); var internalOrganisationGlAccount = new OrganisationGlAccountBuilder(this.Session) .WithGeneralLedgerAccount(generalLedgerAccount) .Build(); var journal = new JournalBuilder(this.Session).WithDescription("journal").Build(); var creditCard = new CreditCardBuilder(this.Session) .WithCardNumber("4012888888881881") .WithExpirationYear(this.Session.Now().Year + 1) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.Session).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.Session) .WithCreditCard(creditCard) .Build(); this.InternalOrganisation.AddPaymentMethod(paymentMethod); Assert.True(this.Session.Derive(false).HasErrors); paymentMethod.Journal = journal; Assert.False(this.Session.Derive(false).HasErrors); paymentMethod.RemoveJournal(); paymentMethod.GeneralLedgerAccount = internalOrganisationGlAccount; Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenOwnCreditCard_WhenBuild_ThenPostBuildRelationsMustExist() { var creditCard = new CreditCardBuilder(this.Session) .WithCardNumber("4012888888881881") .WithExpirationYear(this.Session.Now().Year + 1) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.Session).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.Session) .WithCreditCard(creditCard) .Build(); this.InternalOrganisation.AddPaymentMethod(paymentMethod); this.Session.Derive(); Assert.True(paymentMethod.IsActive); }
public void GivenOwnCreditCardForInternalOrganisationThatDoesAccounting_WhenDeriving_ThenEitherGeneralLedgerAccountOrJournalMustExist() { var supplier = new OrganisationBuilder(this.DatabaseSession) .WithName("supplier") .WithLocale(new Locales(this.DatabaseSession).EnglishGreatBritain) .Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); var supplierRelationship = new SupplierRelationshipBuilder(this.DatabaseSession) .WithSupplier(supplier) .WithInternalOrganisation(internalOrganisation) .WithFromDate(DateTime.UtcNow) .Build(); var generalLedgerAccount = new GeneralLedgerAccountBuilder(this.DatabaseSession) .WithAccountNumber("0001") .WithName("GeneralLedgerAccount") .WithBalanceSheetAccount(true) .Build(); var internalOrganisationGlAccount = new OrganisationGlAccountBuilder(this.DatabaseSession) .WithInternalOrganisation(internalOrganisation) .WithGeneralLedgerAccount(generalLedgerAccount) .Build(); var journal = new JournalBuilder(this.DatabaseSession).WithDescription("journal").Build(); var creditCard = new CreditCardBuilder(this.DatabaseSession) .WithCardNumber("4012888888881881") .WithExpirationYear(2016) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.DatabaseSession).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.DatabaseSession) .WithCreditCard(creditCard) .WithCreditor(supplierRelationship) .Build(); this.DatabaseSession.Commit(); internalOrganisation.RemovePaymentMethods(); internalOrganisation.AddPaymentMethod(paymentMethod); internalOrganisation.DoAccounting = true; Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); paymentMethod.Journal = journal; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); paymentMethod.RemoveJournal(); paymentMethod.GeneralLedgerAccount = internalOrganisationGlAccount; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenOwnCreditCard_WhenDeriving_ThenCreditCardRelationMustExist() { var creditCard = new CreditCardBuilder(this.DatabaseSession) .WithCardNumber("4012888888881881") .WithExpirationYear(2016) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.DatabaseSession).WithName("Visa").Build()) .Build(); this.DatabaseSession.Commit(); var builder = new OwnCreditCardBuilder(this.DatabaseSession); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithCreditCard(creditCard); builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenOwnCreditCard_WhenBuild_ThenPostBuildRelationsMustExist() { var creditCard = new CreditCardBuilder(this.DatabaseSession) .WithCardNumber("4012888888881881") .WithExpirationYear(2016) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.DatabaseSession).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.DatabaseSession) .WithCreditCard(creditCard) .Build(); this.DatabaseSession.Derive(true); Assert.IsTrue(paymentMethod.IsActive); }
public void GivenOwnCreditCardForInternalOrganisationThatDoesAccounting_WhenDeriving_ThenExpiredCardIsBlocked() { var creditCard = new CreditCardBuilder(this.DatabaseSession) .WithCardNumber("4012888888881881") .WithExpirationYear(2016) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.DatabaseSession).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.DatabaseSession) .WithCreditCard(creditCard) .Build(); var internalOrganisation = Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation; internalOrganisation.AddPaymentMethod(paymentMethod); this.DatabaseSession.Derive(true); Assert.IsTrue(paymentMethod.IsActive); creditCard.ExpirationYear = DateTime.UtcNow.Year; creditCard.ExpirationMonth = DateTime.UtcNow.Month; this.DatabaseSession.Derive(true); Assert.IsFalse(paymentMethod.IsActive); }