Ejemplo n.º 1
0
 public static IEnumerable<TestCaseData> ProjectMessageCases()
 {
     //Match
     var commands1 = new[] { CommandFactory(), CommandFactory() };
     var handler1 = new SqlProjectionHandler(typeof(object), _ => commands1);
     var resolver1 = new SqlProjectionHandlerResolver(message => new[] { handler1 });
     yield return new TestCaseData(
         resolver1,
         new object(),
         commands1);
     //Mismatch
     var resolver2 = new SqlProjectionHandlerResolver(message => new SqlProjectionHandler[0]);
     yield return new TestCaseData(
         resolver2,
         new object(),
         new SqlNonQueryCommand[0]);
     //Multimatch
     var commands3 = new[] { CommandFactory(), CommandFactory() };
     var commands4 = new[] { CommandFactory(), CommandFactory() };
     var handler3 = new SqlProjectionHandler(typeof(object), _ => commands3);
     var handler4 = new SqlProjectionHandler(typeof(object), _ => commands4);
     var resolver3 = new SqlProjectionHandlerResolver(message => new[] { handler3, handler4 });
     yield return new TestCaseData(
         resolver3,
         new object(),
         commands3.Concat(commands4).ToArray());
 }
Ejemplo n.º 2
0
        public static IEnumerable <TestCaseData> ProjectMessageCases()
        {
            //Match
            var commands1 = new[] { CommandFactory(), CommandFactory() };
            var handler1  = new SqlProjectionHandler(typeof(object), _ => commands1);
            var resolver1 = new SqlProjectionHandlerResolver(message => new[] { handler1 });

            yield return(new TestCaseData(
                             resolver1,
                             new object(),
                             commands1));

            //Mismatch
            var resolver2 = new SqlProjectionHandlerResolver(message => new SqlProjectionHandler[0]);

            yield return(new TestCaseData(
                             resolver2,
                             new object(),
                             new SqlNonQueryCommand[0]));

            //Multimatch
            var commands3 = new[] { CommandFactory(), CommandFactory() };
            var commands4 = new[] { CommandFactory(), CommandFactory() };
            var handler3  = new SqlProjectionHandler(typeof(object), _ => commands3);
            var handler4  = new SqlProjectionHandler(typeof(object), _ => commands4);
            var resolver3 = new SqlProjectionHandlerResolver(message => new[] { handler3, handler4 });

            yield return(new TestCaseData(
                             resolver3,
                             new object(),
                             commands3.Concat(commands4).ToArray()));
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ProjectionTestSpecification"/> class.
 /// </summary>
 /// <param name="resolver">The projection handler resolver.</param>
 /// <param name="messages">The messages to project.</param>
 /// <param name="verification">The verification method.</param>
 /// <exception cref="System.ArgumentNullException">Thrown when
 /// <paramref name="resolver"/>
 /// or
 /// <paramref name="messages"/>
 /// or
 /// <paramref name="verification"/> is null.
 /// </exception>
 public ProjectionTestSpecification(SqlProjectionHandlerResolver resolver, object[] messages,
                                    Table[] tables,
                                    Func <NpgsqlConnection, CancellationToken, Task <VerificationResult> > verification)
 {
     if (resolver == null)
     {
         throw new ArgumentNullException(nameof(resolver));
     }
     if (messages == null)
     {
         throw new ArgumentNullException(nameof(messages));
     }
     if (tables == null)
     {
         throw new ArgumentNullException(nameof(tables));
     }
     if (verification == null)
     {
         throw new ArgumentNullException(nameof(verification));
     }
     Resolver     = resolver;
     Messages     = messages;
     Tables       = tables;
     Verification = verification;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AsyncSqlProjector"/> class.
        /// </summary>
        /// <param name="resolver">The handler resolver.</param>
        /// <param name="executor">The command executor.</param>
        /// <exception cref="System.ArgumentNullException">Thrown when <paramref name="resolver"/> or <paramref name="executor"/> is <c>null</c>.</exception>
        public AsyncSqlProjector(SqlProjectionHandlerResolver resolver, IAsyncSqlNonQueryCommandExecutor executor)
        {
            if (resolver == null) throw new ArgumentNullException("resolver");
            if (executor == null) throw new ArgumentNullException("executor");

            _resolver = resolver;
            _executor = executor;
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NpgsqlProjectionScenario"/> class.
 /// </summary>
 /// <param name="resolver">The projection handler resolver.</param>
 /// <exception cref="System.ArgumentNullException">Thrown when <paramref name="resolver"/> is <c>null</c>.</exception>
 public NpgsqlProjectionScenario(SqlProjectionHandlerResolver resolver)
 {
     if (resolver == null)
     {
         throw new ArgumentNullException(nameof(resolver));
     }
     Resolver = resolver;
     Messages = Array.Empty <object>();
     Tables   = Array.Empty <Table>();
 }
Ejemplo n.º 6
0
        public async void ProjectAsyncMessagesCausesExecutorToBeCalledWithExpectedCommands(
            SqlProjectionHandlerResolver resolver,
            object[] messages,
            SqlNonQueryCommand[] commands)
        {
            var mock = new ExecutorMock();
            var sut = SutFactory(resolver, mock);

            var result = await sut.ProjectAsync(messages);

            Assert.That(result, Is.EqualTo(commands.Length));
            Assert.That(mock.Commands, Is.EquivalentTo(commands));
        }
Ejemplo n.º 7
0
        public async Task ProjectAsyncMessageTokenCausesExecutorToBeCalledWithExpectedCommands(
            SqlProjectionHandlerResolver resolver,
            object message,
            SqlNonQueryCommand[] commands)
        {
            var mock = new ExecutorMock();
            var sut  = SutFactory(resolver, mock);

            var result = await sut.ProjectAsync(message, CancellationToken.None);

            Assert.That(result, Is.EqualTo(commands.Length));
            Assert.That(mock.Commands, Is.EquivalentTo(commands));
        }
Ejemplo n.º 8
0
        public void ProjectMessagesCausesExecutorToBeCalledWithExpectedCommands(
            SqlProjectionHandlerResolver resolver,
            object[] messages,
            SqlNonQueryCommand[] commands)
        {
            var mock = new ExecutorMock();
            var sut  = SutFactory(resolver, mock);

            var result = sut.Project(messages);

            Assert.That(result, Is.EqualTo(commands.Length));
            Assert.That(mock.Commands, Is.EquivalentTo(commands));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SqlProjector"/> class.
        /// </summary>
        /// <param name="resolver">The handler resolver.</param>
        /// <param name="executor">The command executor.</param>
        /// <exception cref="System.ArgumentNullException">Thrown when <paramref name="resolver"/> or <paramref name="executor"/> is <c>null</c>.</exception>
        public SqlProjector(SqlProjectionHandlerResolver resolver, ISqlNonQueryCommandExecutor executor)
        {
            if (resolver == null)
            {
                throw new ArgumentNullException("resolver");
            }
            if (executor == null)
            {
                throw new ArgumentNullException("executor");
            }

            _resolver = resolver;
            _executor = executor;
        }
Ejemplo n.º 10
0
 private static AsyncSqlProjector SutFactory(SqlProjectionHandlerResolver resolver, IAsyncSqlNonQueryCommandExecutor executor)
 {
     return new AsyncSqlProjector(resolver, executor);
 }
Ejemplo n.º 11
0
 private static AsyncSqlProjector SutFactory(SqlProjectionHandlerResolver resolver)
 {
     return SutFactory(resolver, new ExecutorStub());
 }
Ejemplo n.º 12
0
 private NpgsqlProjectionScenario(SqlProjectionHandlerResolver resolver, object[] messages, Table[] tables)
 {
     Resolver = resolver;
     Messages = messages;
     Tables   = tables;
 }
Ejemplo n.º 13
0
 private static AsyncSqlProjector SutFactory(SqlProjectionHandlerResolver resolver, IAsyncSqlNonQueryCommandExecutor executor)
 {
     return(new AsyncSqlProjector(resolver, executor));
 }
Ejemplo n.º 14
0
 private static AsyncSqlProjector SutFactory(SqlProjectionHandlerResolver resolver)
 {
     return(SutFactory(resolver, new ExecutorStub()));
 }