public PersistingTicketFactoryDecorator(ICreatesTicket wrappedInstance,
                                                IGetsTransaction transactionFactory,
                                                IEntityData data,
                                                ILog logger)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (transactionFactory == null)
            {
                throw new ArgumentNullException(nameof(transactionFactory));
            }
            if (wrappedInstance == null)
            {
                throw new ArgumentNullException(nameof(wrappedInstance));
            }
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            this.wrappedInstance    = wrappedInstance;
            this.transactionFactory = transactionFactory;
            this.data   = data;
            this.logger = logger;
        }
        public void Create_does_not_use_factory_when_validation_fails(CreateTicketRequest request,
                                                                      [Frozen] ICreatesTicket ticketFactory,
                                                                      [Frozen] ICreatesValidators <CreateTicketRequest> validatorFactory,
                                                                      IValidator validator,
                                                                      Ticket ticket,
                                                                      CreateTicketRequestHandler sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);
            Mock.Get(validatorFactory)
            .Setup(x => x.GetValidator())
            .Returns(validator);
            Mock.Get(validator)
            .Setup(x => x.Validate(request))
            .Returns(Mock.Of <IValidationResult>(x => x.IsSuccess == false));

            // Act
            sut.Create(request);

            // Assert
            Mock.Get(ticketFactory)
            .Verify(x => x.CreateTicket(request), Times.Never());
        }
        public void Create_returns_null_ticket_instance_if_validation_fails(CreateTicketRequest request,
                                                                            [Frozen] ICreatesValidators <CreateTicketRequest> validatorFactory,
                                                                            IValidator validator,
                                                                            [Frozen] ICreatesTicket ticketFactory,
                                                                            [Frozen] ICreatesCreateTicketResponse responseFactory,
                                                                            Ticket ticket,
                                                                            CreateTicketRequestHandler sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);
            Mock.Get(validatorFactory)
            .Setup(x => x.GetValidator())
            .Returns(validator);
            Mock.Get(validator)
            .Setup(x => x.Validate(request))
            .Returns(Mock.Of <IValidationResult>(x => x.IsSuccess == false));
            Mock.Get(responseFactory)
            .Setup(x => x.GetResponse(It.IsAny <IValidationResult>()))
            .Returns((IValidationResult r) => new CreateTicketResponse(r, Mock.Of <IValidationResultInterpreter>()));
            Mock.Get(responseFactory)
            .Setup(x => x.GetResponse(It.IsAny <IValidationResult>(), It.IsAny <Ticket>()))
            .Returns((IValidationResult r, Ticket t) => new CreateTicketResponse(r, Mock.Of <IValidationResultInterpreter>(), t));

            // Act
            var result = sut.Create(request);

            // Assert
            Assert.IsNull(result.Ticket);
        }
Пример #4
0
        public void CreateTicket_sets_user_from_current_user_provider([Frozen, CreatesATicket] ICreatesTicket wrapped,
                                                                      [LoggedIn] User user,
                                                                      CreateTicketRequest request,
                                                                      CurrentUserSettingTicketFactoryDecorator sut)
        {
            // Act
            var result = sut.CreateTicket(request);

            // Assert
            Assert.That(result?.User, Is.SameAs(user));
        }
 public CurrentUserSettingTicketFactoryDecorator(ICreatesTicket wrappedInstance, ICurrentUserReader userReader)
 {
     if (userReader == null)
     {
         throw new ArgumentNullException(nameof(userReader));
     }
     if (wrappedInstance == null)
     {
         throw new ArgumentNullException(nameof(wrappedInstance));
     }
     this.wrappedInstance = wrappedInstance;
     this.userReader      = userReader;
 }
        public SprintPopulatingTicketFactoryDecorator(ICreatesTicket wrappedInstance, IEntityData data)
        {
            if (wrappedInstance == null)
            {
                throw new ArgumentNullException(nameof(wrappedInstance));
            }
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            this.wrappedInstance = wrappedInstance;
            this.data            = data;
        }
