sprsquish-order_fu 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 1
4
+ :patch: 0
data/lib/order_fu.rb ADDED
@@ -0,0 +1,62 @@
1
+ module OrderFu
2
+ class AttributeOrder
3
+ attr_accessor :attribute_name, :order_direction
4
+
5
+ def initialize(attribute_name, order_direction)
6
+ @attribute_name, @order_direction = attribute_name, order_direction
7
+ end
8
+
9
+ def to_s
10
+ "#{@attribute_name} #{@order_direction.to_s.upcase}"
11
+ end
12
+
13
+ def <=>(other)
14
+ [self.order_direction.to_s, self.attribute_name.to_s] <=> [other.order_direction.to_s, other.attribute_name.to_s]
15
+ end
16
+
17
+ def ==(other)
18
+ (self <=> other) == 0
19
+ end
20
+
21
+ def eql?(other)
22
+ self.hash == other.hash
23
+ end
24
+
25
+ def hash
26
+ ["AttributeOrder", self.order_direction.to_s, self.attribute_name.to_s].hash
27
+ end
28
+ end
29
+
30
+ # ActiveRecord Extention
31
+ module ActiveRecordExtentions
32
+ def add_order_with_order_fu!(sql, order, scope = :auto)
33
+ order = build_order(order)
34
+
35
+ scope = scope(:find) if :auto == scope
36
+ scoped_order = build_order(scope[:order]) if scope
37
+
38
+ if order
39
+ sql << " ORDER BY #{order}"
40
+ sql << ", #{scoped_order}" if scoped_order
41
+ else
42
+ sql << " ORDER BY #{scoped_order}" if scoped_order
43
+ end
44
+ end
45
+
46
+ def build_order(order)
47
+ case order
48
+ when AttributeOrder then order.to_s
49
+ when Array then order.map { |o| o.to_s } * ','
50
+ else order
51
+ end
52
+ end
53
+ end
54
+
55
+ module SymbolExtensions
56
+ [ :asc, :desc ].each do |order_direction|
57
+ define_method(order_direction) do
58
+ AttributeOrder.new(self, order_direction)
59
+ end
60
+ end
61
+ end
62
+ end
data/spec/database.yml ADDED
@@ -0,0 +1,18 @@
1
+ sqlite:
2
+ :adapter: sqlite
3
+ :dbfile: plugin.sqlite.db
4
+ sqlite3:
5
+ :adapter: sqlite3
6
+ :dbfile: ":memory:"
7
+ postgresql:
8
+ :adapter: postgresql
9
+ :username: postgres
10
+ :password: postgres
11
+ :database: plugin_test
12
+ :min_messages: ERROR
13
+ mysql:
14
+ :adapter: mysql
15
+ :host: localhost
16
+ :username: rails
17
+ :password:
18
+ :database: plugin_test
data/spec/debug.log ADDED
@@ -0,0 +1,378 @@
1
+ # Logfile created on Sat Sep 13 16:13:28 -0700 2008 by /
2
+ SQL (17.9ms) select sqlite_version(*)
3
+ SQL (0.6ms) CREATE TABLE "things" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
4
+ SQL (0.3ms)  SELECT name
5
+ FROM sqlite_master
6
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
7
+ 
8
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
9
+ SQL (0.3ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
10
+ SQL (0.3ms)  SELECT name
11
+ FROM sqlite_master
12
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
13
+ 
14
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
15
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
16
+ SQL (0.2ms) select sqlite_version(*)
17
+ SQL (0.3ms) CREATE TABLE "things" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
18
+ SQL (0.1ms)  SELECT name
19
+ FROM sqlite_master
20
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
21
+ 
22
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
23
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
24
+ SQL (0.1ms)  SELECT name
25
+ FROM sqlite_master
26
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
27
+ 
28
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
29
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
30
+ SQL (0.2ms) select sqlite_version(*)
31
+ SQL (0.3ms) CREATE TABLE "people" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
32
+ SQL (0.2ms)  SELECT name
33
+ FROM sqlite_master
34
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
35
+ 
36
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
37
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
38
+ SQL (0.2ms)  SELECT name
39
+ FROM sqlite_master
40
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
41
+ 
42
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
43
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
44
+ SQL (0.2ms) select sqlite_version(*)
45
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
46
+ SQL (0.1ms)  SELECT name
47
+ FROM sqlite_master
48
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
49
+ 
50
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
51
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
52
+ SQL (0.1ms)  SELECT name
53
+ FROM sqlite_master
54
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
55
+ 
56
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
57
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
58
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
59
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
60
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
61
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
62
+ SQL (0.2ms) select sqlite_version(*)
63
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
64
+ SQL (0.2ms)  SELECT name
65
+ FROM sqlite_master
66
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
67
+ 
68
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
69
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
70
+ SQL (0.1ms)  SELECT name
71
+ FROM sqlite_master
72
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
73
+ 
74
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
75
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
76
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
77
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
78
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
79
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
80
+ SQL (0.2ms) select sqlite_version(*)
81
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
82
+ SQL (0.1ms)  SELECT name
83
+ FROM sqlite_master
84
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
85
+ 
86
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
87
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
88
+ SQL (0.1ms)  SELECT name
89
+ FROM sqlite_master
90
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
91
+ 
92
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
93
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
94
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
95
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
96
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
97
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
98
+ SQL (0.2ms) select sqlite_version(*)
99
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
100
+ SQL (0.1ms)  SELECT name
101
+ FROM sqlite_master
102
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
103
+ 
104
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
105
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
106
+ SQL (0.1ms)  SELECT name
107
+ FROM sqlite_master
108
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
109
+ 
110
+ SQL (0.0ms) SELECT version FROM "schema_migrations"
111
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
112
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
113
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
114
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
115
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
116
+ SQL (0.1ms) select sqlite_version(*)
117
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
118
+ SQL (0.1ms)  SELECT name
119
+ FROM sqlite_master
120
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
121
+ 
122
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
123
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
124
+ SQL (0.1ms)  SELECT name
125
+ FROM sqlite_master
126
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
127
+ 
128
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
129
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
130
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
131
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
132
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
133
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
134
+ SQL (0.0ms) SQLite3::SQLException: table "order_fu_controls" already exists: CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
135
+ SQL (0.2ms) select sqlite_version(*)
136
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
137
+ SQL (0.1ms)  SELECT name
138
+ FROM sqlite_master
139
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
140
+ 
141
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
142
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
143
+ SQL (0.1ms)  SELECT name
144
+ FROM sqlite_master
145
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
146
+ 
147
+ SQL (0.0ms) SELECT version FROM "schema_migrations"
148
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
149
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
150
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
151
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
152
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
153
+ SQL (0.2ms) select sqlite_version(*)
154
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
155
+ SQL (0.1ms)  SELECT name
156
+ FROM sqlite_master
157
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
158
+ 
159
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
160
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
161
+ SQL (0.1ms)  SELECT name
162
+ FROM sqlite_master
163
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
164
+ 
165
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
166
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
167
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
168
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
169
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
170
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
171
+ SQL (0.0ms) SQLite3::SQLException: table "order_fu_controls" already exists: CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
172
+ SQL (0.2ms) select sqlite_version(*)
173
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
174
+ SQL (0.1ms)  SELECT name
175
+ FROM sqlite_master
176
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
177
+ 
178
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
179
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
180
+ SQL (0.1ms)  SELECT name
181
+ FROM sqlite_master
182
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
183
+ 
184
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
185
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
186
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
187
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
188
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
189
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
190
+ SQL (0.2ms) select sqlite_version(*)
191
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
192
+ SQL (0.1ms)  SELECT name
193
+ FROM sqlite_master
194
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
195
+ 
196
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
197
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
198
+ SQL (0.1ms)  SELECT name
199
+ FROM sqlite_master
200
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
201
+ 
202
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
203
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
204
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
205
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
206
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
207
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
208
+ OrderFuControl Load (0.3ms) SELECT * FROM "order_fu_controls" 
209
+ OrderFuControl Load (0.3ms) SELECT * FROM "order_fu_controls" 
210
+ SQL (0.2ms) select sqlite_version(*)
211
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
212
+ SQL (0.2ms)  SELECT name
213
+ FROM sqlite_master
214
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
215
+ 
216
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
217
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
218
+ SQL (0.1ms)  SELECT name
219
+ FROM sqlite_master
220
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
221
+ 
222
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
223
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
224
+ OrderFuControl Create (0.2ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
225
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
226
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
227
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
228
+ OrderFuControl Load (0.3ms) SELECT * FROM "order_fu_controls" 
229
+ OrderFuControl Load (0.2ms) SELECT * FROM "order_fu_controls" 
230
+ SQL (0.2ms) select sqlite_version(*)
231
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
232
+ SQL (0.2ms)  SELECT name
233
+ FROM sqlite_master
234
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
235
+ 
236
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
237
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
238
+ SQL (0.1ms)  SELECT name
239
+ FROM sqlite_master
240
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
241
+ 
242
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
243
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
244
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
245
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
246
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
247
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
248
+ SQL (0.2ms) select sqlite_version(*)
249
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
250
+ SQL (0.3ms)  SELECT name
251
+ FROM sqlite_master
252
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
253
+ 
254
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
255
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
256
+ SQL (0.1ms)  SELECT name
257
+ FROM sqlite_master
258
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
259
+ 
260
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
261
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
262
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
263
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
264
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
265
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
266
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC
267
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC
268
+ SQL (0.2ms) select sqlite_version(*)
269
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
270
+ SQL (0.1ms)  SELECT name
271
+ FROM sqlite_master
272
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
273
+ 
274
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
275
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
276
+ SQL (0.1ms)  SELECT name
277
+ FROM sqlite_master
278
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
279
+ 
280
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
281
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
282
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
283
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
284
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
285
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
286
+ OrderFuControl Load (1.3ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
287
+ OrderFuControl Load (0.8ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
288
+ SQL (0.2ms) select sqlite_version(*)
289
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
290
+ SQL (0.2ms)  SELECT name
291
+ FROM sqlite_master
292
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
293
+ 
294
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
295
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
296
+ SQL (0.1ms)  SELECT name
297
+ FROM sqlite_master
298
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
299
+ 
300
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
301
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
302
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
303
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
304
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
305
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
306
+ OrderFuControl Load (107.5ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
307
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
308
+ OrderFuControl Load (1.0ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
309
+ SQL (0.2ms) select sqlite_version(*)
310
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
311
+ SQL (0.2ms)  SELECT name
312
+ FROM sqlite_master
313
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
314
+ 
315
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
316
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
317
+ SQL (0.1ms)  SELECT name
318
+ FROM sqlite_master
319
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
320
+ 
321
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
322
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
323
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
324
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
325
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
326
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
327
+ OrderFuControl Load (1.3ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC,last_name ASC
328
+ OrderFuControl Load (0.8ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
329
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
330
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
331
+ SQL (0.2ms) select sqlite_version(*)
332
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
333
+ SQL (0.1ms)  SELECT name
334
+ FROM sqlite_master
335
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
336
+ 
337
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
338
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
339
+ SQL (0.1ms)  SELECT name
340
+ FROM sqlite_master
341
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
342
+ 
343
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
344
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
345
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
346
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
347
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
348
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
349
+ OrderFuControl Load (1.3ms) SELECT * FROM "order_fu_controls" ORDER BY last_name
350
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC,last_name ASC
351
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
352
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
353
+ OrderFuControl Load (0.8ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
354
+ SQL (0.2ms) select sqlite_version(*)
355
+ SQL (0.3ms) CREATE TABLE "order_fu_controls" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255)) 
356
+ SQL (0.2ms)  SELECT name
357
+ FROM sqlite_master
358
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
359
+ 
360
+ SQL (0.1ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
361
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
362
+ SQL (0.1ms)  SELECT name
363
+ FROM sqlite_master
364
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
365
+ 
366
+ SQL (0.1ms) SELECT version FROM "schema_migrations"
367
+ SQL (0.1ms) INSERT INTO "schema_migrations" (version) VALUES ('1')
368
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Yevgevi')
369
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Clif', 'Walters')
370
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Adam', 'Zentowski')
371
+ OrderFuControl Create (0.1ms) INSERT INTO "order_fu_controls" ("first_name", "last_name") VALUES('Bert', 'Xander')
372
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY last_name
373
+ OrderFuControl Load (0.7ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
374
+ OrderFuControl Load (0.9ms) SELECT * FROM "order_fu_controls" ORDER BY last_name
375
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY first_name DESC,last_name ASC
376
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY first_name ASC,last_name DESC
377
+ OrderFuControl Load (0.6ms) SELECT * FROM "order_fu_controls" ORDER BY last_name DESC
378
+ OrderFuControl Load (1.1ms) SELECT * FROM "order_fu_controls" ORDER BY last_name ASC
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ def expect_order(test, control)
4
+ test.map { |t| [t.first_name, t.last_name] }.should == control.map { |c| [c[:first_name], c[:last_name]] }
5
+ end
6
+
7
+ describe OrderFu do
8
+ it 'orders by "attr ASC"' do
9
+ expect_order(
10
+ OrderFuControl.find(:all, :order => :last_name.asc),
11
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
12
+ )
13
+ end
14
+
15
+ it 'orders by "attr DESC"' do
16
+ expect_order(
17
+ OrderFuControl.find(:all, :order => :last_name.desc),
18
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }.reverse
19
+ )
20
+ end
21
+
22
+ it 'orders by "attr ASC, attr DESC"' do
23
+ expect_order(OrderFuControl.find(:all, :order => [:first_name.asc, :last_name.desc]), [
24
+ {:first_name => 'Adam', :last_name => 'Zentowski' },
25
+ {:first_name => 'Adam', :last_name => 'Yevgevi' },
26
+ {:first_name => 'Bert', :last_name => 'Xander' },
27
+ {:first_name => 'Clif', :last_name => 'Walters' },
28
+ ])
29
+ end
30
+
31
+ it 'orders by "attr DESC, attr ASC"' do
32
+ expect_order(OrderFuControl.find(:all, :order => [:first_name.desc, :last_name.asc]), [
33
+ {:first_name => 'Adam', :last_name => 'Zentowski' },
34
+ {:first_name => 'Adam', :last_name => 'Yevgevi' },
35
+ {:first_name => 'Bert', :last_name => 'Xander' },
36
+ {:first_name => 'Clif', :last_name => 'Walters' },
37
+ ].reverse)
38
+ end
39
+
40
+ it 'orders from symbol without interference'do
41
+ expect_order(
42
+ OrderFuControl.find(:all, :order => :last_name),
43
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
44
+ )
45
+ end
46
+
47
+ it 'orders from string without interference'do
48
+ expect_order(
49
+ OrderFuControl.find(:all, :order => 'last_name'),
50
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }
51
+ )
52
+
53
+ expect_order(
54
+ OrderFuControl.find(:all, :order => 'last_name DESC'),
55
+ ORDER_FU_CONTROLS.sort_by { |p| p[:last_name] }.reverse
56
+ )
57
+ end
58
+ end
data/spec/schema.rb ADDED
@@ -0,0 +1,5 @@
1
+ ActiveRecord::Schema.define(:version => 1) do
2
+ create_table :order_fu_controls do |t|
3
+ t.string :first_name, :last_name
4
+ end
5
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,7 @@
1
+ --colour
2
+ --format
3
+ specdoc
4
+ --loadby
5
+ mtime
6
+ --reverse
7
+ --backtrace
@@ -0,0 +1,24 @@
1
+ begin
2
+ require File.dirname(__FILE__) + '/../../../../spec/spec_helper'
3
+ rescue LoadError
4
+ puts "You need to install rspec in your base app"
5
+ exit
6
+ end
7
+
8
+ plugin_spec_dir = File.dirname(__FILE__)
9
+ ActiveRecord::Base.logger = Logger.new(plugin_spec_dir + "/debug.log")
10
+ config = YAML::load(IO.read(plugin_spec_dir + '/database.yml'))
11
+ ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite3'])
12
+ load(plugin_spec_dir + "/schema.rb") if File.exist?(plugin_spec_dir + "/schema.rb")
13
+
14
+ class OrderFuControl < ActiveRecord::Base
15
+ end
16
+
17
+ ORDER_FU_CONTROLS = [
18
+ {:first_name => 'Adam', :last_name => 'Yevgevi' },
19
+ {:first_name => 'Clif', :last_name => 'Walters' },
20
+ {:first_name => 'Adam', :last_name => 'Zentowski' },
21
+ {:first_name => 'Bert', :last_name => 'Xander' },
22
+ ]
23
+
24
+ ORDER_FU_CONTROLS.each { |control| OrderFuControl.create control }
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sprsquish-order_fu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Smick
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-29 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: README
17
+ email: sprsquish@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - VERSION.yml
26
+ - lib/order_fu.rb
27
+ - spec/database.yml
28
+ - spec/debug.log
29
+ - spec/order_fu_spec.rb
30
+ - spec/schema.rb
31
+ - spec/spec.opts
32
+ - spec/spec_helper.rb
33
+ has_rdoc: true
34
+ homepage: http://github.com/sprsquish/order_fu
35
+ post_install_message:
36
+ rdoc_options:
37
+ - --inline-source
38
+ - --charset=UTF-8
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
53
+ requirements: []
54
+
55
+ rubyforge_project:
56
+ rubygems_version: 1.2.0
57
+ signing_key:
58
+ specification_version: 2
59
+ summary: README
60
+ test_files: []
61
+