예제 #1
0
        public async Task QueryAsync_WhenExportDataWasReturned_ReturnsCsvContentInByteArray()
        {
            int numberOfColumns = _random.Next(5, 10);
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut(numberOfColumns: numberOfColumns);

            byte[] result = await sut.QueryAsync(CreateExportQuery());

            Regex allowCsvContentRegularExpression = GetAllowCsvContentRegularExpression(numberOfColumns);

            await using MemoryStream memoryStream = new MemoryStream(result);
            using StreamReader streamReader       = new StreamReader(memoryStream, Encoding.UTF8);

            string headerContent = await streamReader.ReadLineAsync();

            Assert.That(allowCsvContentRegularExpression.IsMatch(headerContent ?? string.Empty), Is.True);

            while (streamReader.EndOfStream == false)
            {
                string dataContent = await streamReader.ReadLineAsync();

                Assert.That(allowCsvContentRegularExpression.IsMatch(dataContent ?? string.Empty), Is.True);
            }

            streamReader.Close();
        }
        public Task <TResult> QueryAsync <TQuery, TResult>(TQuery query) where TQuery : IQuery
        {
            NullGuard.NotNull(query, nameof(query));

            return(Task.Run(async() =>
            {
                try
                {
                    IQueryHandler <TQuery, TResult> queryHandler = _queryHandlers.OfType <IQueryHandler <TQuery, TResult> >().SingleOrDefault();
                    if (queryHandler == null)
                    {
                        throw new IntranetExceptionBuilder(ErrorCode.NoQueryHandlerSupportingQuery, query.GetType().Name, typeof(TResult).Name).Build();
                    }

                    return await queryHandler.QueryAsync(query);
                }
                catch (IntranetExceptionBase)
                {
                    throw;
                }
                catch (AggregateException aggregateException)
                {
                    throw Handle(aggregateException, innerException => new IntranetExceptionBuilder(ErrorCode.ErrorWhileQueryingQuery, query.GetType().Name, typeof(TResult).Name, innerException.Message).WithInnerException(innerException));
                }
                catch (Exception ex)
                {
                    throw new IntranetExceptionBuilder(ErrorCode.ErrorWhileQueryingQuery, query.GetType().Name, typeof(TResult).Name, ex.Message)
                    .WithInnerException(ex)
                    .Build();
                }
            }));
        }
예제 #3
0
        public async Task QueryAsync_WhenExportDataWasReturned_AssertDisposeWasNotCalledOnExportDataContentBuilder()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            await sut.QueryAsync(CreateExportQuery());

            _exportDataContentBuilderMock.Verify(m => m.Dispose(), Times.Once);
        }
예제 #4
0
        public async Task QueryAsync_WhenExportDataWasReturned_ReturnsNotNull()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            byte[] result = await sut.QueryAsync(CreateExportQuery());

            Assert.That(result, Is.Not.Null);
        }
예제 #5
0
        public async Task QueryAsync_WhenNoExportDataWasReturned_AssertWithContentAsyncWasNotCalledOnExportDataContentBuilder()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut(false);

            await sut.QueryAsync(CreateExportQuery());

            _exportDataContentBuilderMock.Verify(m => m.WithContentAsync(It.IsAny <IExportQuery>(), It.IsAny <string>()), Times.Never);
        }
예제 #6
0
        public async Task QueryAsync_WhenCalled_AssertGetExportDataAsyncWasCalledOnExportToCsvQueryHandlerBase()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            await sut.QueryAsync(CreateExportQuery());

            Assert.That(((MyExportToCsvQueryHandler)sut).GetExportDataAsyncWasCalled, Is.True);
        }
예제 #7
0
        public async Task QueryAsync_WhenNoExportDataWasReturned_ReturnsEmptyByteArray()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut(false);

            byte[] result = await sut.QueryAsync(CreateExportQuery());

            Assert.That(result.Length, Is.EqualTo(0));
        }
예제 #8
0
        public async Task QueryAsync_WhenExportDataWasReturned_ReturnsNonEmptyByteArray()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            byte[] result = await sut.QueryAsync(CreateExportQuery());

            Assert.That(result.Length, Is.GreaterThan(0));
        }
예제 #9
0
        public async Task QueryAsync_WhenNoExportDataWasReturned_AssertCreateExportDataContentBuilderAsyncWasNotCalledOnExportQueryHandlerBaseWithExportQuery()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut(false);

            await sut.QueryAsync(CreateExportQuery());

            Assert.That(((MyExportQueryHandler)sut).CreateExportDataContentBuilderAsyncWasCalled, Is.False);
        }
