public void Get_ShouldReturnValidInstance_ForSupportedTypes() { // Arrange. var configuration = new ConfigurationBuilder().Build(); using (var factory = new SimulatedInstrumentFactory(configuration)) { using (var target = new FactoryProducedInstanceGroup(factory)) { // Act. var result = target.Get <SimulatedInstrument>(); // Assert. result.Should().NotBeNull(); result.Should().BeOfType <SimulatedInstrument>(); } } }
public void Get_ShouldRaiseArgumentException_ForUnsupportedTypes() { // Arrange. var configuration = new ConfigurationBuilder().Build(); using (var factory = new SimulatedInstrumentFactory(configuration)) { using (var target = new FactoryProducedInstanceGroup(factory)) { // Act. var action = new Action(() => { target.Get <DateTimeRange>(); }); // Assert. action.Should().Throw <ArgumentException>(); } } }
/// <summary> /// Initializes a new instance of the <see cref="DataAccessCommandHandler{TCommand}" /> class. /// </summary> /// <param name="mediator"> /// A processing intermediary that is used to process sub-commands. /// </param> /// <param name="repositoryFactory"> /// The factory that produces data access repositories for the handler. /// </param> /// <param name="transaction"> /// A transaction that is used to process the command. /// </param> /// <exception cref="ArgumentException"> /// <paramref name="transaction" /> is in an invalid state. /// </exception> /// <exception cref="ArgumentNullException"> /// <paramref name="mediator" /> is <see langword="null" /> -or- <paramref name="repositoryFactory" /> is /// <see langword="null" /> -or- <paramref name="transaction" /> is <see langword="null" />. /// </exception> protected DataAccessCommandHandler(ICommandMediator mediator, IDataAccessRepositoryFactory repositoryFactory, IDataAccessTransaction transaction) : base(mediator) { Repositories = new FactoryProducedInstanceGroup(repositoryFactory); Transaction = transaction.RejectIf().IsNull(nameof(transaction)).OrIf((argument) => argument.State != DataAccessTransactionState.Ready, nameof(transaction)).TargetArgument; }