예제 #1
0
        public async Task ReturnsExecutedQueriesAsync()
        {
            // Arrange
            var guid           = Guid.NewGuid();
            var queryProcessor = new FakeQueryProcessor();

            // Act
            await queryProcessor.ExecuteAsync(new TestQueryA(guid));

            await queryProcessor.ExecuteAsync(new TestQueryB(100));

            await queryProcessor.ExecuteAsync(new TestQueryB(200));

            await queryProcessor.ExecuteAsync(new TestQueryB(300));

            // Assert
            queryProcessor.GetExecutedQueries().Count().ShouldBe(4);

            queryProcessor.GetExecutedQueries <TestQueryA>().Count().ShouldBe(1);
            queryProcessor.GetExecutedQueries <TestQueryB>().Count().ShouldBe(3);
            queryProcessor.GetExecutedQueries <TestQueryC>().Count().ShouldBe(0);

            queryProcessor.GetExecutedQueries <TestQueryA>().Single().Id.ShouldBe(guid);
            queryProcessor.GetExecutedQueries <TestQueryB>().ElementAt(0).Number.ShouldBe(100);
            queryProcessor.GetExecutedQueries <TestQueryB>().ElementAt(1).Number.ShouldBe(200);
            queryProcessor.GetExecutedQueries <TestQueryB>().ElementAt(2).Number.ShouldBe(300);
        }