public EditTicketRequestHandler(IEntityData ticketRepo, IGetsTransaction transactionFactory, ICreatesValidators <EditTicketRequest> validatorFactory, ICreatesEditTicketResponse responseCreator, IEditsTicket editor, ILog logger) { if (editor == null) { throw new ArgumentNullException(nameof(editor)); } if (responseCreator == null) { throw new ArgumentNullException(nameof(responseCreator)); } if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } if (transactionFactory == null) { throw new ArgumentNullException(nameof(transactionFactory)); } if (ticketRepo == null) { throw new ArgumentNullException(nameof(ticketRepo)); } this.ticketRepo = ticketRepo; this.transactionFactory = transactionFactory; this.validatorFactory = validatorFactory; this.responseCreator = responseCreator; this.editor = editor; this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public CommentDeleter(ICreatesValidators <DeleteCommentRequest> validatorFactory, IGetsTransaction transactionCreator, IEntityData data, Func <IValidationResult, DeleteCommentResponse> responseCreator) { if (responseCreator == null) { throw new ArgumentNullException(nameof(responseCreator)); } if (data == null) { throw new ArgumentNullException(nameof(data)); } if (transactionCreator == null) { throw new ArgumentNullException(nameof(transactionCreator)); } if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } this.validatorFactory = validatorFactory; this.transactionCreator = transactionCreator; this.data = data; this.responseCreator = responseCreator; }
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 SprintEditor(IEntityData sprintRepo, IGetsTransaction transactionFactory, ICreatesValidators <EditSprintRequest> validatorFactory, Func <IValidationResult, Sprint, EditSprintResponse> responseCreator, IMapper mapper) { if (mapper == null) { throw new ArgumentNullException(nameof(mapper)); } if (responseCreator == null) { throw new ArgumentNullException(nameof(responseCreator)); } if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } if (transactionFactory == null) { throw new ArgumentNullException(nameof(transactionFactory)); } if (sprintRepo == null) { throw new ArgumentNullException(nameof(sprintRepo)); } this.mapper = mapper; this.responseCreator = responseCreator; this.validatorFactory = validatorFactory; this.transactionFactory = transactionFactory; this.sprintRepo = sprintRepo; }
public CommentEditor(ICreatesValidators <EditCommentRequest> validatorFactory, Func <IValidationResult, EditCommentResponse> responseCreator, IGetsTransaction transactionCreator, IEntityData commentRepo, IEnvironment environment) { if (environment == null) { throw new ArgumentNullException(nameof(environment)); } if (commentRepo == null) { throw new ArgumentNullException(nameof(commentRepo)); } if (transactionCreator == null) { throw new ArgumentNullException(nameof(transactionCreator)); } if (responseCreator == null) { throw new ArgumentNullException(nameof(responseCreator)); } if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } this.validatorFactory = validatorFactory; this.responseCreator = responseCreator; this.transactionCreator = transactionCreator; this.commentRepo = commentRepo; this.environment = environment; }
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 ValidatingProjectCreatorDecorator(ICreatesProject wrapped, ICreatesValidators <CreateProjectRequest> validatorFactory, Func <CreateProjectResponse> responseFactory) { this.wrapped = wrapped ?? throw new ArgumentNullException(nameof(wrapped)); this.validatorFactory = validatorFactory ?? throw new ArgumentNullException(nameof(validatorFactory)); this.responseFactory = responseFactory ?? throw new ArgumentNullException(nameof(responseFactory)); }
ICreatesValidators <T> GetValidatorFactory <T>() where T : class { ICreatesValidators <T> validatorFactory = null; if (scope.TryResolve(out validatorFactory)) { return(validatorFactory); } throw new MissingValidatorFactoryException($"There must be a generic implementation of {nameof(ICreatesValidators)} registered for type {typeof(T).FullName}."); }
public void Edit_uses_transaction_when_validation_passes(EditTicketRequest request, [Frozen, AlwaysPasses] ICreatesValidators <EditTicketRequest> validatorFactory, [Frozen] ITransaction tran, [Frozen, CreatesTransaction] IGetsTransaction transactionCreator, EditTicketRequestHandler sut) { // Act sut.Edit(request); // Assert Mock.Get(transactionCreator).Verify(x => x.GetTransaction(), Times.Once); Mock.Get(tran).Verify(x => x.Commit(), Times.Once); }
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 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 Edit_passes_correct_ticket_to_editing_service(EditTicketRequest request, [Frozen, AlwaysPasses] ICreatesValidators <EditTicketRequest> validatorFactory, [Frozen, CreatesTransaction] IGetsTransaction transactionCreator, [InMemory, Frozen] IEntityData data, Ticket ticket, [Frozen] IEditsTicket editor, EditTicketRequestHandler sut) { // Arrange data.Add(ticket); request.Identity = ticket.GetIdentity(); // Act sut.Edit(request); // Assert Mock.Get(editor).Verify(x => x.Edit(ticket, request), Times.Once); }
public void Edit_returns_a_result_when_validation_fails(EditTicketRequest request, [Frozen] ICreatesValidators <EditTicketRequest> validatorFactory, IValidator validator, EditTicketRequestHandler sut) { // Arrange 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 var result = sut.Edit(request); // Assert Assert.That(result, Is.Not.Null); }
public void Edit_returns_edited_ticket_in_response(EditTicketRequest request, [Frozen, AlwaysPasses] ICreatesValidators <EditTicketRequest> validatorFactory, [Frozen, CreatesTransaction] IGetsTransaction transactionCreator, [InMemory, Frozen] IEntityData data, [HasIdentity] Ticket ticket, [Frozen] ICreatesEditTicketResponse editResponseCreator, EditTicketRequestHandler sut) { // Arrange data.Add(ticket); request.Identity = ticket.GetIdentity(); // Act sut.Edit(request); // Assert Mock.Get(editResponseCreator) .Verify(x => x.GetResponse(It.IsAny <IValidationResult>(), ticket), Times.Once); }
public void Edit_does_not_begin_transaction_when_validation_fails(EditTicketRequest request, [Frozen] ICreatesValidators <EditTicketRequest> validatorFactory, IValidator validator, [Frozen] IGetsTransaction transactionCreator, EditTicketRequestHandler sut) { // Arrange 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.Edit(request); // Assert Mock.Get(transactionCreator).Verify(x => x.GetTransaction(), Times.Never); }
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 Edit_returns_response_with_null_ticket_when_validation_fails(EditTicketRequest request, [Frozen] ICreatesValidators <EditTicketRequest> validatorFactory, IValidator validator, [Frozen] ICreatesEditTicketResponse editResponseCreator, EditTicketRequestHandler sut) { // Arrange 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.Edit(request); // Assert Mock.Get(editResponseCreator) .Verify(x => x.GetResponse(It.IsAny <IValidationResult>(), null), Times.Once); }
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 CommentCreator(IEntityData ticketRepo, ICommentFactory commentFactory, IGetsTransaction transactionCreator, IEntityData commentRepo, ICreatesValidators <CreateCommentRequest> validatorFactory, Func <IValidationResult, Comment, CreateCommentResponse> responseCreator) { if (responseCreator == null) { throw new ArgumentNullException(nameof(responseCreator)); } if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } if (commentRepo == null) { throw new ArgumentNullException(nameof(commentRepo)); } if (transactionCreator == null) { throw new ArgumentNullException(nameof(transactionCreator)); } if (commentFactory == null) { throw new ArgumentNullException(nameof(commentFactory)); } if (ticketRepo == null) { throw new ArgumentNullException(nameof(ticketRepo)); } this.validatorFactory = validatorFactory; this.commentFactory = commentFactory; this.ticketRepo = ticketRepo; this.transactionCreator = transactionCreator; this.commentRepo = commentRepo; this.responseCreator = responseCreator; }
public SprintCreator(ICreatesValidators <CreateSprintRequest> validatorFactory, IGetsCurrentProject projectGetter, IEntityData sprintRepo, IGetsTransaction transactionFactory, IResponseFactory <CreateSprintResponse> responseFactory, ISprintFactory sprintFactory) { if (sprintFactory == null) { throw new ArgumentNullException(nameof(sprintFactory)); } if (responseFactory == null) { throw new ArgumentNullException(nameof(responseFactory)); } if (transactionFactory == null) { throw new ArgumentNullException(nameof(transactionFactory)); } if (sprintRepo == null) { throw new ArgumentNullException(nameof(sprintRepo)); } if (projectGetter == null) { throw new ArgumentNullException(nameof(projectGetter)); } if (validatorFactory == null) { throw new ArgumentNullException(nameof(validatorFactory)); } this.sprintFactory = sprintFactory; this.responseFactory = responseFactory; this.transactionFactory = transactionFactory; this.sprintRepo = sprintRepo; this.projectGetter = projectGetter; this.validatorFactory = validatorFactory; }
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); }