/
queryRawOdataTests.js
141 lines (119 loc) · 4.8 KB
/
queryRawOdataTests.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
require.config({ baseUrl: "Scripts/IBlade" });
define(["testFns"], function (testFns) {
var breeze = testFns.breeze;
var core = breeze.core;
var MetadataStore = breeze.MetadataStore;
var Enum = core.Enum;
var EntityManager = breeze.EntityManager;
var EntityQuery = breeze.EntityQuery;
var EntityType = breeze.EntityType;
var newEm = testFns.newEm;
module("raw odata query", {
setup: function () {
testFns.setup();
},
teardown: function () {
}
});
//// for now returns an OData message "$count is not supported"
//test("$count operator", function () {
// stop();
// var em = newEm(testFns.newMs());
// ok(em, "no em found");
// var query = "Customers?$filter=startswith(CompanyName, 'A') eq true&$count";
// em.executeQuery(query).then(function (data) {
// ok(!em.metadataStore.isEmpty(), "metadata should not be empty");
// ok(data, "no data");
// }).fail(testFns.handleFail).fin(start);
//});
test("filter and order by", function () {
stop();
var em = newEm(testFns.newMs());
ok(em, "no em found");
var query = "Customers?$filter=startswith(CompanyName, 'A') eq true&$orderby=CompanyName desc&$expand=Orders";
em.executeQuery(query).then(function (data) {
ok(!em.metadataStore.isEmpty(), "metadata should not be empty");
ok(data, "no data");
ok(data.results.length > 0, "empty data");
var customers = data.results;
customers.forEach(function (c) {
ok(c.getProperty("companyName"), "missing companyName property");
var key = c.entityAspect.getKey();
ok(key, "missing key");
});
}).fail(testFns.handleFail).fin(start);
});
test("select", function () {
var em = newEm(testFns.newMs());
ok(em, "no em found");
var query = "Customers?$filter=startswith(CompanyName, 'A') eq true&$select=CompanyName, Orders";
if (testFns.DEBUG_ODATA) {
query = query + "&$expand=Orders";
}
stop();
em.executeQuery(query).then(function (data) {
ok(!em.metadataStore.isEmpty(), "metadata should not be empty");
var orderType = em.metadataStore.getEntityType("Order");
ok(data, "no data");
ok(data.results.length > 0, "empty data");
var anons = data.results;
anons.forEach(function (a) {
ok(a.companyName);
ok(Array.isArray(a.orders));
a.orders.forEach(function (order) {
ok(order.entityType === orderType);
});
});
}).fail(testFns.handleFail).fin(start);
});
test("bad expr", function () {
stop();
var em = newEm();
var query = "Customers?$filter=starxtswith(CompanyName, 'A') eq true&$orderby=CompanyName desc";
em.executeQuery(query).fail(function (error) {
ok(error instanceof Error, "should be an error");
ok(error.message.indexOf("starxtswith") > -1, "error message has wrong text");
}).fail(testFns.handleFail).fin(start);
});
test("raw ajax to web api - server side include many - customer and orders", function () {
if (testFns.DEBUG_ODATA) {
ok(true, "NA for OData impl");
return;
}
stop();
try {
$.getJSON(testFns.defaultServiceName+"/CustomersAndOrders?&$top=3").success(function(data, status) {
ok(data);
var str = JSON.stringify(data, undefined, 4);
testFns.output("Customers with orders");
testFns.output(str);
start();
}).error(function(e) {
testFns.handleFail(e);
});
} catch (e) {
testFns.handleFail(e);
}
});
test("raw ajax to web api - server side include 1 - order and customer", function () {
if (testFns.DEBUG_ODATA) {
ok(true, "NA for OData impl");
return;
}
stop();
try {
$.getJSON(testFns.defaultServiceName+"/Orders?$top=10&filter=here").success(function (data, status) {
ok(data);
var str = JSON.stringify(data, undefined, 4);
testFns.output("Orders with customers");
testFns.output(str);
start();
}).error(function(e) {
testFns.handleFail(e);
});
} catch (e) {
testFns.handleFail(e);
}
});
return testFns;
});