public void TestUpdateAddPromotionWithMessageOk() { //SETUP var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using (var context = new EfCoreContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); //ATTEMPT var utData = context.SetupSingleDtoAndEntities <AddRemovePromotionDto>(); var service = new CrudServices(context, utData.Wrapped); //ATTEMPT var dto = new AddRemovePromotionDto { BookId = 1, ActualPrice = 1, PromotionalText = "Really Cheap!" }; service.UpdateAndSave(dto, nameof(Book.AddPromotion)); //VERIFY service.IsValid.ShouldBeTrue(service.GetAllErrors()); service.Message.ShouldEqual("The book's new price is $1.00."); } }
public void TestAddPromotionBookWithError() { //SETUP var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using (var context = new EfCoreContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); } using (var context = new EfCoreContext(options)) { var utData = context.SetupSingleDtoAndEntities <AddRemovePromotionDto>(); var service = new CrudServices(context, utData.Wrapped); //ATTEMPT var dto = new AddRemovePromotionDto { BookId = 1, PromotionalText = "" }; service.UpdateAndSave(dto); //VERIFY service.IsValid.ShouldBeFalse(); service.Errors.Single().ToString().ShouldEqual("You must provide some text to go with the promotion."); } }
public void TestRemovePromotionBookOk() { //SETUP var options = SqliteInMemory.CreateOptions <EfCoreContext>(); using (var context = new EfCoreContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); } using (var context = new EfCoreContext(options)) { var utData = context.SetupSingleDtoAndEntities <AddRemovePromotionDto>(); var service = new CrudServices(context, utData.Wrapped); var dto = new AddRemovePromotionDto { BookId = 1, ActualPrice = 20, PromotionalText = "Half price today!" }; service.UpdateAndSave(dto); var book1 = context.Find <Book>(1); //ATTEMPT service.UpdateAndSave(dto, nameof(Book.RemovePromotion)); //VERIFY service.IsValid.ShouldBeTrue(service.GetAllErrors()); var book = context.Find <Book>(1); book.ActualPrice.ShouldEqual(40); } }
public void OnGet(int id) { Data = _service.ReadSingle <AddRemovePromotionDto>(id); if (!_service.IsValid) { _service.CopyErrorsToModelState(ModelState, Data, nameof(Data)); } }
public IActionResult RemovePromotion(AddRemovePromotionDto dto, [FromServices] IAddRemovePromotionService service) { service.RemovePromotion(dto.BookId); if (service.Status.HasErrors) { SetupTraceInfo(); } return(View("BookUpdated", "Successfully removed a promotion")); }
public IActionResult AddPromotion(AddRemovePromotionDto dto, [FromServices] IAddRemovePromotionService service) { if (!ModelState.IsValid) { return(View(dto)); } service.AddPromotion(dto); if (service.Status.HasErrors) { service.Status.CopyErrorsToModelState(ModelState, dto); return(View(dto)); } SetupTraceInfo(); return(View("BookUpdated", "Successfully added/changed a promotion")); }
public Book AddPromotion(AddRemovePromotionDto dto) { var book = _context.Find <Book>(dto.BookId); if (book == null) { throw new InvalidOperationException($"Could not find the book with Id of {dto.BookId}."); } Status = book.AddPromotion(dto.ActualPrice, dto.PromotionalText); if (Status.HasErrors) { return(null); } _context.SaveChanges(); return(book); }
public IActionResult RemovePromotion(AddRemovePromotionDto dto, [FromServices] ICrudServices service) { if (!ModelState.IsValid) { return(View(dto)); } service.UpdateAndSave(dto, nameof(Book.RemovePromotion)); SetupTraceInfo(); if (service.IsValid) { return(View("BookUpdated", service.Message)); } //Error state service.CopyErrorsToModelState(ModelState, dto); return(View(dto)); }
public Book AddPromotion(AddRemovePromotionDto dto) { var book = _context.Find <Book>(dto.BookId); if (book == null) { AddError("Sorry, I could not find the book you were looking for."); return(null); } CombineStatuses(book.AddPromotion(dto.ActualPrice, dto.PromotionalText)); if (!IsValid) { return(null); } _context.SaveChanges(); return(book); }
public void AddPromotion(AddRemovePromotionDto dto) { _service.UpdateAndSave(dto); }