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 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 PasswordChanger(IPasswordPolicy policy, IPasswordAuthenticationService authService, ICurrentUserReader userReader, IUserPasswordUpdater updater, IGetsTransaction transactionCreator) { if (transactionCreator == null) { throw new ArgumentNullException(nameof(transactionCreator)); } if (updater == null) { throw new ArgumentNullException(nameof(updater)); } if (userReader == null) { throw new ArgumentNullException(nameof(userReader)); } if (authService == null) { throw new ArgumentNullException(nameof(authService)); } if (policy == null) { throw new ArgumentNullException(nameof(policy)); } this.policy = policy; this.authService = authService; this.userReader = userReader; this.updater = updater; this.transactionCreator = transactionCreator; }
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 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 GetTestResult_records_error_if_retrieval_raises_an_exception([Frozen] IDataConnection session, IGetsTransaction tranFactory, [Frozen] ITransaction tran, [Frozen, NoRecursion] SampleEntity entity, IPersister persister, IQuery query, [NoAutoProperties] PersistenceTestSpec <SampleEntity> spec, object id) { var sut = new PersistenceTester <SampleEntity>(spec); Mock.Get(spec.SessionProvider).Setup(x => x.GetConnection()).Returns(session); Mock.Get(session) .Setup(x => x.GetTransactionFactory()) .Returns(tranFactory); Mock.Get(tranFactory) .Setup(x => x.GetTransaction()) .Returns(tran); Mock.Get(session).Setup(x => x.GetPersister()).Returns(persister); Mock.Get(session).Setup(x => x.GetQuery()).Returns(query); Mock.Get(persister) .Setup(x => x.Add(entity, null)) .Returns(id); Mock.Get(query) .Setup(x => x.Get <SampleEntity>(id)) .Throws <ApplicationException>(); var result = sut.GetTestResult(); Assert.That(result?.ComparisonException, Is.InstanceOf <ApplicationException>()); }
public void GetTestResult_saves_the_entity_within_a_transaction([Frozen] IDataConnection session, IGetsTransaction tranFactory, IPersister persister, [Frozen] ITransaction tran, [Frozen, NoRecursion] SampleEntity entity, [NoAutoProperties] PersistenceTestSpec <SampleEntity> spec, object id) { bool transactionOpen = false; var sut = new PersistenceTester <SampleEntity>(spec); Mock.Get(spec.SessionProvider).Setup(x => x.GetConnection()).Returns(session); Mock.Get(session) .Setup(x => x.GetTransactionFactory()) .Returns(tranFactory); Mock.Get(tranFactory) .Setup(x => x.GetTransaction()) .Callback(() => transactionOpen = true) .Returns(tran); Mock.Get(session).Setup(x => x.GetPersister()).Returns(persister); Mock.Get(persister) .Setup(x => x.Add(entity, null)) .Callback(() => Assert.That(transactionOpen, Is.True, "The save operation must occur whilst the transaction is open")) .Returns(id); Mock.Get(tran) .Setup(x => x.Dispose()) .Callback(() => transactionOpen = false); sut.GetTestResult(); Mock.Get(persister).Verify(x => x.Add(entity, null), Times.Once); }
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 AddUserController(IUserCreator userCreator, IGetsUserByUsername userQuery, IUserPasswordUpdater passwordChanger, IGetsTransaction transactionCreator) { if (transactionCreator == null) { throw new ArgumentNullException(nameof(transactionCreator)); } if (passwordChanger == null) { throw new ArgumentNullException(nameof(passwordChanger)); } if (userQuery == null) { throw new ArgumentNullException(nameof(userQuery)); } if (userCreator == null) { throw new ArgumentNullException(nameof(userCreator)); } this.userCreator = userCreator; this.passwordChanger = passwordChanger; this.userQuery = userQuery; this.transactionCreator = transactionCreator; }
public SimpleSampleProject(IEntityData repo, IGetsTransaction transactionCreator, IGetsUserByUsername userQuery, IUserCreator userCreator) { if (userCreator == null) { throw new ArgumentNullException(nameof(userCreator)); } if (transactionCreator == null) { throw new ArgumentNullException(nameof(transactionCreator)); } if (repo == null) { throw new ArgumentNullException(nameof(repo)); } if (userQuery == null) { throw new ArgumentNullException(nameof(userQuery)); } this.transactionCreator = transactionCreator; this.repo = repo; this.userQuery = userQuery; this.userCreator = userCreator; }
public void GetTestResult_records_error_if_save_returns_null([Frozen] IDataConnection session, IGetsTransaction tranFactory, IPersister persister, [Frozen] ITransaction tran, [Frozen, NoRecursion] SampleEntity entity, [NoAutoProperties] PersistenceTestSpec <SampleEntity> spec) { var sut = new PersistenceTester <SampleEntity>(spec); Mock.Get(spec.SessionProvider).Setup(x => x.GetConnection()).Returns(session); Mock.Get(session) .Setup(x => x.GetTransactionFactory()) .Returns(tranFactory); Mock.Get(tranFactory) .Setup(x => x.GetTransaction()) .Returns(tran); Mock.Get(session).Setup(x => x.GetPersister()).Returns(persister); Mock.Get(persister) .Setup(x => x.Add(entity, null)) .Returns(() => null); var result = sut.GetTestResult(); Assert.That(result?.SaveException, Is.InstanceOf <InvalidOperationException>()); }
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 TicketWorkLogger(IGetsTicketWorkLog workLogProvider, IGetsTransaction transactionFactory) { if (transactionFactory == null) { throw new ArgumentNullException(nameof(transactionFactory)); } if (workLogProvider == null) { throw new ArgumentNullException(nameof(workLogProvider)); } this.workLogProvider = workLogProvider; this.transactionFactory = transactionFactory; }
public TicketOpenerCloser(IEntityData repo, IGetsTransaction transactionFactory) { if (transactionFactory == null) { throw new ArgumentNullException(nameof(transactionFactory)); } if (repo == null) { throw new ArgumentNullException(nameof(repo)); } this.transactionFactory = transactionFactory; this.repo = repo; }
public DevelopmentInitialDataCreator(IUserCreator userCreator, IGetsTransaction transactionCreator, IEntityData projectRepo) { if(projectRepo == null) throw new ArgumentNullException(nameof(projectRepo)); if(transactionCreator == null) throw new ArgumentNullException(nameof(transactionCreator)); if(userCreator == null) throw new ArgumentNullException(nameof(userCreator)); this.userCreator = userCreator; this.data = projectRepo; this.transactionCreator = transactionCreator; }
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 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_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 WithSetup_does_not_use_transaction_when_specified_not_to([Frozen] IGetsDataConnection sessionProvider, PersistenceTestBuilder sut, [NoRecursion] SampleEntity entity, IDataConnection session, IGetsTransaction tranFactory, ITransaction tran) { Mock.Get(sessionProvider).Setup(x => x.GetConnection()).Returns(session); Mock.Get(session).Setup(x => x.GetTransactionFactory()).Returns(tranFactory); Mock.Get(tranFactory).Setup(x => x.GetTransaction()).Returns(tran); var action = GetSetup(getter => { /* Noop */ }); var result = (PersistenceTestBuilder <SampleEntity>)AsSetupChooser(sut) .WithSetup(action, false) .WithEntity(entity); result.Setup(session); Mock.Get(tranFactory).Verify(x => x.GetTransaction(), Times.Never); }
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 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 void GetTestResult_evicts_the_entity_retrieves_it_and_compares_it([Frozen] IDataConnection session, IGetsTransaction tranFactory, [Frozen] ITransaction tran, IPersister persister, IQuery query, [Frozen, NoRecursion] SampleEntity entity, [NoAutoProperties] PersistenceTestSpec <SampleEntity> spec, object id) { var evicted = false; var sut = new PersistenceTester <SampleEntity>(spec); Mock.Get(spec.SessionProvider).Setup(x => x.GetConnection()).Returns(session); Mock.Get(session) .Setup(x => x.GetTransactionFactory()) .Returns(tranFactory); Mock.Get(tranFactory) .Setup(x => x.GetTransaction()) .Returns(tran); Mock.Get(session).Setup(x => x.GetPersister()).Returns(persister); Mock.Get(session).Setup(x => x.GetQuery()).Returns(query); Mock.Get(persister) .Setup(x => x.Add(entity, null)) .Returns(id); Mock.Get(session) .Setup(x => x.EvictFromCache(entity)) .Callback(() => evicted = true); var retrievedEntity = new SampleEntity(); Mock.Get(query) .Setup(x => x.Get <SampleEntity>(id)) .Returns(() => evicted? retrievedEntity : entity); sut.GetTestResult(); Mock.Get(spec.EqualityRule).Verify(x => x.GetEqualityResult(entity, retrievedEntity), Times.Once); }
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 TransactionProjectCreatorDecorator(IGetsTransaction transactionCreator, ICreatesProject wrapped) { this.transactionCreator = transactionCreator ?? throw new ArgumentNullException(nameof(transactionCreator)); this.wrapped = wrapped ?? throw new ArgumentNullException(nameof(wrapped)); }