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); }
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)); }
internal static Point Create(CreatePointCommand command) => new Point(command.Name);
public async Task <ActionResult <int> > Create(CreatePointCommand command) { await _mediator.Send(command, HttpContext.RequestAborted); return(Ok()); }