public async Task ShouldReturn_StatementsResult_WithAgent() { // Arrange var distributedCacheMock = new Mock <IDistributedCache>(); var mediatorMock = new Mock <IMediator>(); var agent = new Agent() { Mbox = new Mbox("mailto:[email protected]"), Name = "xAPI account" }; var handler = new PagedStatementsQueryHandler(_context, mediatorMock.Object, _mapper, distributedCacheMock.Object); var query = new PagedStatementsQuery() { Agent = agent }; // Act // var result = sut.Handle(new CreateStatementCommand { Statement = statement }, CancellationToken.None); var result = await handler.Handle(query, CancellationToken.None); // Assert result.ShouldNotBeNull(); result.Statements.ShouldNotBeNull(); result.Statements.ShouldAllBe(x => x.Actor.Equals(agent)); }
/// <inheritdoc/> public async Task <StatementsResult> GetStatementsResult(StatementsQuery parameters, CancellationToken cancellationToken = default) { HttpRequest request = httpContextAccessor.HttpContext.Request; IQueryCollection requestQuery = request.Query; var cmd = new PagedStatementsQuery() { ActivityId = parameters.ActivityId, Agent = parameters.Agent, Ascending = parameters.Ascending, Attachments = parameters.Attachments, Format = parameters.Format, Registration = parameters.Registration, RelatedActivities = parameters.RelatedActivities, RelatedAgents = parameters.RelatedAgents, Limit = parameters.Limit, Since = parameters.Since, Until = parameters.Until, StatementId = parameters.StatementId, VerbId = parameters.VerbId, VoidedStatementId = parameters.VoidedStatementId }; if (requestQuery.TryGetValue("cursor", out StringValues value)) { cmd.Cursor = (string)value; } var pagedResult = await mediator.Send(cmd, cancellationToken); var result = new StatementsResult() { Statements = mapper.Map <StatementCollection>(pagedResult.Statements) }; if (pagedResult.Cursor != null) { string cursor = pagedResult.Cursor; string relativePath = $"{request.Path}?cursor={cursor}"; result.More = new Uri(relativePath, UriKind.Relative); } return(result); }
public async Task ShouldReturn_StatementsResult_WithVerb() { // Arrange var distributedCacheMock = new Mock <IDistributedCache>(); var handler = new PagedStatementsQueryHandler(_context, _mapper, distributedCacheMock.Object); var verb = new Iri("http://adlnet.gov/expapi/verbs/attended"); var query = new PagedStatementsQuery() { VerbId = verb }; // Act // var result = sut.Handle(new CreateStatementCommand { Statement = statement }, CancellationToken.None); var result = await handler.Handle(query, CancellationToken.None); // Assert result.ShouldNotBeNull(); result.Statements.ShouldNotBeNull(); result.Statements.ShouldAllBe(x => x.Verb.Equals(verb)); }