public CreateVehicleCommandHandlerTest()
        {
            unitOfWorkMock             = Substitute.For <IUnitOfWork>();
            vehicleRepositoryAsyncMock = Substitute.For <IVehicleRepositoryAsync>();

            handler = new CreateVehicleCommandHandler(vehicleRepositoryAsyncMock, unitOfWorkMock);
        }
        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);
        }
        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 void TestInitialize()
 {
     _vehicleRepositoryMock = new Mock <IVehicleRepository>();
     _vehicleRepositoryMock.Setup(x => x.CreateVehicle(It.IsAny <Vehicle>()));
     _createVehicleCommandHandler = new CreateVehicleCommandHandler(
         _vehicleRepositoryMock.Object);
 }