public async Task CreateVehicleCommandHandler_Handler_ReturnThatVehicleExist()
        {
            vehicleRepositoryAsyncMock.GetAsync(Arg.Any <string>()).Returns(new VehicleBuilder().Builder());
            var command = new CreateVehicleCommandBuilder().Builder();

            var result = await handler.Handle(command, new CancellationToken());

            Assert.False(result.Success);
            Assert.Equal("Este veiculo já esta cadastrado", result.Message);
        }
        public async Task Handle_CreateVehicleCommand_ReturnsVehicleId()
        {
            var fakeCreateVehicleCommand = FakeCreateVehicleCommand();
            var cursorMock = new Mock <IAsyncCursor <Vehicle> >();

            cursorMock.Setup(c => c.Current).Returns(new List <Vehicle>());

            vehicleCollectionMock
            .Setup(vehicles => vehicles.FindAsync(
                       It.IsAny <FilterDefinition <Vehicle> >(),
                       It.IsAny <FindOptions <Vehicle> >(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(cursorMock.Object);

            sparePartsDbContextMock.Setup(context => context.Vehicles)
            .Returns(vehicleCollectionMock.Object);

            var vehicleMapper = new FakeVehicleMapper();

            var createVehicleCommandHandler = new CreateVehicleCommandHandler(
                sparePartsDbContextMock.Object,
                loggerMock.Object,
                sparePartsIntegrationEventServiceMock.Object,
                clientSessionHandleMock.Object,
                vehicleMapper);

            var result = await createVehicleCommandHandler.Handle(fakeCreateVehicleCommand, default);

            var expectedId = "210e1e7b45b69bde39f423be";

            Assert.Equal(result.Value, expectedId.ToString());
        }
        public async Task Handle_CreateVehicleCommand_ReturnsMaybeHasNoValue_WhenThrowException()
        {
            var fakeCreateVehicleCommand = FakeCreateVehicleCommand();
            var cursorMock = new Mock <IAsyncCursor <Vehicle> >();

            cursorMock.Setup(c => c.Current).Returns(new List <Vehicle>());

            vehicleCollectionMock
            .Setup(vehicles => vehicles.FindAsync(
                       It.IsAny <FilterDefinition <Vehicle> >(),
                       It.IsAny <FindOptions <Vehicle> >(),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(cursorMock.Object);

            vehicleCollectionMock.Setup(ctx => ctx.InsertOneAsync(It.IsAny <Vehicle>(), null, default))
            .ThrowsAsync(new Exception());

            sparePartsDbContextMock.Setup(context => context.Vehicles)
            .Returns(vehicleCollectionMock.Object);

            var vehicleMapper = new VehicleMapper();
            var createVehicleCommandHandler = new CreateVehicleCommandHandler(
                sparePartsDbContextMock.Object,
                loggerMock.Object,
                sparePartsIntegrationEventServiceMock.Object,
                clientSessionHandleMock.Object,
                vehicleMapper);

            var result = await createVehicleCommandHandler.Handle(fakeCreateVehicleCommand, default);

            Assert.True(result.HasNoValue);
        }