public void TestFunctionExportTest() { ActODataService(args => { DataServiceProvider.DataService = args.DataService; args.Token.Functions.Register(new Func <QueryParameters, string, Страна[]>(FunctionExportExcel)); // Create objects and put them in the database. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = string.Format("Страна №{0}", i) }; } args.DataService.UpdateObjects(ref countries); string requestUrl = string.Format( "http://localhost/odata/{0}?{1}", "FunctionExportExcel(entitySet='Странаs')", "exportExcel=true&colsOrder=Название/Название&detSeparateCols=false&detSeparateRows=false&$filter=contains(Название,'1')"); using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result) { Assert.Equal(HttpStatusCode.OK, response.StatusCode); byte[] contentExcel = response.Content.ReadAsByteArrayAsync().Result; } }); }
public void ExportTest() { ActODataService(args => { // Create objects and put them in the database. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = string.Format("Страна №{0}", i) }; } args.DataService.UpdateObjects(ref countries); // The request URL to the OData service is generated. string requestUrl = string.Format( "http://localhost/odata/{0}?{1}", args.Token.Model.GetEdmEntitySet(typeof(Страна)).Name, "exportExcel=true&colsOrder=Название/Название&detSeparateCols=false&detSeparateRows=false&$filter=contains(Название,'1')"); // A request is made to the OData service and the response is processed. using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result) { Assert.Equal(HttpStatusCode.OK, response.StatusCode); byte[] contentExcel = response.Content.ReadAsByteArrayAsync().Result; } }); }
public void TestFunctionFunctionWithLcs() { ActODataService(args => { RegisterODataUserFunctions(args.Token.Functions, args.DataService); // Создаем объекты и кладем их в базу данных. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = $"Страна №{i}" }; } args.DataService.UpdateObjects(ref countries); // Формируем URL запроса к OData-сервису. string requestUrl = $"http://localhost/odata/FunctionWithLcs2(entitySet='Странаs',query='$filter=Название eq ''Страна №1''')"; // Обращаемся к 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.True(receivedDict.ContainsKey("value")); Assert.Equal(1, receivedDict["value"]); } requestUrl = $"http://localhost/odata/FunctionWithLcs1(entitySet='Странаs')?$filter=Название eq 'Страна №1'"; // Обращаемся к 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.True(receivedDict.ContainsKey("value")); Assert.Equal(1, (receivedDict["value"] as ArrayList).Count); } }); }
public void TestCountFunctionEntitiesCollection() { ActODataService(args => { RegisterODataUserFunctions(args.Token.Functions, args.DataService); // Создаем объекты и кладем их в базу данных. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = $"Страна №{i}" }; } args.DataService.UpdateObjects(ref countries); int intParam = 3; // Формируем URL запроса к OData-сервису. string requestUrl = $"http://localhost/odata/FunctionEntitiesCollection(intParam={intParam})?$count=true"; // Обращаемся к 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.True(receivedDict.ContainsKey("value")); Assert.Equal(((ArrayList)receivedDict["value"]).Count, intParam); // Убедимся, что метаданные о количестве объектов получены. Assert.True(receivedDict.ContainsKey("@odata.count")); // Убедимся, что количество объектов в метаданных совпадает, с ожидаемым количеством. object receivedMetadataCount = receivedDict["@odata.count"]; Assert.IsType(typeof(int), receivedMetadataCount); Assert.Equal((int)receivedMetadataCount, intParam); } }); }
public void ObjectsWithCountTest() { ActODataService(args => { // Создаем объекты и кладем их в базу данных. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = string.Format("Страна №{0}", i) }; } args.DataService.UpdateObjects(ref countries); // Формируем URL запроса к OData-сервису. string requestUrl = string.Format("http://localhost/odata/{0}?{1}", args.Token.Model.GetEdmEntitySet(typeof(Страна)).Name, "$count=true"); // Обращаемся к OData-сервису и обрабатываем ответ. using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result) { // Убедимся, что запрос завершился успешно. Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Получим строку с ответом. string receivedJsonCountries = response.Content.ReadAsStringAsync().Result.Beautify(); // Преобразуем полученный объект в словарь. Dictionary <string, object> receivedCountries = new JavaScriptSerializer().Deserialize <Dictionary <string, object> >(receivedJsonCountries); // Убедимся, что объекты получены и их нужное количество. Assert.True(receivedCountries.ContainsKey("value")); Assert.Equal(((ArrayList)receivedCountries["value"]).Count, countriesCount); // Убедимся, что метаданные о количестве объектов получены. Assert.True(receivedCountries.ContainsKey("@odata.count")); // Убедимся, что количество объектов в метаданных совпадает, с ожидаемым количеством. object receivedMetadataCount = receivedCountries["@odata.count"]; Assert.IsType(typeof(int), receivedMetadataCount); Assert.Equal((int)receivedMetadataCount, countriesCount); } }); }
public void TestMethod2() { foreach (IDataService dataService in DataServices) { SQLDataService ds = (SQLDataService)dataService; string[] props = new[] { Information.ExtractPropertyPath <Лес>(x => x.Название), Information.ExtractPropertyPath <Лес>(x => x.Площадь), Information.ExtractPropertyPath <Лес>(x => x.Страна), Information.ExtractPropertyPath <Лес>(x => x.Заповедник) }; var view = new View(); view.DefineClassType = typeof(Лес); foreach (string prop in props) { view.AddProperty(prop); } // Чтобы в базе был подходящий лес, делаем его сами. var country = new Страна() { Название = "РФ" }; var forest = new Лес() { Название = "Черняевский", Страна = country }; var updateArray = new DataObject[] { country, forest }; ds.UpdateObjects(ref updateArray); var лес = new Лес(); лес.SetExistObjectPrimaryKey(forest.__PrimaryKey); ds.LoadObject(view, лес, false, false); Assert.Equal(country.__PrimaryKey, лес.Страна.__PrimaryKey); } }
public void TestFunctionEntity() { ActODataService(args => { RegisterODataUserFunctions(args.Token.Functions, args.DataService); // Создаем объекты и кладем их в базу данных. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = $"Страна №{i}", }; } args.DataService.UpdateObjects(ref countries); var expectedResult = (args.DataService as SQLDataService).Query <Страна>(Страна.Views.СтранаE).ToArray(); int intParam = 3; // Формируем URL запроса к OData-сервису. string requestUrl = $"http://localhost/odata/FunctionEntity(intParam={intParam})"; // Обращаемся к 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(expectedResult[intParam].Название, receivedDict["Название"]); } }); }
public void TestActionWithLcs() { ActODataService(args => { args.Token.Functions.RegisterAction(new Func <QueryParameters, string, string, IEnumerable <DataObject> >(AddWithQueryParameters)); RegisterODataActions(args.Token.Functions, args.DataService); // Создаем объекты и кладем их в базу данных. DataObject[] countries = new DataObject[5]; int countriesCount = countries.Length; for (int i = 0; i < countriesCount; i++) { countries[i] = new Страна { Название = $"Страна №{i}" }; } args.DataService.UpdateObjects(ref countries); // Формируем URL запроса к OData-сервису. string requestUrl = $"http://localhost/odata/ActionWithLcs"; string json = "{\"entitySet\": \"Странаs\", \"query\": \"$filter=Название eq 'Страна №1'\"}"; // Обращаемся к OData-сервису и обрабатываем ответ. using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).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.True(receivedDict.ContainsKey("value")); Assert.Equal(1, (receivedDict["value"] as ArrayList).Count); } DataServiceProvider.DataService = args.DataService; requestUrl = $"http://localhost/odata/AddWithQueryParameters"; json = "{\"entitySet\": \"Странаs\", \"query\": \"$filter=Название eq 'Страна №2'\"}"; // Обращаемся к OData-сервису и обрабатываем ответ. using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).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.True(receivedDict.ContainsKey("value")); Assert.Equal(1, (receivedDict["value"] as ArrayList).Count); } requestUrl = $"http://localhost/odata/ActionVoid"; // Обращаемся к OData-сервису и обрабатываем ответ. using (HttpResponseMessage response = args.HttpClient.PostAsJsonStringAsync(requestUrl, json).Result) { // Убедимся, что запрос завершился успешно. Assert.Equal(HttpStatusCode.OK, response.StatusCode); } }); }
public void MasterFieldsOrderBy() { ActODataService(args => { ExternalLangDef.LanguageDef.DataService = args.DataService; Страна страна1 = new Страна { Название = "Россия" }; Страна страна2 = new Страна { Название = "Белоруссия" }; Лес лес1 = new Лес { Название = "Бор" }; Лес лес2 = new Лес { Название = "Березовая роща" }; Медведь медвПапа1 = new Медведь { СтранаРождения = страна1, ЛесОбитания = лес1, ПорядковыйНомер = 1, Вес = 200, Пол = tПол.Мужской }; медвПапа1.СтранаРождения = страна1; Медведь медвПапа2 = new Медведь { СтранаРождения = страна1, ЛесОбитания = лес1, ПорядковыйНомер = 2, Вес = 150, Пол = tПол.Мужской }; Медведь медвМама1 = new Медведь { СтранаРождения = страна1, ЛесОбитания = лес2, ПорядковыйНомер = 3, Вес = 120, Пол = tПол.Женский }; Медведь медвМама2 = new Медведь { СтранаРождения = страна1, ЛесОбитания = лес2, ПорядковыйНомер = 3, Вес = 110, Пол = tПол.Женский }; Медведь медвежонок1 = new Медведь { СтранаРождения = страна2, ЛесОбитания = лес2, Папа = медвПапа1, Мама = медвМама1, Вес = 48, Пол = tПол.Мужской }; Медведь медвежонок2 = new Медведь { СтранаРождения = страна2, ЛесОбитания = лес2, Папа = медвПапа2, Мама = медвМама1, Вес = 22, Пол = tПол.Мужской }; Медведь медвежонок3 = new Медведь { СтранаРождения = страна2, ЛесОбитания = лес2, Папа = медвПапа1, Мама = медвМама2, Вес = 58, Пол = tПол.Мужской }; Медведь медвежонок4 = new Медведь { СтранаРождения = страна2, ЛесОбитания = лес2, Папа = медвПапа2, Мама = медвМама2, Вес = 62, Пол = tПол.Мужской }; var objs = new DataObject[] { страна1, страна2, медвМама1, медвМама2, медвПапа1, медвПапа2, лес1, лес2 }; args.DataService.UpdateObjects(ref objs); objs = new DataObject[] { медвежонок1, медвежонок2, медвежонок3, медвежонок4 }; args.DataService.UpdateObjects(ref objs); string requestUrl; // Проверка использования в фильтрации перечислений. requestUrl = "http://localhost/odata/Медведьs?$filter=Папа ne null&$expand=Папа,Мама&$orderby=Мама/Вес desc,Папа/Вес desc"; // Обращаемся к 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(4, ((ArrayList)receivedDict["value"]).Count); int[] expectedValues = { 48, 22, 58, 62 }; for (int i = 0; i < expectedValues.Length; i++) { var медведь = ((ArrayList)receivedDict["value"])[i]; Assert.Equal(expectedValues[i], (int)((Dictionary <string, object>)медведь)["Вес"]); } } requestUrl = "http://localhost/odata/Медведьs?$filter=Папа ne null&$expand=Папа,Мама&$orderby=Мама/Вес desc,Папа/Вес"; // Обращаемся к 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(4, ((ArrayList)receivedDict["value"]).Count); int[] expectedValues = { 22, 48, 62, 58 }; for (int i = 0; i < expectedValues.Length; i++) { var медведь = ((ArrayList)receivedDict["value"])[i]; Assert.Equal(expectedValues[i], (int)((Dictionary <string, object>)медведь)["Вес"]); } } }); }