Exemplo n.º 1
0
        public async Task HandleAsync_WhenPollDoesNotExist_ShouldLogInformation()
        {
            // Arrange
            const int    pollId             = 1;
            const string expectedLogMessage = "Cannot retrieve a poll with {@id}";

            IPollGateway pollGatewayStub = A.Fake <IPollGateway>();

            A.CallTo(() => pollGatewayStub.GetAsync(pollId))
            .Returns((Poll)null);

            IDeletePollOutputPort OutputPortStub = A.Fake <IDeletePollOutputPort>();
            ILoggerService <DeletePollUseCase> loggerServiceMock = A.Fake <ILoggerService <DeletePollUseCase> >();

            var useCase = new DeletePollUseCase(loggerServiceMock, pollGatewayStub);

            // Act
            await useCase.HandleAsync(pollId, OutputPortStub);

            // Assert
            A.CallTo(
                () => loggerServiceMock.LogInformation(
                    A <string> .That.Contains(expectedLogMessage),
                    A <int> .That.IsEqualTo(pollId)))
            .MustHaveHappenedOnceExactly();
        }
Exemplo n.º 2
0
        public async Task HandleAsync_WhenPollDoesNotExist_ShouldCallNotFound()
        {
            // Arrange
            const int    pollId = 1;
            const string expectedResultMessage = "Poll not found";

            ILoggerService <DeletePollUseCase> loggerServiceStub = A.Fake <ILoggerService <DeletePollUseCase> >();
            IPollGateway pollGatewayStub = A.Fake <IPollGateway>();

            A.CallTo(() => pollGatewayStub.GetAsync(pollId))
            .Returns((Poll)null);

            IDeletePollOutputPort OutputPortMock = A.Fake <IDeletePollOutputPort>();

            var useCase = new DeletePollUseCase(loggerServiceStub, pollGatewayStub);

            // Act
            await useCase.HandleAsync(pollId, OutputPortMock);

            // Assert
            A.CallTo(
                () => OutputPortMock.NotFound(
                    A <string> .That.Contains(expectedResultMessage)))
            .MustHaveHappenedOnceExactly();
        }
        public async Task HandleAsync_WhenPollExists_ShouldCallSuccess()
        {
            // Arrange
            const int pollId = 1;

            Poll poll = this.GetFakePoll();

            poll.AddOption("test option");

            var expectedGetPollOutput = new GetPollOutput(poll.Id, poll.Title, poll.Note, poll.DueDate, poll.SingleOptionLimitation, poll.Options);

            IPollGateway pollGatewayStub = A.Fake <IPollGateway>();

            A.CallTo(() => pollGatewayStub.GetAsync(pollId))
            .Returns(poll);

            IGetPollOutputPort getPollOutputPortMock = A.Fake <IGetPollOutputPort>();

            var useCase = new GetPollUseCase(null, pollGatewayStub);

            // Act
            await useCase.HandleAsync(pollId, getPollOutputPortMock);

            // Assert
            A.CallTo(
                () => getPollOutputPortMock.Success(
                    A <GetPollOutput> .That.Matches(
                        m => m.Title == poll.Title &&
                        m.Note == poll.Note &&
                        m.DueDate == poll.DueDate &&
                        m.SingleOptionLimitation == poll.SingleOptionLimitation)))
            .MustHaveHappenedOnceExactly();
        }
        public async Task HandleAsync_WithValidPoll_ShouldCallSuccess()
        {
            // Arrange
            IEmailSender emailSenderStub = A.Fake <IEmailSender>();
            IPollGateway pollGatewayStub = A.Fake <IPollGateway>();

            ICreatePollOutputPort OutputPortMock = A.Fake <ICreatePollOutputPort>();

            var             useCase = new CreatePollUseCase(null, emailSenderStub, pollGatewayStub);
            CreatePollInput input   = GetValidCreatePollInput();

            // Act
            await useCase.HandleAsync(input, OutputPortMock);

            // Assert
            A.CallTo(() => OutputPortMock.Success(
                         A <CreatePollOutput> .That.Matches(
                             p => p.Id == 0)))
            .MustHaveHappenedOnceExactly();
        }
