Esempio n. 1
0
    public async void Handle_GivenValidRegistrationDetails_ShouldSucceed()
    {
        // arrange

        // 1. We need to store the user data somehow
        var mockUserRepository = new Mock <IUserRepository>();

        mockUserRepository
        .Setup(repo => repo.Delete(It.IsAny <string>()))
        .ReturnsAsync(new DTO.GatewayResponses.Repositories.DeleteUserResponse("", true));

        // 2. The use case and star of this test
        var useCase = new DeleteUserUseCase(mockUserRepository.Object);

        // 3. The output port is the mechanism to pass response data from the use case to a Presenter
        // for final preparation to deliver back to the UI/web page/api response etc.
        var mockOutputPort = new Mock <IOutputPort <UseCaseResponseMessage> >();

        mockOutputPort.Setup(outputPort => outputPort.Handle(It.IsAny <UseCaseResponseMessage>()));

        // act

        // 4. We need a request model to carry data into the use case from the upper layer (UI, Controller etc.)
        var response = await useCase.Handle(new DeleteUserRequest("userName"), mockOutputPort.Object);

        // assert
        Assert.True(response);
        mockUserRepository.VerifyAll();
        mockOutputPort.VerifyAll();
    }
Esempio n. 2
0
        public async Task Handle_NotExistingUser_PassesFailedResultToOutputPort()
        {
            // Arrange
            var userId            = Guid.NewGuid();
            var deleteUserRequest = new DeleteUserRequest(userId);

            _userRepositoryMock
            .Setup(mock => mock.Get(userId))
            .ReturnsAsync((User)null);

            // Act
            await _deleteUserUseCase.Handle(deleteUserRequest, _outputPortMock.Object);

            // Assert
            _userRepositoryMock.Verify(mock => mock.Delete(It.IsAny <User>()), Times.Never);
            _outputPortMock.Verify(mock => mock.Handle(It.Is <Response <User> >(response => response.SuccessFul == false)), Times.Once);
            _outputPortMock.Verify(mock => mock.Handle(It.Is <Response <User> >(response => response.SuccessFul)), Times.Never);
        }