Пример #7
0
 public RelationshipPopulatingTicketFactoryDecorator(ICreatesTicket wrappedInstance,
                                                     IConvertsAddRelationshipRequestsToTicketRelationships relationshipFactory)
 {
     if (relationshipFactory == null)
     {
         throw new ArgumentNullException(nameof(relationshipFactory));
     }
     if (wrappedInstance == null)
     {
         throw new ArgumentNullException(nameof(wrappedInstance));
     }
     this.wrappedInstance     = wrappedInstance;
     this.relationshipFactory = relationshipFactory;
 }
        public LabelPopulatingTicketFactoryDecorator(ICreatesTicket wrappedInstance, IGetsLabels labelProvider)
        {
            if (wrappedInstance == null)
            {
                throw new ArgumentNullException(nameof(wrappedInstance));
            }
            if (labelProvider == null)
            {
                throw new ArgumentNullException(nameof(labelProvider));
            }

            this.wrappedInstance = wrappedInstance;
            this.labelProvider   = labelProvider;
        }
        public void Create_ticket_sets_project_using_current_project([Frozen, CreatesATicket] ICreatesTicket wrappedInstance,
                                                                     [Frozen] IGetsCurrentProject projectGetter,
                                                                     Project project,
                                                                     CreateTicketRequest request,
                                                                     CurrentProjectSettingTicketFactoryDecorator sut)
        {
            // Arrange
            Mock.Get(projectGetter).Setup(x => x.GetCurrentProject()).Returns(project);

            // Act
            var result = sut.CreateTicket(request);

            // Assert
            Assert.That(result?.Project, Is.SameAs(project));
        }
        public void Create_ticket_advances_the_ticket_number([Frozen, CreatesATicket] ICreatesTicket wrappedInstance,
                                                             [Frozen] IGetsCurrentProject projectGetter,
                                                             Project project,
                                                             CreateTicketRequest request,
                                                             CurrentProjectSettingTicketFactoryDecorator sut)
        {
            // Arrange
            Mock.Get(projectGetter).Setup(x => x.GetCurrentProject()).Returns(project);
            var previousTicketNumber = project.NextAvailableTicketNumber;

            // Act
            var result = sut.CreateTicket(request);

            // Assert
            Assert.That(project.NextAvailableTicketNumber, Is.EqualTo(previousTicketNumber + 1));
        }
        public void Create_returns_a_response(CreateTicketRequest request,
                                              [Frozen, AlwaysPasses] ICreatesValidators <CreateTicketRequest> validatorFactory,
                                              [Frozen] ICreatesTicket ticketFactory,
                                              Ticket ticket,
                                              CreateTicketRequestHandler sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);

            // Act
            var result = sut.Create(request);

            // Assert
            Assert.NotNull(result);
        }
Пример #12
0
        public void CreateTicket_uses_transaction(CreateTicketRequest request,
                                                  [Frozen] ICreatesTicket ticketFactory,
                                                  Ticket ticket,
                                                  [Frozen] ITransaction trans,
                                                  [Frozen, CreatesTransaction] IGetsTransaction transFactory,
                                                  PersistingTicketFactoryDecorator sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);

            // Act
            sut.CreateTicket(request);

            // Assert
            Mock.Get(trans).Verify(x => x.Commit(), Times.Once());
        }
        public void Create_creates_ticket_from_factory_when_validation_passes(CreateTicketRequest request,
                                                                              [Frozen] ICreatesTicket ticketFactory,
                                                                              [Frozen, AlwaysPasses] ICreatesValidators <CreateTicketRequest> validatorFactory,
                                                                              Ticket ticket,
                                                                              CreateTicketRequestHandler sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);

            // Act
            sut.Create(request);

            // Assert
            Mock.Get(ticketFactory)
            .Verify(x => x.CreateTicket(request), Times.Once());
        }
Пример #14
0
        public void CreateTicket_saves_newly_created_ticket([Frozen] IEntityData repo,
                                                            [Frozen] ICreatesTicket ticketFactory,
                                                            Ticket ticket,
                                                            CreateTicketRequest request,
                                                            PersistingTicketFactoryDecorator sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);
            Mock.Get(repo).Setup(x => x.Add(ticket));

            // Act
            sut.CreateTicket(request);

            // Assert
            Mock.Get(repo).Verify(x => x.Add(ticket), Times.Once());
        }
