Esempio n. 1
0
        public void ExecuteWillPerformDatabaseProcedureToCreatePoint()
        {
            // Arrange
            var databaseMock = new Mock <IDatabase>();
            var serviceStub  = new CreatePointServiceStub(databaseMock.Object);
            var command      = new CreatePointCommand
            {
                UserId = 0
            };
            var transaction             = Mock.Of <IDbTransaction>();
            var procedureMock           = new Mock <IDbCommand>();
            var parameter               = Mock.Of <IDbDataParameter>();
            var parameterCollectionMock = new Mock <IDataParameterCollection>();

            // Mock
            databaseMock.Setup(mock =>
                               mock.TryExecuteTransaction(It.IsAny <Action <IDbTransaction> >())
                               ).Callback((Action <IDbTransaction> transactionAction) => {
                transactionAction.Invoke(transaction);
            });

            databaseMock.Setup((mock) =>
                               mock.CreateStoredProcCommand(
                                   CreatePointServiceStub.StubbedProcedureName,
                                   transaction)
                               ).Returns(procedureMock.Object);

            databaseMock.Setup((mock) =>
                               mock.CreateParameter(It.IsAny <string>(), It.IsAny <object>()))
            .Returns(parameter);

            procedureMock.SetupGet(mock => mock.Parameters)
            .Returns(parameterCollectionMock.Object);

            // Act
            serviceStub.Execute(command);

            // Assert
            databaseMock.Verify(mock =>
                                mock.TryExecuteTransaction(It.IsAny <Action <IDbTransaction> >()),
                                Times.Once);

            databaseMock.Verify(mock =>
                                mock.CreateStoredProcCommand(
                                    CreatePointServiceStub.StubbedProcedureName,
                                    transaction),
                                Times.Once);

            databaseMock.Verify(mock =>
                                mock.CreateParameter("UserId", command.UserId),
                                Times.AtLeastOnce);

            parameterCollectionMock.Verify(mock => mock.Add(parameter), Times.Once);

            databaseMock.Verify(mock => mock.Execute(procedureMock.Object), Times.Once);
        }
Esempio n. 2
0
        public async Task <IActionResult> Post([FromBody] PointDTO dto)
        {
            var command = new CreatePointCommand(UserId, dto.Time);
            await _mediator.Send(command);

            if (HasNotifications())
            {
                return(BadRequest(LoadErrorMessages()));
            }

            return(Ok());
        }
        public async Task <DomainResult <ObjectId> > Handle(CreatePointCommand command, CancellationToken cancellationToken)
        {
            var point = Point.Create(command);

            var alreadyExists = await _pointRepository.AlreadyExistsAsync(x => x.IsTheSame(point));

            if (alreadyExists)
            {
                return(DomainResult.Failure <ObjectId>("Point already exists", HttpStatusCode.Conflict));
            }

            await _pointRepository.CreateAsync(point);

            await _mediator.Publish(new PointCreatedEvent(point));

            return(DomainResult.Ok(point.Id));
        }
Esempio n. 4
0
 internal static Point Create(CreatePointCommand command)
 => new Point(command.Name);
Esempio n. 5
0
        public async Task <ActionResult <int> > Create(CreatePointCommand command)
        {
            await _mediator.Send(command, HttpContext.RequestAborted);

            return(Ok());
        }