Exemplo n.º 1
0
        public async void CreateReservation_True()
        {
            //arrange
            var contact     = ContactFaker.GetContactOk();
            var contactType = ContactTypeFaker.GetContactTypeOk();

            var faker = new Faker();

            var message = faker.Lorem.Paragraph();

            var createReservationCommand = new CreateReservationCommand(
                contactId: contact.Id,
                contactName: contact.Name,
                contactPhone: contact.Name,
                contactBirthdate: contact.BirthDate,
                contactTypeId: contactType.Id,
                message: message
                );


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IReservationRepository>())
            .Returns(_reservationRepositoryMock.Object);


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactRepository>())
            .Returns(_contactRepositoryMock.Object);


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactTypeRepository>())
            .Returns(_contactTypeRepositoryMock.Object);


            _contactRepositoryMock.Setup(x => x.GetByIdAsync(createReservationCommand.ContactId.Value))
            .Returns(Task.FromResult(contact));

            _reservationRepositoryMock.Setup(x => x.CommitAsync())
            .Returns(Task.FromResult(CommitResponse.Ok()));

            var handler = new ReservationCommandHandler(_dependencyResolverMock.Object);

            //Act

            var result = await handler.Handle(createReservationCommand, new CancellationToken());


            //Assert

            Assert.True(result.Success);
            _contactRepositoryMock.Verify(x => x.GetByIdAsync(createReservationCommand.ContactId.Value), Times.Once);
            _reservationRepositoryMock.Verify(x => x.AddAsync(It.IsAny <Reservation>()), Times.Once);
            _reservationRepositoryMock.Verify(x => x.CommitAsync(), Times.Once);
        }
        public async void DeleteContact_ContactNull_False()
        {
            //arrange
            var contact = ContactFaker.GetContactOk();

            var deleteContactCommand = new DeleteContactCommand(contact.Id);

            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IMediatorHandler>())
            .Returns(_mediatorHandler.Object);


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactRepository>())
            .Returns(_contactRepositoryMock.Object);



            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactTypeRepository>())
            .Returns(_contactTypeRepositoryMock.Object);

            _contactRepositoryMock
            .Setup(x =>
                   x.GetByIdAsync(deleteContactCommand.ContactId))
            .Returns(Task.FromResult((Contact)null));


            _contactRepositoryMock
            .Setup(x =>
                   x.CommitAsync())
            .Returns(Task.FromResult(CommitResponse.Ok()));



            var handler = new ContactCommandHandler(_dependencyResolverMock.Object);

            //act
            var result = await handler.Handle(deleteContactCommand, new CancellationToken());



            //Assert

            Assert.False(result.Success);
            _contactRepositoryMock.Verify(x => x.GetByIdAsync(deleteContactCommand.ContactId), Times.Once);
            _contactRepositoryMock.Verify(x => x.Update(contact), Times.Never);

            _contactRepositoryMock.Verify(x => x.CommitAsync(), Times.Never);
            _mediatorHandler.Verify(x => x.NotifyDomainNotification(It.IsAny <DomainNotification>()), Times.Once);
        }
        public async Task <CommitResponse> CommitAsync()
        {
            try
            {
                var rowsAffected = await Context.SaveChangesAsync();

                return(rowsAffected > 0 ? CommitResponse.Ok(rowsAffected) : CommitResponse.Fail());
            }
            catch (Exception ex)
            {
                return(CommitResponse.Fail(ex.Message));
            }
        }
        public async void CreateContact_ContactInvalid_False()
        {
            //arrange
            var contact = ContactFaker.GetContactContactNameLess();
            var createContactCommand = new CreateContactCommand(
                contactName: contact.Name,
                contactPhone: contact.PhoneNumber,
                contactBirthDate: contact.BirthDate,
                contactTypeId: contact.ContactTypeId
                );

            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactTypeRepository>())
            .Returns(_contactTypeRepositoryMock.Object);


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactRepository>())
            .Returns(_contactRepositoryMock.Object);

            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IMediatorHandler>())
            .Returns(_mediatorHandler.Object);

            _contactTypeRepositoryMock.Setup(x => x.GetByIdAsync(createContactCommand.ContactTypeId))
            .Returns(Task.FromResult(contact.ContactType));


            _contactRepositoryMock.Setup(x => x.CommitAsync())
            .Returns(Task.FromResult(CommitResponse.Ok()));


            var handler = new ContactCommandHandler(_dependencyResolverMock.Object);

            //act
            var result = await handler.Handle(createContactCommand, new CancellationToken());

            //Assert

            Assert.False(result.Success);
            _contactTypeRepositoryMock.Verify(x => x.GetByIdAsync(createContactCommand.ContactTypeId), Times.Once);
            _mediatorHandler.Verify(x => x.NotifyDomainNotification(It.IsAny <DomainNotification>()), Times.AtLeastOnce);
            _contactRepositoryMock.Verify(x => x.AddAsync(It.IsAny <Contact>()), Times.Never);
            _contactRepositoryMock.Verify(x => x.CommitAsync(), Times.Never);
        }
        public async void EditContact_True()
        {
            //arrange
            var contact     = ContactFaker.GetContactOk();
            var contactType = ContactTypeFaker.GetContactTypeOk();

            var faker = new Faker();

            var contactName = faker.Person.FullName;

            var randomizerTextRegex = RandomizerFactory
                                      .GetRandomizer(new FieldOptionsTextRegex
            {
                Pattern = @"^\(999\) 999-\d{4}$"
            });

            var contactPhone = randomizerTextRegex.Generate().ToUpper();

            var contactBirthDate = faker.Date.Past();


            var editContactCommand = new EditContactCommand(
                contactId: contact.Id,
                contactName: contactName,
                contactPhone: contactPhone,
                contactBirthDate: contactBirthDate,
                contactTypeId: contactType.Id
                );


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactRepository>())
            .Returns(_contactRepositoryMock.Object);


            _dependencyResolverMock
            .Setup(x =>
                   x.Resolve <IContactTypeRepository>())
            .Returns(_contactTypeRepositoryMock.Object);


            _contactRepositoryMock
            .Setup(x =>
                   x.GetByIdAsync(editContactCommand.ContactId))
            .Returns(Task.FromResult(contact));

            _contactTypeRepositoryMock
            .Setup(x =>
                   x.GetByIdAsync(editContactCommand.ContactTypeId))
            .Returns(Task.FromResult(contactType));



            _contactRepositoryMock
            .Setup(x =>
                   x.CommitAsync())
            .Returns(Task.FromResult(CommitResponse.Ok()));


            var handler = new ContactCommandHandler(_dependencyResolverMock.Object);

            //act
            var result = await handler.Handle(editContactCommand, new CancellationToken());



            //result

            Assert.True(result.Success);

            _contactRepositoryMock.Verify(x => x.GetByIdAsync(editContactCommand.ContactId), Times.Once);
            _contactTypeRepositoryMock.Verify(x => x.GetByIdAsync(editContactCommand.ContactTypeId), Times.Once);
            _contactRepositoryMock.Verify(x => x.Update(contact), Times.Once);
            _contactRepositoryMock.Verify(x => x.CommitAsync(), Times.Once);

            _mediatorHandler.Verify(x => x.NotifyDomainNotification(It.IsAny <DomainNotification>()), Times.Never);
        }