コード例 #1
0
            public void ShouldThrowWhenNoRegisteredAttributeQueryHandlerIsFound()
            {
                var          registration = new QueryHandlerAttributeRegistration();
                var          dispatcher   = new LoggingQueryDispatcher(new QueryDispatcher(registration), _outputHelper);
                const string data         = nameof(ShouldThrowWhenNoRegisteredAttributeQueryHandlerIsFound);

                Action action = () => dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data));

                action.Should().Throw <NoQueryHandlerResolvedException>();
            }
コード例 #2
0
            public void Should_Allow_Attribute_Query_Handlers_With_Non_Reference_Type_Query_Results()
            {
                var queryHandler = new TestAttributedQueryHandler(_testOutputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);

                var dispatcher = new QueryDispatcher(registration);
                var result     = dispatcher.Dispatch <QuerySomethingWithNonReferenceTypeResult, int>(new QuerySomethingWithNonReferenceTypeResult(1973));

                Assert.Equal(1973, result);
            }
コード例 #3
0
            public void ShouldAllowAttributeQueryHandlersWithNonReferenceTypeQueryResults()
            {
                var queryHandler = new TestAttributedQueryHandler(_outputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);

                var dispatcher = new QueryDispatcher(registration);
                var result     = dispatcher.Dispatch <QuerySomethingWithNonReferenceTypeResult, int>(new QuerySomethingWithNonReferenceTypeResult(1973));

                result.Should().Be(1973);
            }
コード例 #4
0
            public void ShouldInvokeRegisteredAttributeQueryHandler()
            {
                var queryHandler = new TestAttributedQueryHandler(_outputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);

                const string data = nameof(ShouldInvokeRegisteredAttributeQueryHandler);

                var dispatcher = new QueryDispatcher(registration);
                var result     = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data));

                result.Should().Be(data);
            }
コード例 #5
0
            public void Should_Invoke_Registered_Attribute_Query_Handler()
            {
                var queryHandler = new TestAttributedQueryHandler(_testOutputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);

                const string data = nameof(Should_Invoke_Registered_Attribute_Query_Handler);

                var dispatcher = new QueryDispatcher(registration);
                var result     = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data));

                Assert.Equal(result, data);
            }
コード例 #6
0
            public async Task ShouldInvokeRegisteredAttributeQueryHandlerWithCancellationToken()
            {
                var queryHandler = new TestAttributedQueryHandler(_outputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);
                var dispatcher = new QueryDispatcher(registration);

                var          cts  = new CancellationTokenSource();
                const string data = nameof(ShouldInvokeRegisteredAttributeQueryHandlerWithCancellationToken);

                var result = await dispatcher.DispatchAsync <QuerySomethingWithDelay, string>(new QuerySomethingWithDelay(data, 500), cts.Token);

                result.Should().Be(data);
            }
コード例 #7
0
            public async Task Should_Invoke_Registered_Attribute_Query_Handler_With_Cancellation_Token()
            {
                var queryHandler = new TestAttributedQueryHandler(_testOutputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);
                var dispatcher = new QueryDispatcher(registration);

                var          cts  = new CancellationTokenSource();
                const string data = nameof(Should_Invoke_Registered_Attribute_Query_Handler_With_Cancellation_Token);

                var result = await dispatcher.DispatchAsync <QuerySomethingWithDelay, string>(new QuerySomethingWithDelay(data, 500), cts.Token);

                Assert.Equal(data, result);
            }
コード例 #8
0
 public void Should_Not_Allow_Query_Handlers_With_Void_Return_Type()
 {
     Assert.Throws <InvalidOperationException>(() =>
     {
         try
         {
             var registration = new QueryHandlerAttributeRegistration();
             registration.Register(() => new TestAttributedQueryHandlerNoReturnType(_outputHelper));
         }
         catch (Exception ex)
         {
             _outputHelper.WriteLine(ex.ToString());
             throw;
         }
     });
 }
コード例 #9
0
            public void ShouldNotAllowQueryHandlersWithVoidReturnType()
            {
                Action action = () =>
                {
                    try
                    {
                        var registration = new QueryHandlerAttributeRegistration();
                        registration.Register(() => new TestAttributedQueryHandlerNoReturnType(_outputHelper));
                    }
                    catch (Exception ex)
                    {
                        _outputHelper.WriteLine(ex.ToString());
                        throw;
                    }
                };

                action.Should().Throw <InvalidOperationException>();
            }
コード例 #10
0
            public void ShouldInvokeRegisteredAttributeQueryHandlerWhenDispatchedMultipleTimes()
            {
                var queryHandler = new TestAttributedQueryHandler(_outputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);

                const string data1 = "Test message 1.";
                const string data2 = "Test message 2.";
                const int    data3 = 1;

                var dispatcher = new QueryDispatcher(registration);
                var result1    = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data1));
                var result2    = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data2));
                var result3    = dispatcher.Dispatch <QuerySomethingWithNonReferenceTypeResult, int>(new QuerySomethingWithNonReferenceTypeResult(data3));

                result1.Should().Be(data1);
                result2.Should().Be(data2);
                result3.Should().Be(data3);
            }
コード例 #11
0
            public void Should_Throw_When_No_Registered_Attribute_Query_Handler_Is_Found()
            {
                Assert.Throws <NoQueryHandlerResolvedException>(() =>
                {
                    var registration = new QueryHandlerAttributeRegistration();
                    var dispatcher   = new QueryDispatcher(registration);

                    const string data = nameof(Should_Throw_When_No_Registered_Attribute_Query_Handler_Is_Found);

                    try
                    {
                        var result = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data));
                    }
                    catch (Exception ex)
                    {
                        _testOutputHelper.WriteLine(ex.ToString());
                        throw;
                    }
                });
            }
コード例 #12
0
            public void Should_Invoke_Registered_Attribute_Query_Handler_When_Dispatched_Multiple_Times()
            {
                var queryHandler = new TestAttributedQueryHandler(_testOutputHelper);
                var registration = new QueryHandlerAttributeRegistration();

                registration.Register(() => queryHandler);

                const string data1 = "Test message 1.";
                const string data2 = "Test message 2.";
                const int    data3 = 1;

                var dispatcher = new QueryDispatcher(registration);
                var result1    = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data1));
                var result2    = dispatcher.Dispatch <QuerySomething, string>(new QuerySomething(data2));
                var result3    = dispatcher.Dispatch <QuerySomethingWithNonReferenceTypeResult, int>(new QuerySomethingWithNonReferenceTypeResult(data3));

                Assert.Equal(data1, result1);
                Assert.Equal(data2, result2);
                Assert.Equal(data3, result3);
            }