コード例 #1
0
 public static CreateManyTransactionsCommand CreateFrom(CreateStatementCommand createStatementCommand)
 {
     return(new()
     {
         Transactions = createStatementCommand.Transactions
     });
 }
コード例 #2
0
        public async void ShouldReturnVoidedStatement()
        {
            // Arrange
            var mediatorMock  = new Mock <IMediator>();
            var authorityMock = new Mock <IClientContext>();

            var createStatementHandler = new CreateStatementCommandHandler(_context, mediatorMock.Object, _mapper, authorityMock.Object);

            var voidStatementQueryHandler = new VoidedStatemetQueryHandler(_context, _mapper);
            var voidedStatementId         = Guid.Parse("637E9E80-4B8D-4640-AC13-615C3E413568");

            var statement = new Statement("{\"actor\":{\"objectType\":\"Agent\",\"name\":\"xAPI mbox\",\"mbox\":\"mailto:[email protected]\"},\"verb\":{\"id\":\"http://adlnet.gov/expapi/verbs/attended\",\"display\":{\"en-GB\":\"attended\",\"en-US\":\"attended\"}},\"object\":{\"objectType\":\"Activity\",\"id\":\"http://www.example.com/meetings/occurances/34534\"}}");

            statement.Id = voidedStatementId;

            var voidingStatement = new Statement()
            {
                Actor = new Agent()
                {
                    Mbox = new Mbox("mailto:[email protected]")
                },
                Verb = new Verb()
                {
                    Id = new Iri("http://adlnet.gov/expapi/verbs/voided")
                },
                Object = new StatementRef()
                {
                    Id = voidedStatementId
                },
            };

            voidingStatement.Object.As <StatementRef>().Id = statement.Id.Value;

            // Act
            Guid statementId = await createStatementHandler.Handle(
                CreateStatementCommand.Create(statement),
                CancellationToken.None
                );

            // Create voiding statement
            Guid voidingStatementId = await createStatementHandler.Handle(
                CreateStatementCommand.Create(voidingStatement),
                CancellationToken.None
                );

            // Query voided statement
            StatementEntity voidedStatement = await voidStatementQueryHandler.Handle(
                VoidedStatemetQuery.Create(voidedStatementId),
                CancellationToken.None
                );

            // Assert
            mediatorMock.Verify(m => m.Publish(It.IsAny <StatementCreated>(), It.IsAny <CancellationToken>()), Times.AtLeast(2));
            voidedStatement.ShouldNotBe(null);
            voidedStatement.VoidingStatementId.ShouldBe(voidingStatementId);
        }
コード例 #3
0
        private CreateStatementCommand GetValidCommand()
        {
            var command = new CreateStatementCommand();

            command.Date = DateTime.UtcNow;
            command.Notes.RandomString(500);
            command.Amount    = 123;
            command.InvoiceId = Guid.NewGuid();

            return(command);
        }
