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); }
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; }
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); }
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()); }
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()); }
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; }
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); }
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)); }