public void ReserveProduct_ДваТовараВМеньшемКоличестве_ОдинТоварНаСкладеУдаляетсяВторойУменьшается()
        {
            // Arrange
            var товарНаСкладе1 = new ТоварНаСкладе
            {
                Количество = 2
            };

            товарНаСкладе1.InitDataCopy();

            var товарНаСкладе2 = new ТоварНаСкладе
            {
                Количество = 3
            };

            товарНаСкладе2.InitDataCopy();

            var dataServiceMock = new Mock <IDataService>();

            dataServiceMock.Setup(x => x.LoadObjects(It.Is <LoadingCustomizationStruct>(lcs => lcs.LoadingTypes.Contains(typeof(ТоварНаСкладе)))))
            .Returns(new[] { товарНаСкладе1, товарНаСкладе2 });

            var whs = new WarehouseService(dataServiceMock.Object);

            // Act
            whs.ReserveProduct(new Товар(), 4);

            // Assert
            Assert.Equal(ObjectStatus.Deleted, товарНаСкладе1.GetStatus());
            Assert.Equal(1, товарНаСкладе2.Количество);
        }
Example #2
0
        /// <summary>
        /// Создание нескольких объектов данных в базе данных за одну операцию.
        /// </summary>
        /// <remarks>
        /// Порядок добавления и изменения объектов данных сервис данных как правило контролирует сам, но есть ряд случаев, когда необходимо
        /// соблюдать оперделенный порядок передачи объектов данных в соответствующий массив:
        ///   - Наличие циклов в графе типов
        ///   - Удаление объекта и его мастера в одной транзакции
        ///   - Ситуация, когда агрегатор и детейл имеют мастера одного типа
        ///   - Другие варианты при наличии связанных объектов с разными статусами, т.е. когда часть объектов добавляется, часть - обновляется, часть - удаляется
        /// </remarks>
        static void CreateObjects()
        {
            var t = new Товар()
            {
                Название = "Батон", ЕдиницаИзмерения = "шт", Описание = "Вкусняшка", Цена = 22, КодТовара = 123
            };
            var t2 = new Товар()
            {
                Название = "Гвозди", ЕдиницаИзмерения = "кг", Описание = "Железные гвозди", Цена = 150, КодТовара = 33
            };
            var s = new Сотрудник()
            {
                Фамилия = "Сидоров", Имя = "Сидор", ТабельныйНомер = 345
            };
            var s2 = new Сотрудник()
            {
                Фамилия = "Петров", Имя = "Петр", ТабельныйНомер = 777
            };
            var skl = new Склад()
            {
                Номер = 15, Адрес = "ул. Ленина, 49", Менеджер = s
            };
            var skl2 = new Склад()
            {
                Номер = 28, Адрес = "ул. Промышленная, 88", Менеджер = s
            };
            var tovarSkl = new ТоварНаСкладе()
            {
                Товар = t, Количество = 10
            };
            var tovarSkl2 = new ТоварНаСкладе()
            {
                Товар = t2, Количество = 5
            };
            var tovarSkl3 = new ТоварНаСкладе()
            {
                Товар = t2, Количество = 4
            };

            skl.ТоварНаСкладе.Add(tovarSkl);
            skl.ТоварНаСкладе.Add(tovarSkl2);
            skl2.ТоварНаСкладе.Add(tovarSkl3);
            try
            {
                var p  = new DataObject[] { t, t2, s, s2, skl, skl2 };
                var ds = (SQLDataService)DataServiceProvider.DataService;
                ds.UpdateObjects(ref p);
                Console.WriteLine("ОК\n");
            }
            catch (Exception e)
            {
                Console.WriteLine(string.Format("Ошибка: {0}\n", e.Message));
            }
        }
        public void ReserveProduct_ОдинТоварВНужномКоличестве_ТоварНаСкладеУдаляется()
        {
            // Arrange
            var товарНаСкладе = new ТоварНаСкладе
            {
                Количество = 4
            };

            товарНаСкладе.InitDataCopy();

            var dataServiceMock = new Mock <IDataService>();

            dataServiceMock.Setup(x => x.LoadObjects(It.Is <LoadingCustomizationStruct>(lcs => lcs.LoadingTypes.Contains(typeof(ТоварНаСкладе)))))
            .Returns(new[] { товарНаСкладе });

            var whs = new WarehouseService(dataServiceMock.Object);

            // Act
            whs.ReserveProduct(new Товар(), 4);

            // Assert
            Assert.Equal(ObjectStatus.Deleted, товарНаСкладе.GetStatus());
        }
        public void ReserveProduct_ОдинТоварСБольшимОстатком_ОстатокУменьшается()
        {
            // Arrange
            var товарНаСкладе = new ТоварНаСкладе
            {
                Количество = 5
            };

            товарНаСкладе.InitDataCopy();

            var dataServiceMock = new Mock <IDataService>();

            dataServiceMock.Setup(x => x.LoadObjects(It.Is <LoadingCustomizationStruct>(lcs => lcs.LoadingTypes.Contains(typeof(ТоварНаСкладе)))))
            .Returns(new[] { товарНаСкладе });

            var whs = new WarehouseService(dataServiceMock.Object);

            // Act
            whs.ReserveProduct(new Товар(), 4);

            // Assert
            Assert.Equal(1, товарНаСкладе.Количество);
        }