Exemplo n.º 5
0
        public async Task HandleAsync_WhenPollExists_ShouldDeleteIt()
        {
            // Arrange
            const int pollId = 1;
            Poll      poll   = this.GetFakePoll();

            IPollGateway pollGatewayMock = A.Fake <IPollGateway>();

            A.CallTo(() => pollGatewayMock.GetAsync(pollId))
            .Returns(poll);

            IDeletePollOutputPort OutputPortStub = A.Fake <IDeletePollOutputPort>();

            var useCase = new DeletePollUseCase(null, pollGatewayMock);

            // Act
            await useCase.HandleAsync(pollId, OutputPortStub);

            // Assert
            A.CallTo(() => pollGatewayMock.DeleteAsync(poll)).MustHaveHappenedOnceExactly();
        }
        public async Task HandleAsync_WithValidPoll_ShouldSendEmail()
        {
            // Arrange
            IPollGateway          pollGatewayStub = A.Fake <IPollGateway>();
            ICreatePollOutputPort OutputPortStub  = A.Fake <ICreatePollOutputPort>();

            IEmailSender emailSenderMock = A.Fake <IEmailSender>();

            var             useCase = new CreatePollUseCase(null, emailSenderMock, pollGatewayStub);
            CreatePollInput input   = GetValidCreatePollInput();

            // Act
            await useCase.HandleAsync(input, OutputPortStub);

            // Assert
            A.CallTo(() => emailSenderMock.SendAsync(
                         A <string> .That.Contains("SUBJECT"),
                         A <string> .That.Contains("PLAIN_TEXT_CONTENT"),
                         //A<List<string>>.Ignored))
                         A <List <string> > .That.IsSameSequenceAs(input.ParticipantEmailAddresses)))
            .MustHaveHappenedOnceExactly();
        }
        public async Task HandleAsync_WithValidPoll_ShouldCreateNewPoll()
        {
            // Arrange
            IEmailSender          emailSenderStub = A.Fake <IEmailSender>();
            ICreatePollOutputPort OutputPortStub  = A.Fake <ICreatePollOutputPort>();

            IPollGateway pollGatewayMock = A.Fake <IPollGateway>();

            var             useCase = new CreatePollUseCase(null, emailSenderStub, pollGatewayMock);
            CreatePollInput input   = GetValidCreatePollInput();

            // Act
            await useCase.HandleAsync(input, OutputPortStub);

            // Assert
            A.CallTo(() => pollGatewayMock.CreateAsync(
                         A <Poll> .That.Matches(
                             p => p.Title == input.Title &&
                             p.Note == input.Note &&
                             p.SingleOptionLimitation == input.SingleOptionLimitation &&
                             p.DueDate == input.DueDate &&
                             p.Options.Count == input.Options.Count)))
            .MustHaveHappenedOnceExactly();
        }
 public DeletePollUseCase(ILoggerService <DeletePollUseCase> loggerService, IPollGateway pollGateway)
 {
     this.loggerService = loggerService;
     this.pollGateway   = pollGateway;
 }
 public CreatePollUseCase(ILoggerService <CreatePollUseCase> loggerService, IEmailSender emailSender, IPollGateway pollGateway)
 {
     this.loggerService = loggerService;
     this.emailSender   = emailSender;
     this.pollGateway   = pollGateway;
 }
 public VoteUseCase(ILoggerService <VoteUseCase> loggerService, IPollGateway pollGateway, IDateTime dateTime)
 {
     this.loggerService = loggerService;
     this.pollGateway   = pollGateway;
     this.dateTime      = dateTime;
 }
Exemplo n.º 11
0
 public GetVotesUseCase(ILoggerService <GetVotesUseCase> loggerService, IPollGateway pollGateway)
 {
     this.loggerService = loggerService;
     this.pollGateway   = pollGateway;
 }