annotate .cms/lib/codemirror/test/sql-hint-test.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 // Distributed under an MIT license: https://codemirror.net/5/LICENSE
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 (function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 var Pos = CodeMirror.Pos;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 var simpleTables = {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 "users": ["name", "score", "birthDate"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 "xcountries": ["name", "population", "size"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 var schemaTables = {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 "schema.users": ["name", "score", "birthDate"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 "schema.countries": ["name", "population", "size"]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 var displayTextTables = [{
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 text: "mytable",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 displayText: "mytable | The main table",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 columns: [{text: "id", displayText: "id | Unique ID"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 {text: "name", displayText: "name | The name"}]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 }];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 var displayTextTablesWithDefault = [
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 text: "Api__TokenAliases",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 columns: [
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 text: "token",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 displayText: "token | varchar(255) | Primary",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 columnName: "token",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 columnHint: "varchar(255) | Primary"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 text: "alias",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 displayText: "alias | varchar(255) | Primary",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 columnName: "alias",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 columnHint: "varchar(255) | Primary"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 ]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 text: "mytable",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 columns: [
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 { text: "id", displayText: "id | Unique ID" },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 { text: "name", displayText: "name | The name" }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 ]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 ];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 namespace = "sql-hint_";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 function test(name, spec) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 testCM(name, function(cm) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 cm.setValue(spec.value);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 cm.setCursor(spec.cursor);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 var completion = CodeMirror.hint.sql(cm, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 tables: spec.tables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 defaultTable: spec.defaultTable,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 disableKeywords: spec.disableKeywords
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 if (!deepCompare(completion.list, spec.list))
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 throw new Failure("Wrong completion results " + JSON.stringify(completion.list) + " vs " + JSON.stringify(spec.list));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 eqCharPos(completion.from, spec.from);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 eqCharPos(completion.to, spec.to);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 }, {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 value: spec.value,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 mode: spec.mode || "text/x-mysql"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 test("keywords", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 value: "SEL",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 cursor: Pos(0, 3),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 list: [{"text":"SELECT","className":"CodeMirror-hint-keyword"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 from: Pos(0, 0),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 to: Pos(0, 3)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 test("keywords_disabled", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 value: "SEL",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 cursor: Pos(0, 3),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 disableKeywords: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 list: [],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 from: Pos(0, 0),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 to: Pos(0, 3)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 test("from", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 value: "SELECT * fr",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 cursor: Pos(0, 11),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 list: [{"text":"FROM","className":"CodeMirror-hint-keyword"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 from: Pos(0, 9),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94 to: Pos(0, 11)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 test("table", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 value: "SELECT xc",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 cursor: Pos(0, 9),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 list: [{"text":"xcountries","className":"CodeMirror-hint-table"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 to: Pos(0, 9)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 test("columns", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 value: "SELECT users.",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 cursor: Pos(0, 13),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110 list: ["users.name", "users.score", "users.birthDate"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 to: Pos(0, 13)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 test("singlecolumn", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 value: "SELECT users.na",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 cursor: Pos(0, 15),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 list: ["users.name"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 to: Pos(0, 15)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 test("quoted", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 value: "SELECT `users`.`na",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 cursor: Pos(0, 18),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 list: ["`users`.`name`"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 to: Pos(0, 18)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 test("doublequoted", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 value: "SELECT \"users\".\"na",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 cursor: Pos(0, 18),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137 list: ["\"users\".\"name\""],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 to: Pos(0, 18),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140 mode: "text/x-sqlite"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 test("quotedcolumn", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144 value: "SELECT users.`na",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145 cursor: Pos(0, 16),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147 list: ["`users`.`name`"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149 to: Pos(0, 16)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 test("doublequotedcolumn", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153 value: "SELECT users.\"na",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 cursor: Pos(0, 16),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156 list: ["\"users\".\"name\""],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 to: Pos(0, 16),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159 mode: "text/x-sqlite"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162 test("schema", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
163 value: "SELECT schem",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
164 cursor: Pos(0, 12),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
165 tables: schemaTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
166 list: [{"text":"schema.users","className":"CodeMirror-hint-table"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
167 {"text":"schema.countries","className":"CodeMirror-hint-table"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
168 {"text":"SCHEMA","className":"CodeMirror-hint-keyword"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
169 {"text":"SCHEMA_NAME","className":"CodeMirror-hint-keyword"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
170 {"text":"SCHEMAS","className":"CodeMirror-hint-keyword"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
171 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
172 to: Pos(0, 12)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
173 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
174
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
175 test("schemaquoted", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
176 value: "SELECT `sch",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
177 cursor: Pos(0, 11),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
178 tables: schemaTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
179 list: ["`schema`.`users`", "`schema`.`countries`"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
180 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
181 to: Pos(0, 11)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
182 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
183
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
184 test("schemadoublequoted", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
185 value: "SELECT \"sch",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
186 cursor: Pos(0, 11),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
187 tables: schemaTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
188 list: ["\"schema\".\"users\"", "\"schema\".\"countries\""],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
189 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
190 to: Pos(0, 11),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
191 mode: "text/x-sqlite"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
192 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
193
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
194 test("schemacolumn", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
195 value: "SELECT schema.users.",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
196 cursor: Pos(0, 20),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
197 tables: schemaTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
198 list: ["schema.users.name",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
199 "schema.users.score",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
200 "schema.users.birthDate"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
201 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
202 to: Pos(0, 20)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
203 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
204
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
205 test("schemacolumnquoted", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
206 value: "SELECT `schema`.`users`.",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
207 cursor: Pos(0, 24),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
208 tables: schemaTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
209 list: ["`schema`.`users`.`name`",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
210 "`schema`.`users`.`score`",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
211 "`schema`.`users`.`birthDate`"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
212 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
213 to: Pos(0, 24)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
214 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
215
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
216 test("schemacolumndoublequoted", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
217 value: "SELECT \"schema\".\"users\".",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
218 cursor: Pos(0, 24),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
219 tables: schemaTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
220 list: ["\"schema\".\"users\".\"name\"",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
221 "\"schema\".\"users\".\"score\"",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
222 "\"schema\".\"users\".\"birthDate\""],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
223 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
224 to: Pos(0, 24),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
225 mode: "text/x-sqlite"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
226 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
227
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
228 test("displayText_default_table", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
229 value: "SELECT a",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
230 cursor: Pos(0, 8),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
231 disableKeywords: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
232 defaultTable: "Api__TokenAliases",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
233 tables: displayTextTablesWithDefault,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
234 list: [
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
235 {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
236 text: "alias",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
237 displayText: "alias | varchar(255) | Primary",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
238 columnName: "alias",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
239 columnHint: "varchar(255) | Primary",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
240 className: "CodeMirror-hint-table CodeMirror-hint-default-table"
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
241 },
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
242 { text: "Api__TokenAliases", className: "CodeMirror-hint-table" }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
243 ],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
244 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
245 to: Pos(0, 8)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
246 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
247
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
248 test("displayText_table", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
249 value: "SELECT myt",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
250 cursor: Pos(0, 10),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
251 tables: displayTextTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
252 list: [{text: "mytable", displayText: "mytable | The main table", "className":"CodeMirror-hint-table"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
253 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
254 to: Pos(0, 10)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
255 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
256
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
257 test("displayText_column", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
258 value: "SELECT mytable.",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
259 cursor: Pos(0, 15),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
260 tables: displayTextTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
261 list: [{text: "mytable.id", displayText: "id | Unique ID"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
262 {text: "mytable.name", displayText: "name | The name"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
263 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
264 to: Pos(0, 15)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
265 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
266
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
267 test("alias_complete", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
268 value: "SELECT t. FROM users t",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
269 cursor: Pos(0, 9),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
270 tables: simpleTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
271 list: ["t.name", "t.score", "t.birthDate"],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
272 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
273 to: Pos(0, 9)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
274 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
275
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
276 test("alias_complete_with_displayText", {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
277 value: "SELECT t. FROM mytable t",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
278 cursor: Pos(0, 9),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
279 tables: displayTextTables,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
280 list: [{text: "t.id", displayText: "id | Unique ID"},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
281 {text: "t.name", displayText: "name | The name"}],
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
282 from: Pos(0, 7),
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
283 to: Pos(0, 9)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
284 })
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
285
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
286 function deepCompare(a, b) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
287 if (a === b) return true
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
288 if (!(a && typeof a == "object") ||
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
289 !(b && typeof b == "object")) return false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
290 var array = Array.isArray(a)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
291 if (Array.isArray(b) != array) return false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
292 if (array) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
293 if (a.length != b.length) return false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
294 for (var i = 0; i < a.length; i++) if (!deepCompare(a[i], b[i])) return false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
295 } else {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
296 for (var p in a) if (!(p in b) || !deepCompare(a[p], b[p])) return false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
297 for (var p in b) if (!(p in a)) return false
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
298 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
299 return true
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
300 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
301 })();