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.Количество); }
/// <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, товарНаСкладе.Количество); }