예제 #10
0
        public async Task QueryAsync_WhenExportDataWasReturned_ReturnsByteArray()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            byte[] result = await sut.QueryAsync(CreateExportQuery());

            Assert.That(result, Is.TypeOf <byte[]>());
        }
예제 #11
0
        public async Task QueryAsync_WhenExportDataWasReturned_AssertWithFooterAsyncWasCalledOnExportDataContentBuilder()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            IExportQuery query = CreateExportQuery();
            await sut.QueryAsync(query);

            _exportDataContentBuilderMock.Verify(m => m.WithFooterAsync(It.Is <IExportQuery>(value => value != null && value == query)), Times.Once);
        }
예제 #12
0
        public async Task QueryAsync_WhenExportDataWasReturned_ReturnsBuildAsyncResultFromExportDataContentBuilder()
        {
            byte[] exportDataContent = _fixture.CreateMany <byte>(_random.Next(1024, 4096)).ToArray();
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut(exportDataContent: exportDataContent);

            byte[] result = await sut.QueryAsync(CreateExportQuery());

            Assert.That(result, Is.EqualTo(exportDataContent));
        }
예제 #13
0
        public async Task QueryAsync_WhenCalled_AssertGetExportDataAsyncWasCalledOnExportToCsvQueryHandlerBaseWithExportQuery()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            IExportQuery query = CreateExportQuery();
            await sut.QueryAsync(query);

            Assert.That(((MyExportToCsvQueryHandler)sut).GetExportDataAsyncExportQuery, Is.EqualTo(query));
        }
예제 #14
0
        public async Task QueryAsync_WhenExportDataWasReturned_AssertWithContentAsyncWasCalledOnExportDataContentBuilder()
        {
            string exportData = _fixture.Create <string>();
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut(exportData: exportData);

            IExportQuery query = CreateExportQuery();
            await sut.QueryAsync(query);

            _exportDataContentBuilderMock.Verify(m => m.WithContentAsync(
                                                     It.Is <IExportQuery>(value => value != null && value == query),
                                                     It.Is <string>(value => string.CompareOrdinal(value, exportData) == 0)),
                                                 Times.Once);
        }
        public async Task <IReadOnlyList <Epic> > QueryAsync(GetEpicsQuery query)
        {
            var results = await GetRequestAsync($"/rest/agile/1.0/board/{query.BoardId}/epic");

            var epics = _epicResultsResolver.Resolve(results);

            foreach (var epic in epics)
            {
                var userStoryResults = await _userStoriesQueryHandler.QueryAsync(new GetUserStoriesQuery { EpicId = epic.Id });

                epic.SubEntities = userStoryResults;
            }

            return(epics);
        }
예제 #16
0
        protected override Task <IEnumerable <IContact> > GetExportDataAsync(IExportContactCollectionQuery query)
        {
            NullGuard.NotNull(query, nameof(query));

            return(_getContactCollectionQueryHandler.QueryAsync(query.ToGetContactCollectionQuery()));
        }
예제 #17
0
 public async Task <IQueryResult <CompanyQueryModel> > QueryAsync(
     IQueryOptions options) =>
 await _queryHandler.QueryAsync(options ?? new QueryOptions());
예제 #18
0
 QueryLocationsAsync(int companyId, IQueryOptions options) =>
 await _locationQueryHandler.QueryAsync(
     options, l => l.CompanyId == companyId);
예제 #19
0
 QueryEmployeesAsync(int companyId, IQueryOptions options) =>
 await _employeeQueryHandler.QueryAsync(
     options, e => e.Location.CompanyId == companyId);
예제 #20
0
        public void QueryAsync_WhenQueryIsNull_ThrowsArgumentNullException()
        {
            IQueryHandler <IExportQuery, byte[]> sut = CreateSut();

            ArgumentNullException result = Assert.ThrowsAsync <ArgumentNullException>(async() => await sut.QueryAsync(null));

            Assert.That(result.ParamName, Is.EqualTo("query"));
        }
예제 #21
0
 public async Task <IQueryResult <EmployeeQueryModel> > QueryAsync(
     IQueryOptions options) =>
 await _queryHandler.QueryAsync(options);
예제 #22
0
 QueryEmployeesAsync(int locationId, IQueryOptions options) =>
 await _employeeQueryHandler.QueryAsync(
     options, e => e.LocationId == locationId);