public async Task When_adding_card_details() { using (var uow = new CardDetailsContext(_options)) { //arrange var cardDetails = new AccountCardDetails( Guid.NewGuid(), "Jack TOrrance", "4104231121998973", "517", "3 Kennebunkport Avenue", "OH"); var repository = new AccountCardDetailsRepositoryAsync(new EFUnitOfWork(uow)); //act await repository.AddAsync(cardDetails); var savedRecord = await repository.GetAsync(cardDetails.AccountId); //assert Assert.That(savedRecord.AccountId, Is.EqualTo(cardDetails.AccountId)); Assert.That(savedRecord.Name, Is.EqualTo(cardDetails.Name)); Assert.That(savedRecord.CardNumber, Is.EqualTo(cardDetails.CardNumber)); Assert.That(savedRecord.CardSecurityCode, Is.EqualTo(cardDetails.CardSecurityCode)); Assert.That(savedRecord.FirstLineOfAddress, Is.EqualTo(cardDetails.FirstLineOfAddress)); Assert.That(savedRecord.ZipCode, Is.EqualTo(cardDetails.ZipCode)); } }
public async Task HandleAsync(UpsertAccountEvent @event, CancellationToken cancellationToken = new CancellationToken()) { using (var uow = new CardDetailsContext(_options)) { var billingAddress = @event.Addresses.FirstOrDefault(addr => addr.AddressType == "Billing"); if (billingAddress == null) { throw new ArgumentException("Must have a billing address", "@event"); } var repository = new AccountCardDetailsRepositoryAsync(new EFUnitOfWork(uow)); var cardDetails = new AccountCardDetails( accountId: Guid.Parse(@event.AccountId), name: @event.Name.FirstName + " " + @event.Name.LastName, cardNumber: @event.CardDetails.CardNumber, cardSecurityCode: @event.CardDetails.CardSecurityCode, firstLineOfAddress: billingAddress.FistLineOfAddress, zipCode: billingAddress.ZipCode ); cardDetails.Version = @event.Version; await repository.UpsertAsync(cardDetails); } }
public async Task When_updating_an_account() { using (var uow = new CardDetailsContext(_options)) { //arrange var cardDetails = new AccountCardDetails( accountId: Guid.NewGuid(), name: "Jack Torrance", cardNumber: "4104231121998973", cardSecurityCode: "517", firstLineOfAddress: "Overlook Hotel", zipCode: "40125" ); var repository = new AccountCardDetailsRepositoryAsync(new EFUnitOfWork(uow)); await repository.AddAsync(cardDetails); var @event = new UpsertAccountEvent() { AccountId = cardDetails.AccountId.ToString(), Name = new Name { FirstName = "Charles", LastName = "Grady" }, Addresses = new List <Address> { new Address { FistLineOfAddress = "Overlook Hotel", AddressType = "Billing", State = "CO", ZipCode = "80517" } }, ContactDetails = new ContactDetails { Email = "*****@*****.**", TelephoneNumber = "666-6666" }, CardDetails = new CardDetails { CardNumber = "4172097052597788", CardSecurityCode = "459" }, Version = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 } }; var handler = new UpsertAccountEventHandler(_options); //act await handler.HandleAsync(@event); var accountCardDetails = await repository.GetAsync(Guid.Parse(@event.AccountId)); //assert Assert.That(accountCardDetails.AccountId, Is.EqualTo(Guid.Parse(@event.AccountId))); Assert.That(accountCardDetails.Name, Is.EqualTo(@event.Name.FirstName + " " + @event.Name.LastName)); var sourceAddress = @event.Addresses.First(addr => addr.AddressType == "Billing"); Assert.That(accountCardDetails.FirstLineOfAddress, Is.EqualTo(sourceAddress.FistLineOfAddress)); Assert.That(accountCardDetails.ZipCode, Is.EqualTo(sourceAddress.ZipCode)); } }
private static void EnsureDatabaseCreated(IServiceProvider serviceProvider) { var contextOptions = serviceProvider.GetService <DbContextOptions <CardDetailsContext> >(); using (var context = new CardDetailsContext(contextOptions)) { context.Database.EnsureCreated(); } }
public void Initialise() { _options = new DbContextOptionsBuilder <CardDetailsContext>() .UseMySql("Server=localhost;Uid=root;Pwd=root;Database=CardDetails") .Options; using (var context = new CardDetailsContext(_options)) { context.Database.EnsureCreated(); } }
public async Task When_adding_an_account() { using (var uow = new CardDetailsContext(_options)) { //arrange var handler = new UpsertAccountEventHandler(_options); var @event = new UpsertAccountEvent() { AccountId = Guid.NewGuid().ToString(), Name = new Name { FirstName = "Jack", LastName = "Torrance" }, Addresses = new List <Address> { new Address { FistLineOfAddress = "Overlook Hotel", AddressType = "Billing", State = "CO", ZipCode = "80517" }, new Address { FistLineOfAddress = "3 Kennebunkport Avenue", AddressType = "Home", State = "MN", ZipCode = "40125" } }, ContactDetails = new ContactDetails { Email = "*****@*****.**", TelephoneNumber = "666-6666" }, CardDetails = new CardDetails { CardNumber = "4104231121998973", CardSecurityCode = "517" }, Version = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 } }; //act await handler.HandleAsync(@event); var repository = new AccountCardDetailsRepositoryAsync(new EFUnitOfWork(uow)); var accountCardDetails = await repository.GetAsync(Guid.Parse(@event.AccountId)); //assert Assert.That(accountCardDetails.AccountId, Is.EqualTo(Guid.Parse(@event.AccountId))); Assert.That(accountCardDetails.Name, Is.EqualTo(@event.Name.FirstName + " " + @event.Name.LastName)); var sourceAddress = @event.Addresses.First(addr => addr.AddressType == "Billing"); Assert.That(accountCardDetails.FirstLineOfAddress, Is.EqualTo(sourceAddress.FistLineOfAddress)); Assert.That(accountCardDetails.ZipCode, Is.EqualTo(sourceAddress.ZipCode)); } }
public override GuestRoomBookingMade Handle(GuestRoomBookingMade @event) { AccountCardDetails cardDetails; using (var uow = new CardDetailsContext(_options)) { var repo = new AccountCardDetailsRepositoryAsync(new EFUnitOfWork(uow)); cardDetails = repo.GetAsync(Guid.Parse(@event.AccountId)).GetAwaiter().GetResult(); if (cardDetails == null) { _logger.LogError("Unable to find card details for account: {0}", @event.AccountId); throw new InvalidOperationException( $"Unable to find card details for account {cardDetails.AccountId}"); } } TakePayment(cardDetails); return(base.Handle(@event)); }