Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        /// <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));
        }