// Корректная регистрация водяного счетчика public void AddMeterTestSuccess() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { // Регистрация новом дома var newHouse = new House { Address = "Lenina 1" }; monitor.AddBuilding(newHouse); // Регистрация водяного счетчика в новом доме var newWaterMeter = new WaterMeter { BuildingId = newHouse.Id, Id = 1, Value = 1 }; monitor.AddMeter(newWaterMeter); // Получение полной информации о новом доме var house = monitor.GetBuilding(h => h.Id == newWaterMeter.BuildingId, w => w.WaterMeter); // В доме устновлен водяной счетчик Assert.NotNull(house.WaterMeter); // У этого счетчика правильные показатели Assert.Equal(house.WaterMeter.Id, newWaterMeter.Id); // У этого счетчика правильные показатели Assert.Equal(house.WaterMeter.Value, newWaterMeter.Value); } }
// Регистрация счетчика, неподдерживаемого системой мониторинга public void AddMeterTestNotWater() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { // Регистрация новом дома var newHouse = new House { Address = "Lenina 1" }; monitor.AddBuilding(newHouse); // Регистрация счетчика в новом доме var newMeter = new Meter { BuildingId = newHouse.Id, Id = 1, Value = 1 }; // Убеждаемся что счетчика с таким номером не зарегистрировано в системе Assert.Null(monitor.GetMeter(newMeter.Id)); // Исключение, установка счетчика не поддерживаемого системой мониторинга Assert.Throws <ArgumentException>(() => monitor.AddMeter(newMeter)); // Убеждаемся что счетчик не зарегистрировался Assert.Null(monitor.GetMeter(newMeter.Id)); } }
// Регистрация счетчиков с одним номером в разных строениях public void AddMeterTestDuplicate() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { // Регистрация новых домов var newHouse1 = new House { Address = "Lenina 1" }; var newHouse2 = new House { Address = "Lenina 2" }; monitor.AddBuilding(newHouse1); monitor.AddBuilding(newHouse2); // Регистрация водяных счетчиков с одинаковыми номерами в новых домах var newWaterMeter1 = new WaterMeter { BuildingId = newHouse1.Id, Id = 1, Value = 1 }; var newWaterMeter2 = new WaterMeter { BuildingId = newHouse2.Id, Id = 1, Value = 1 }; monitor.AddMeter(newWaterMeter1); // Исключение, одинаковые номера счетчиков в разных домах Assert.Throws <InvalidOperationException>(() => monitor.AddMeter(newWaterMeter2)); // Первый счетчик зарегистрировался Assert.NotNull(monitor.GetMeter(newWaterMeter1.Id)); // Первый счетчик зарегистрировался с первым строением Assert.NotNull(monitor.GetBuilding(b => b.Id == newWaterMeter1.BuildingId, w => w.WaterMeter) .WaterMeter); // Второго счетчик не зарегистрировася со вторым строением Assert.Null(monitor.GetBuilding(b => b.Id == newWaterMeter2.BuildingId, w => w.WaterMeter).WaterMeter); } }
// Корректная регистрация строения public async Task AddBuildingTestSuccess() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { monitor.AddBuilding(new House { Address = "Lenina 1" }); var houses = await monitor.GetAllBuildingsAsync(b => b.WaterMeter); // Возращается список строений Assert.IsAssignableFrom <IEnumerable <Building> >(houses); // В списке одно здание Assert.Single(houses); // У этого здания нет водяного счетчика Assert.Null(houses.FirstOrDefault().WaterMeter); } }