示例#1
0
        public async Task CreateStateAsync_Should_Return_CreatedAtRouteResult_With_StateResponse()
        {
            var createStateRequest = new CreateStateRequest {
                Name = "Name", PolishName = "PolishName"
            };
            var createStateCommand = new CreateStateCommand(Guid.NewGuid(), createStateRequest.Name, createStateRequest.PolishName);
            var stateOutputQuery   = new StateOutputQuery(createStateCommand.StateId, Array.Empty <byte>(), createStateCommand.Name,
                                                          createStateCommand.PolishName);
            var stateResponse = new StateResponse(stateOutputQuery.Id, stateOutputQuery.RowVersion, stateOutputQuery.Name, stateOutputQuery.PolishName);

            _mapperMock.Setup(x => x.Map <CreateStateRequest, CreateStateCommand>(It.IsAny <CreateStateRequest>())).Returns(createStateCommand);
            _communicationBusMock.Setup(x => x.SendCommandAsync(It.IsAny <CreateStateCommand>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);
            _getStateQueryHandlerMock
            .Setup(x => x.HandleAsync(It.IsAny <GetStateInputQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(stateOutputQuery);
            _mapperMock.Setup(x => x.Map <StateOutputQuery, StateResponse>(It.IsAny <StateOutputQuery>())).Returns(stateResponse);

            var result = await _controller.CreateStateAsync(createStateRequest);

            var createdAtRouteResult = result.As <CreatedAtRouteResult>();

            createdAtRouteResult.Value.Should().BeEquivalentTo(stateResponse);
            createdAtRouteResult.RouteName.Should().BeEquivalentTo("GetState");
            createdAtRouteResult.RouteValues.Should().BeEquivalentTo(new RouteValueDictionary(new { id = stateResponse.Id }));
        }
示例#2
0
        public async Task HandleAsync_Should_Throw_ConflictException_When_Name_And_PolishName_Are_Already_Used()
        {
            var command                          = new CreateStateCommand(Guid.NewGuid(), "Name", "PolishName");
            var duplicateNameError               = new Error(StateErrorCodeEnumeration.NameAlreadyInUse, StateErrorMessage.NameAlreadyInUse);
            var duplicatePolishNameError         = new Error(StateErrorCodeEnumeration.PolishNameAlreadyInUse, StateErrorMessage.PolishNameAlreadyInUse);
            var nameIsNotTakenVerificationResult = VerificationResult.Fail(new Collection <IError> {
                duplicateNameError
            });
            var polishNameIsNotTakenVerificationResult = VerificationResult.Fail(new Collection <IError> {
                duplicatePolishNameError
            });
            var errors = new Collection <IError> {
                duplicateNameError, duplicatePolishNameError
            };

            _stateVerificationServiceMock.Setup(x => x.VerifyNameIsNotTakenAsync(It.IsAny <string>()))
            .ReturnsAsync(nameIsNotTakenVerificationResult);
            _stateVerificationServiceMock.Setup(x => x.VerifyPolishNameIsNotTakenAsync(It.IsAny <string>()))
            .ReturnsAsync(polishNameIsNotTakenVerificationResult);

            Func <Task> result = async() => await _commandHandler.HandleAsync(command);

            var exceptionResult = await result.Should().ThrowExactlyAsync <ConflictException>();

            exceptionResult.And.Errors.Should().BeEquivalentTo(errors);
        }
示例#3
0
        /// <inheritdoc cref="ICommandHandler" />
        bool ICommandHandler.CreateState(string stateId, string desc, string defaultValue)
        {
            if (string.IsNullOrWhiteSpace(stateId) ||
                string.IsNullOrWhiteSpace(desc))
            {
                return(false);
            }

            var command = new CreateStateCommand(stateId, desc, defaultValue);

            return(SendCommand(command));
        }
示例#4
0
        public async Task HandleAsync_Should_Create_State()
        {
            var command = new CreateStateCommand(Guid.NewGuid(), "Name", "PolishName");
            var state   = State.Builder()
                          .SetId(command.StateId)
                          .SetRowVersion(Array.Empty <byte>())
                          .SetName(command.Name)
                          .SetPolishName(command.PolishName)
                          .Build();
            var nameIsNotTakenVerificationResult       = VerificationResult.Ok();
            var polishNameIsNotTakenVerificationResult = VerificationResult.Ok();

            _stateVerificationServiceMock.Setup(x => x.VerifyNameIsNotTakenAsync(It.IsAny <string>()))
            .ReturnsAsync(nameIsNotTakenVerificationResult);
            _stateVerificationServiceMock.Setup(x => x.VerifyPolishNameIsNotTakenAsync(It.IsAny <string>()))
            .ReturnsAsync(polishNameIsNotTakenVerificationResult);
            _mapperMock.Setup(x => x.Map <CreateStateCommand, State>(It.IsAny <CreateStateCommand>())).Returns(state);
            _stateRepositoryMock.Setup(x => x.AddAsync(It.IsAny <State>())).Returns(Task.CompletedTask);

            Func <Task> result = async() => await _commandHandler.HandleAsync(command);

            await result.Should().NotThrowAsync <Exception>();
        }