public void UpdateOtherAgregatorInstanceTest() { foreach (IDataService dataService in DataServices) { // Шаг 1. Создание экземпляра класса А хотя бы с одним детейлом класса В. var берлога = new Берлога { Наименование = "У потапыча" }; var потапыч = new Медведь { ПорядковыйНомер = 5 }; потапыч.Берлога.Add(берлога); dataService.UpdateObject(потапыч); // Шаг 2. Создание другого экземпляра класса А с установкой первичного ключа первого экземпляра. var pk = (KeyGuid)потапыч.__PrimaryKey; var берёзыч = new Медведь { ПорядковыйНомер = 6 }; берёзыч.SetExistObjectPrimaryKey(pk); // Шаг 3. Допустимо пропустить. // Шаг 4. Создание экземпляра класса С с установкой в качестве мастера второго экземпляра класса А. var блоха = new Блоха { Кличка = "Попрыгушка", МедведьОбитания = берёзыч }; // Шаг 5. Обновление экземпляра класса С в базу данных. dataService.UpdateObject(блоха); Assert.Equal(1, потапыч.Берлога.Count); } }
public void TestFilterAnyAll() { ActODataService(args => { ExternalLangDef.LanguageDef.DataService = args.DataService; DateTime date = new DateTimeOffset(DateTime.Now).UtcDateTime; КлассСМножествомТипов класс = new КлассСМножествомТипов() { PropertyEnum = Цифра.Семь, PropertyDateTime = date }; Медведь медв = new Медведь { Вес = 48, Пол = tПол.Мужской }; Медведь медв2 = new Медведь { Вес = 148, Пол = tПол.Мужской }; Лес лес1 = new Лес { Название = "Бор" }; Лес лес2 = new Лес { Название = "Березовая роща" }; медв.ЛесОбитания = лес1; var берлога1 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; var берлога2 = new Берлога { Наименование = "Для плохого настроения", ЛесРасположения = лес2 }; var берлога3 = new Берлога { Наименование = "Для хорошего настроения", ЛесРасположения = лес1 }; медв.Берлога.Add(берлога1); медв.Берлога.Add(берлога2); медв2.Берлога.Add(берлога3); Блоха блоха = new Блоха() { Кличка = "1", МедведьОбитания = медв }; var objs = new DataObject[] { класс, медв, медв2, берлога2, берлога1, берлога3, лес1, лес2, блоха }; args.DataService.UpdateObjects(ref objs); string requestUrl; // Проверка использования в фильтрации функции any. requestUrl = "http://localhost/odata/Медведьs?$expand=Берлога&$filter=Берлога/any(f:f/Наименование eq 'Для хорошего настроения')"; // Обращаемся к OData-сервису и обрабатываем ответ. using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result) { // Убедимся, что запрос завершился успешно. Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Получим строку с ответом. string receivedStr = response.Content.ReadAsStringAsync().Result.Beautify(); // Преобразуем полученный объект в словарь. Dictionary <string, object> receivedDict = new JavaScriptSerializer().Deserialize <Dictionary <string, object> >(receivedStr); Assert.Equal(2, ((ArrayList)receivedDict["value"]).Count); } // Проверка использования в фильтрации функции all. requestUrl = $"http://localhost/odata/Медведьs?$filter=Берлога/all(f:f/Наименование eq 'Для хорошего настроения')"; // Обращаемся к OData-сервису и обрабатываем ответ. using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result) { // Убедимся, что запрос завершился успешно. Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Получим строку с ответом. string receivedStr = response.Content.ReadAsStringAsync().Result.Beautify(); // Преобразуем полученный объект в словарь. Dictionary <string, object> receivedDict = new JavaScriptSerializer().Deserialize <Dictionary <string, object> >(receivedStr); Assert.Equal(1, ((ArrayList)receivedDict["value"]).Count); } }); }