public async Task HandleAsync_Should_Throw_PreconditionFailedException_When_RowVersion_Does_Not_Match() { var cityDistrict = CityDistrict.Builder() .SetId(Guid.NewGuid()) .SetRowVersion(new byte[] { 1, 2, 4, 8, 16, 32, 64 }) .SetName("Name") .SetPolishName("PolishName") .SetCityId(Guid.NewGuid()) .SetParentId(Guid.NewGuid()) .SetNameVariants(new List <string> { "NameVariant" }) .Build(); var getCityDistrict = GetResult <CityDistrict> .Ok(cityDistrict); var command = new UpdateCityDistrictCommand(cityDistrict.Id, new byte[] { 1, 2, 4, 8, 16, 32, 128 }, "NewName", "NewPolishName", Guid.NewGuid(), Guid.NewGuid(), new Collection <string> { "NewNameVariant" }); _cityDistrictGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(getCityDistrict); Func <Task> result = async() => await _commandHandler.HandleAsync(command); await result.Should().ThrowExactlyAsync <PreconditionFailedException>(); }
public async Task HandleAsync_Should_Throw_ConflictException_When_Name_And_PolishName_Are_Already_Used() { var cityDistrict = CityDistrict.Builder() .SetId(Guid.NewGuid()) .SetRowVersion(Array.Empty <byte>()) .SetName("Name") .SetPolishName("PolishName") .SetCityId(Guid.NewGuid()) .SetParentId(Guid.NewGuid()) .SetNameVariants(new List <string> { "NameVariant" }) .Build(); var getCityDistrict = GetResult <CityDistrict> .Ok(cityDistrict); var city = City.Builder() .SetId(Guid.NewGuid()) .SetRowVersion(Array.Empty <byte>()) .SetName("Name") .SetPolishName("PolishName") .SetStateId(Guid.NewGuid()) .Build(); var getCityResult = GetResult <City> .Ok(city); var parentExistsVerificationResult = VerificationResult.Ok(); var nameIsNotTakenError = new Error(CityDistrictErrorCodeEnumeration.NameAlreadyInUse, CityDistrictErrorMessage.NameAlreadyInUse); var nameIsNotTakenVerificationResult = VerificationResult.Fail(new Collection <IError> { nameIsNotTakenError }); var polishNameIsNotTakenError = new Error(CityDistrictErrorCodeEnumeration.PolishNameAlreadyInUse, CityDistrictErrorMessage.PolishNameAlreadyInUse); var polishNameIsNotTakenVerificationResult = VerificationResult.Fail(new Collection <IError> { polishNameIsNotTakenError }); var command = new UpdateCityDistrictCommand(cityDistrict.Id, cityDistrict.RowVersion, "NewName", "NewPolishName", city.Id, Guid.NewGuid(), new Collection <string> { "NewNameVariant" }); var errors = new Collection <IError> { nameIsNotTakenError, polishNameIsNotTakenError }; _cityDistrictGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(getCityDistrict); _cityGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getCityResult); _cityDistrictVerificationServiceMock.Setup(x => x.VerifyParentExistsAsync(It.IsAny <Guid>())) .ReturnsAsync(parentExistsVerificationResult); _cityDistrictVerificationServiceMock .Setup(x => x.VerifyNameIsNotTakenAsync(It.IsAny <string>(), It.IsAny <Guid>())) .ReturnsAsync(nameIsNotTakenVerificationResult); _cityDistrictVerificationServiceMock .Setup(x => x.VerifyPolishNameIsNotTakenAsync(It.IsAny <string>(), It.IsAny <Guid>())) .ReturnsAsync(polishNameIsNotTakenVerificationResult); Func <Task> result = async() => await _commandHandler.HandleAsync(command); var exceptionResult = await result.Should().ThrowExactlyAsync <ConflictException>(); exceptionResult.And.Errors.Should().BeEquivalentTo(errors); }
public async Task UpdateCityDistrictAsync_Should_Return_OkObjectResult_With_CityDistrictResponse() { var rowVersion = new byte[] { 1, 2, 4, 8, 16, 32, 64 }; var cityDistrictId = Guid.NewGuid(); var updateCityDistrictRequest = new UpdateCityDistrictRequest { Id = cityDistrictId, Name = "Name", PolishName = "PolishName", CityId = Guid.NewGuid(), ParentId = Guid.NewGuid(), NameVariants = new List <string> { "NameVariant" } }; var updateCityDistrictCommand = new UpdateCityDistrictCommand(updateCityDistrictRequest.Id, rowVersion, updateCityDistrictRequest.Name, updateCityDistrictRequest.PolishName, updateCityDistrictRequest.CityId, updateCityDistrictRequest.ParentId, updateCityDistrictRequest.NameVariants); var cityDistrictOutputQuery = new CityDistrictOutputQuery(updateCityDistrictCommand.CityDistrictId, new byte[] { 1, 2, 4, 8, 16, 32, 128 }, updateCityDistrictCommand.Name, updateCityDistrictCommand.PolishName, updateCityDistrictCommand.CityId, updateCityDistrictCommand.ParentId, updateCityDistrictCommand.NameVariants); var cityDistrictResponse = new CityDistrictResponse(cityDistrictOutputQuery.Id, cityDistrictOutputQuery.RowVersion, cityDistrictOutputQuery.Name, cityDistrictOutputQuery.PolishName, cityDistrictOutputQuery.CityId, cityDistrictOutputQuery.ParentId, cityDistrictOutputQuery.NameVariants); _mapperMock.Setup(x => x.Map <UpdateCityDistrictRequest, UpdateCityDistrictCommand>(It.IsAny <UpdateCityDistrictRequest>())) .Returns(updateCityDistrictCommand); _communicationBusMock.Setup(x => x.SendCommandAsync(It.IsAny <UpdateCityDistrictCommand>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask); _getCityDistrictQueryHandlerMock .Setup(x => x.HandleAsync(It.IsAny <GetCityDistrictInputQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(cityDistrictOutputQuery); _mapperMock.Setup(x => x.Map <CityDistrictOutputQuery, CityDistrictResponse>(It.IsAny <CityDistrictOutputQuery>())).Returns(cityDistrictResponse); var result = await _controller.UpdateCityDistrictAsync(cityDistrictId, updateCityDistrictRequest, rowVersion); var okObjectResult = result.As <OkObjectResult>(); okObjectResult.Value.Should().BeEquivalentTo(cityDistrictResponse); }
public async Task HandleAsync_Should_Update_CityDistrict() { var cityDistrict = CityDistrict.Builder() .SetId(Guid.NewGuid()) .SetRowVersion(Array.Empty <byte>()) .SetName("Name") .SetPolishName("PolishName") .SetCityId(Guid.NewGuid()) .SetParentId(Guid.NewGuid()) .SetNameVariants(new List <string> { "NameVariant" }) .Build(); var getCityDistrict = GetResult <CityDistrict> .Ok(cityDistrict); var city = City.Builder() .SetId(Guid.NewGuid()) .SetRowVersion(Array.Empty <byte>()) .SetName("Name") .SetPolishName("PolishName") .SetStateId(Guid.NewGuid()) .Build(); var getCityResult = GetResult <City> .Ok(city); var parentExistsVerificationResult = VerificationResult.Ok(); var nameIsNotTakenVerificationResult = VerificationResult.Ok(); var polishNameIsNotTakenVerificationResult = VerificationResult.Ok(); var command = new UpdateCityDistrictCommand(cityDistrict.Id, cityDistrict.RowVersion, "NewName", "NewPolishName", city.Id, Guid.NewGuid(), new Collection <string> { "NewNameVariant" }); _cityDistrictGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(getCityDistrict); _cityGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getCityResult); _cityDistrictVerificationServiceMock.Setup(x => x.VerifyParentExistsAsync(It.IsAny <Guid>())) .ReturnsAsync(parentExistsVerificationResult); _cityDistrictVerificationServiceMock .Setup(x => x.VerifyNameIsNotTakenAsync(It.IsAny <string>(), It.IsAny <Guid>())) .ReturnsAsync(nameIsNotTakenVerificationResult); _cityDistrictVerificationServiceMock .Setup(x => x.VerifyPolishNameIsNotTakenAsync(It.IsAny <string>(), It.IsAny <Guid>())) .ReturnsAsync(polishNameIsNotTakenVerificationResult); _cityDistrictRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <CityDistrict>())).Returns(Task.CompletedTask); Func <Task> result = async() => await _commandHandler.HandleAsync(command); await result.Should().NotThrowAsync <Exception>(); }
public async Task HandleAsync_Should_Throw_ResourceNotFoundException_When_CityDistrict_Is_Not_Found() { var errors = new Collection <IError> { new Error(CityDistrictErrorCodeEnumeration.NotFound, CityDistrictErrorMessage.NotFound) }; var getCityDistrict = GetResult <CityDistrict> .Fail(errors); var command = new UpdateCityDistrictCommand(Guid.NewGuid(), Array.Empty <byte>(), "Name", "PolishName", Guid.NewGuid(), Guid.NewGuid(), new Collection <string> { "NameVariant" }); _cityDistrictGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(getCityDistrict); Func <Task> result = async() => await _commandHandler.HandleAsync(command); var exceptionResult = await result.Should().ThrowExactlyAsync <ResourceNotFoundException>(); exceptionResult.And.Errors.Should().BeEquivalentTo(errors); }
public async Task HandleAsync_Should_Throw_ValidationException_When_City_Is_Not_Found() { var cityDistrict = CityDistrict.Builder() .SetId(Guid.NewGuid()) .SetRowVersion(Array.Empty <byte>()) .SetName("Name") .SetPolishName("PolishName") .SetCityId(Guid.NewGuid()) .SetParentId(Guid.NewGuid()) .SetNameVariants(new List <string> { "NameVariant" }) .Build(); var getCityDistrict = GetResult <CityDistrict> .Ok(cityDistrict); var errors = new Collection <IError> { new Error(CityErrorCodeEnumeration.NotFound, CityErrorMessage.NotFound) }; var getCityResult = GetResult <City> .Fail(errors); var command = new UpdateCityDistrictCommand(cityDistrict.Id, cityDistrict.RowVersion, "NewName", "NewPolishName", Guid.NewGuid(), Guid.NewGuid(), new Collection <string> { "NewNameVariant" }); _cityDistrictGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(getCityDistrict); _cityGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())).ReturnsAsync(getCityResult); Func <Task> result = async() => await _commandHandler.HandleAsync(command); var exceptionResult = await result.Should().ThrowExactlyAsync <ValidationException>(); exceptionResult.And.Errors.Should().BeEquivalentTo(errors); }