public async Task <IActionResult> Put(int id, UpdatePrinterCommand command) { if (id != command.Id) { return(BadRequest()); } return(Ok(await Mediator.Send(command))); }
public async Task GivenCommand_AndPrinterNotExists_WhenHandled_ThenDtoMappedToDomain_AndStorageUpdateCalled_AndErrorResponseReturned() { // Arrange var mockDataStorage = new Mock <IDataStorageService <Domain.Models.Printer> >(); var mockMapper = new Mock <IMapper>(); var mockStringLocalizerFactory = new Mock <IStringLocalizerFactory>(); var mockStringLocalizer = new Mock <IStringLocalizer>(); mockStringLocalizerFactory.Setup(x => x.Create( It.IsAny <string>(), It.IsAny <string>())) .Returns(mockStringLocalizer.Object); var sut = new UpdatePrinterCommandHandler( mockDataStorage.Object, mockMapper.Object, mockStringLocalizerFactory.Object); var command = new UpdatePrinterCommand { Id = ObjectId.GenerateNewId().ToString(), Printer = new Dto.Request.Printer() }; var printerDomain = new Domain.Models.Printer(); mockMapper.Setup(x => x.Map <Domain.Models.Printer>( It.IsAny <Dto.Request.Printer>())).Returns(printerDomain); mockDataStorage.Setup(x => x.Update( It.IsAny <string>(), It.IsAny <Domain.Models.Printer>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new ReplaceOneResult.Acknowledged( 0, null, null)); mockStringLocalizer.SetupGet(x => x["PrinterNotFound", It.IsAny <string>()]).Returns(new LocalizedString("PrinterNotFound", $"{command.Id}")); // Act var result = await sut.Handle( command, CancellationToken.None); // Assert mockMapper.Verify(x => x.Map <Domain.Models.Printer>( It.Is <Dto.Request.Printer>(y => y == command.Printer)), Times.Once); mockDataStorage.Verify(x => x.Update( It.Is <string>(y => y == command.Id), It.Is <Domain.Models.Printer>(y => y == printerDomain), It.IsAny <CancellationToken>()), Times.Once); Assert.NotNull(result.Error); Assert.Equal(HttpStatusCode.NotFound, result.Error.HttpStatusCode); Assert.Contains(command.Id, result.Error.Message); }
public async Task GivenCommand_AndPrinterExists_WhenHandled_ThenDtoMappedToDomain_AndStorageUpdateCalled_AndResponseReturned() { // Arrange var mockDataStorage = new Mock <IDataStorageService <Domain.Models.Printer> >(); var mockMapper = new Mock <IMapper>(); var sut = new UpdatePrinterCommandHandler( mockDataStorage.Object, mockMapper.Object, Mock.Of <IStringLocalizerFactory>()); var command = new UpdatePrinterCommand { Id = ObjectId.GenerateNewId().ToString(), Printer = new Dto.Request.Printer() }; var printerDomain = new Domain.Models.Printer(); mockMapper.Setup(x => x.Map <Domain.Models.Printer>( It.IsAny <Dto.Request.Printer>())).Returns(printerDomain); mockDataStorage.Setup(x => x.Update( It.IsAny <string>(), It.IsAny <Domain.Models.Printer>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new ReplaceOneResult.Acknowledged( 1, 1, null)); // Act var response = await sut.Handle( command, CancellationToken.None); // Assert mockMapper.Verify(x => x.Map <Domain.Models.Printer>( It.Is <Dto.Request.Printer>(y => y == command.Printer)), Times.Once); mockDataStorage.Verify(x => x.Update( It.Is <string>(y => y == command.Id), It.Is <Domain.Models.Printer>(y => y == printerDomain), It.IsAny <CancellationToken>()), Times.Once); Assert.Null(response.Error); }