Пример #15
0
        public void CreateTicket_adds_labels_from_label_provider([Frozen, CreatesATicket] ICreatesTicket wrapped,
                                                                 [Frozen] IGetsLabels labelProvider,
                                                                 Label labelOne,
                                                                 Label labelTwo,
                                                                 CreateTicketRequest request,
                                                                 LabelPopulatingTicketFactoryDecorator sut)
        {
            // Arrange
            Mock.Get(labelProvider)
            .Setup(x => x.GetLabels(request.CommaSeparatedLabelNames))
            .Returns(new [] { labelOne, labelTwo });

            // Act
            var result = sut.CreateTicket(request);

            // Assert
            Assert.That(result?.Labels, Contains.Item(labelOne), $"Contains {nameof(labelOne)}");
            Assert.That(result?.Labels, Contains.Item(labelTwo), $"Contains {nameof(labelTwo)}");
        }
        public CurrentProjectSettingTicketFactoryDecorator(ICreatesTicket wrappedInstance,
                                                           IGetsCurrentProject projectGetter,
                                                           ILog logger)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (wrappedInstance == null)
            {
                throw new ArgumentNullException(nameof(wrappedInstance));
            }
            if (projectGetter == null)
            {
                throw new ArgumentNullException(nameof(projectGetter));
            }

            this.wrappedInstance = wrappedInstance;
            this.projectGetter   = projectGetter;
            this.logger          = logger;
        }
Пример #17
0
        public CreateTicketRequestHandler(ICreatesTicket ticketFactory,
                                          ICreatesValidators <CreateTicketRequest> validatorFactory,
                                          ICreatesCreateTicketResponse responseCreator)
        {
            if (responseCreator == null)
            {
                throw new ArgumentNullException(nameof(responseCreator));
            }
            if (validatorFactory == null)
            {
                throw new ArgumentNullException(nameof(validatorFactory));
            }
            if (ticketFactory == null)
            {
                throw new ArgumentNullException(nameof(ticketFactory));
            }

            this.ticketFactory    = ticketFactory;
            this.validatorFactory = validatorFactory;
            this.responseCreator  = responseCreator;
        }
        public void Create_uses_a_validator(CreateTicketRequest request,
                                            [Frozen] ICreatesValidators <CreateTicketRequest> validatorFactory,
                                            IValidator validator,
                                            [Frozen] ICreatesTicket ticketFactory,
                                            Ticket ticket,
                                            CreateTicketRequestHandler sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);
            Mock.Get(validatorFactory)
            .Setup(x => x.GetValidator())
            .Returns(validator);

            // Act
            sut.Create(request);

            // Assert
            Mock.Get(validator)
            .Verify(x => x.Validate(request), Times.Once());
        }
        public void Create_returns_created_ticket_in_response(CreateTicketRequest request,
                                                              [Frozen, AlwaysPasses] ICreatesValidators <CreateTicketRequest> validatorFactory,
                                                              [Frozen] ICreatesTicket ticketFactory,
                                                              [Frozen] ICreatesCreateTicketResponse responseFactory,
                                                              Ticket ticket,
                                                              CreateTicketRequestHandler sut)
        {
            // Arrange
            Mock.Get(ticketFactory)
            .Setup(x => x.CreateTicket(It.IsAny <CreateTicketRequest>()))
            .Returns(ticket);
            Mock.Get(responseFactory)
            .Setup(x => x.GetResponse(It.IsAny <IValidationResult>()))
            .Returns((IValidationResult r) => new CreateTicketResponse(r, Mock.Of <IValidationResultInterpreter>()));
            Mock.Get(responseFactory)
            .Setup(x => x.GetResponse(It.IsAny <IValidationResult>(), It.IsAny <Ticket>()))
            .Returns((IValidationResult r, Ticket t) => new CreateTicketResponse(r, Mock.Of <IValidationResultInterpreter>(), t));

            // Act
            var result = sut.Create(request);

            // Assert
            Assert.AreSame(ticket, result.Ticket);
        }
Пример #20
0
        public void CreateTicket_adds_relationships_with_null_secondary_ticket_as_secondary_relationships([Frozen, CreatesATicket] ICreatesTicket wrappedInstance,
                                                                                                          [Frozen] IConvertsAddRelationshipRequestsToTicketRelationships relationshipFactory,
                                                                                                          TicketRelationship relationship,
                                                                                                          Ticket relatedTicket,
                                                                                                          CreateTicketRequest request,
                                                                                                          AddRelationshipRequest relationshipRequest,
                                                                                                          RelationshipPopulatingTicketFactoryDecorator sut)
        {
            // Arrange
            request.RelationshipsToAdd.Add(relationshipRequest);
            Mock.Get(relationshipFactory)
            .Setup(x => x.Convert(It.IsAny <IEnumerable <AddRelationshipRequest> >()))
            .Returns(new [] { relationship });
            relationship.PrimaryTicket   = relatedTicket;
            relationship.SecondaryTicket = null;

            // Act
            var result = sut.CreateTicket(request);

            // Assert
            Assert.That(result?.PrimaryRelationships, Does.Not.Contains(relationship));
            Assert.That(result?.SecondaryRelationships, Contains.Item(relationship));
        }