コード例 #4
0
        public void IsValid_InvoiceId_Empty()
        {
            // Arrange
            _command           = GetValidCommand();
            _command.InvoiceId = Guid.Empty;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
コード例 #5
0
        public void IsValid_Amount_MinValue()
        {
            // Arrange
            _command        = GetValidCommand();
            _command.Amount = -1;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
コード例 #6
0
        public void IsValid_Notes_Null()
        {
            // Arrange
            _command       = GetValidCommand();
            _command.Notes = null;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.True(result);
        }
コード例 #7
0
        public void IsValid_Notes_MaxValue()
        {
            // Arrange
            _command       = GetValidCommand();
            _command.Notes = _command.Notes.RandomString(501);

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
コード例 #8
0
        public void IsValid_Date_MinValue()
        {
            // Arrange
            _command      = GetValidCommand();
            _command.Date = DateTime.MinValue;

            // Act
            var result = _command.IsValid();

            // Assert
            Assert.False(result);
        }
コード例 #9
0
        public async Task <ICollection <Guid> > Handle(CreateStatementsCommand request, CancellationToken cancellationToken)
        {
            var tasks = new List <Task <Guid> >();

            foreach (var statement in request.Statements)
            {
                tasks.Add(_mediator.Send(CreateStatementCommand.Create(statement), cancellationToken));
            }

            var ids = await Task.WhenAll(tasks);

            await _context.SaveChangesAsync(cancellationToken);

            await _mediator.Publish(new StatementsSaved());

            return(ids);
        }
コード例 #10
0
        public async void ShouldRaiseStatementCreatingNotification()
        {
            // Arrange
            var mediatorMock  = new Mock <IMediator>();
            var authorityMock = new Mock <IClientContext>();

            var       sut       = new CreateStatementCommandHandler(_context, mediatorMock.Object, _mapper, authorityMock.Object);
            Statement statement = GetStatement(Guid.NewGuid());

            // Act
            var result = await sut.Handle(CreateStatementCommand.Create(statement), CancellationToken.None);

            // Assert
            mediatorMock.Verify(m => m.Publish(
                                    It.IsAny <StatementCreating>(),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
コード例 #11
0
        public async void Handle_GivenValidRequest_ShouldRaiseStatementCreatedNotification()
        {
            // Arrange
            var mediatorMock  = new Mock <IMediator>();
            var authorityMock = new Mock <IClientContext>();

            var       createStatement = new CreateStatementCommandHandler(_context, mediatorMock.Object, _mapper, authorityMock.Object);
            Guid      newStatementId  = Guid.NewGuid();
            Statement statement       = GetStatement(newStatementId);

            // Act
            var result = await createStatement.Handle(CreateStatementCommand.Create(statement), CancellationToken.None);

            // Assert
            mediatorMock.Verify(m => m.Publish(
                                    It.Is <StatementCreated>(cc => cc.Created.StatementId == newStatementId),
                                    It.IsAny <CancellationToken>()),
                                Times.Once);
        }
コード例 #12
0
        public async Task Handle_CreateStatementCommand_Return_True()
        {
            //arrange
            Guid INVOICE_ID = Guid.NewGuid(); 
            var command = new CreateStatementCommand()
            {
                Amount = 123.45,
                Date = DateTime.UtcNow,
                Notes = "NOTES",
                InvoiceId = INVOICE_ID
            };

            _mocker.GetMock<IInvoiceRepository>()
                .Setup(m => m.GetById(It.Is<Guid>(id => id == INVOICE_ID)))
                .Returns(value: new Invoice())
                .Verifiable("IInvoiceRepository.GetById should have been called");

            _mocker.GetMock<IStatementRepository>()
                .Setup(m => m.Create(It.IsAny<Statement>()))
                .Verifiable("IStatementRepository.Create should have been called");

            _mocker.GetMock<IStatementRepository>()
                .Setup(m => m.GetByDate(It.IsAny<Guid>(), It.IsAny<DateTime>()))
                .Returns(value: null)
                .Verifiable("IStatementRepository.GetByName should have been called");

            _mocker.GetMock<IMediatorHandler>()
                .Setup(m => m.RaiseEvent(It.IsAny<StatementCreatedEvent>()))
                .Verifiable("An event StatementCreatedEvent should have been raised");

            //act
            var result = await _statementCommandHandler.Handle(command, CancellationToken.None);

            //assert
            _mocker.GetMock<IStatementRepository>().Verify();
            _mocker.GetMock<IInvoiceRepository>().Verify();
            _mocker.GetMock<IMediatorHandler>().Verify();
            Assert.True(result);
        }
コード例 #13
0
 public CreateStatementCommandTests()
 {
     _command = new CreateStatementCommand();
 }
コード例 #14
0
        public async Task <IActionResult> Create([FromBody] CreateStatementCommand command)
        {
            await Mediator.Send(command);

            return(NoContent());
        }