public async Task <CinemaApp.Domain.Visitor> InsertAsync(VisitorUpdateModel visitor) { var result = await this.Context.AddAsync(this.Mapper.Map <Visitor>(visitor)); await this.Context.SaveChangesAsync(); return(this.Mapper.Map <CinemaApp.Domain.Visitor>(result.Entity)); }
public async Task <CinemaApp.Domain.Visitor> UpdateAsync(VisitorUpdateModel visitor) { var existing = await this.Get(visitor); var result = this.Mapper.Map(visitor, existing); this.Context.Update(result); await this.Context.SaveChangesAsync(); return(this.Mapper.Map <CinemaApp.Domain.Visitor>(result)); }
public async Task CreateAsync_VisitorValidationSucceed_CreatesVisitor() { // Arrange var visitor = new VisitorUpdateModel(); var expected = new Visitor(); var loyaltycardService = new Mock <ILoyaltyCardService>(); loyaltycardService.Setup(x => x.ValidateAsync(visitor)); var visitorDAL = new Mock <IVisitorDAL>(); visitorDAL.Setup(x => x.InsertAsync(visitor)).ReturnsAsync(expected); var visitorService = new VisitorService(visitorDAL.Object, loyaltycardService.Object); // Act var result = await visitorService.CreateAsync(visitor); // Assert result.Should().Be(expected); }
public async Task CreateAsync_VisitorValidationFailed_ThrowsError() { // Arrange var fixture = new Fixture(); var visitor = new VisitorUpdateModel(); var expected = fixture.Create <string>(); var loyaltycardService = new Mock <ILoyaltyCardService>(); loyaltycardService .Setup(x => x.ValidateAsync(visitor)) .Throws(new InvalidOperationException(expected)); var visitorDAL = new Mock <IVisitorDAL>(); var visitorService = new VisitorService(visitorDAL.Object, loyaltycardService.Object); var action = new Func <Task>(() => visitorService.CreateAsync(visitor)); // Assert await action.Should().ThrowAsync <InvalidOperationException>().WithMessage(expected); visitorDAL.Verify(x => x.InsertAsync(visitor), Times.Never); }
public async Task <Visitor> UpdateAsync(VisitorUpdateModel visitor) { await this.LoyaltyCardService.ValidateAsync(visitor); return(await this.VisitorDAL.UpdateAsync(visitor)); }