Esempio n. 1
0
        public async Task Handle__DriverExistInStorage__ReturnSuccess()
        {
            // Arrange
            var orderId  = _faker.Random.Int(min: 0);
            var driverId = _faker.Random.Int(min: 0);
            var driver   = new Driver()
            {
                Id       = driverId,
                FullName = _faker.Person.FullName,
                Phone    = _faker.Phone.PhoneNumber("+7 (9##) ###-##-##")
            };
            var appSettings = AppSettingsFake.Generate();

            #region IDbExecutor

            var dbExecutor = Substitute.For <IDbExecutor>();
            dbExecutor.Query <Driver>(Arg.Any <string>()).Returns(new List <Driver>()
            {
                driver
            });
            // NOTE: здесь надо быть осторожным, потому что если у нас будет несколько вызовов Execute внутри
            // тестируемого компонента, то т.к. стоит Arg.Any<T>, то будут переопределены все вызовы
            dbExecutor.Execute(Arg.Any <string>());

            #endregion

            #region IDbExecutorFactory

            var dbExecutorFactory = Substitute.For <IDbExecutorFactory>();
            dbExecutorFactory.Create(appSettings.ConnectionStrings.OrdersDb).Returns(dbExecutor);

            #endregion

            var handler = CreateTestedComponent(appSettings, dbExecutorFactory);
            var request = new SetDriverForOrderCommandRequest()
            {
                OrderId  = orderId,
                DriverId = driverId
            };
            // Act
            var result = await handler.Handle(request, CancellationToken.None);

            // Assert
            Assert.True(result.Success);
        }
Esempio n. 2
0
        public async Task Handle__DriverNotFoundInStorage__ReturnFailureWithValidErrorMessage()
        {
            // Arrange
            var orderId     = _faker.Random.Int(min: 0);
            var driverId    = _faker.Random.Int(min: 0);
            var appSettings = AppSettingsFake.Generate();

            #region IDbExecutor

            var dbExecutor = Substitute.For <IDbExecutor>();
            // 1 способ:
            dbExecutor.Query <Driver>(Arg.Any <string>()).Returns(new List <Driver>());
            // 2 способ:
//            var getDriverSql = $@"
//select *
//from Drivers
//where Id = {driverId};
//";
//            dbExecutor.Query<Driver>(getDriverSql).Returns(new List<Driver>());

            #endregion

            #region IDbExecutorFactory

            var dbExecutorFactory = Substitute.For <IDbExecutorFactory>();
            dbExecutorFactory.Create(appSettings.ConnectionStrings.OrdersDb).Returns(dbExecutor);

            #endregion

            var handler = CreateTestedComponent(appSettings, dbExecutorFactory);
            var request = new SetDriverForOrderCommandRequest()
            {
                OrderId  = orderId,
                DriverId = driverId
            };
            // Act
            var result = await handler.Handle(request, CancellationToken.None);

            // Assert
            Assert.True(result.Failure);
            Assert.Contains("Назначаемый водитель не найден", result.ToMultiLine());
        }