positionable 1.0.4 → 1.0.5
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/lib/positionable.rb +1 -1
- data/lib/positionable/version.rb +1 -1
- data/spec/lib/positionable_spec.rb +22 -22
- metadata +2 -2
data/lib/positionable.rb
CHANGED
@@ -66,7 +66,7 @@ module Positionable
|
|
66
66
|
start = options[:start] || 0
|
67
67
|
order = options[:order] || :asc
|
68
68
|
|
69
|
-
default_scope order("
|
69
|
+
default_scope order("`#{self.table_name}`.`position` #{order}")
|
70
70
|
|
71
71
|
before_create :add_to_bottom
|
72
72
|
before_update :update_position
|
data/lib/positionable/version.rb
CHANGED
@@ -28,7 +28,7 @@ describe Positionable do
|
|
28
28
|
it "prepends the table name in SQL 'order by' clause" do
|
29
29
|
sql = DefaultItem.where("1 = 1").to_sql
|
30
30
|
table = DefaultItem.table_name
|
31
|
-
sql.should include("ORDER BY
|
31
|
+
sql.should include("ORDER BY `#{table}`.`position`")
|
32
32
|
end
|
33
33
|
|
34
34
|
context "inheritance" do
|
@@ -49,7 +49,7 @@ describe Positionable do
|
|
49
49
|
it "orders records by their position by default" do
|
50
50
|
shuffle_positions = (0..9).to_a.shuffle
|
51
51
|
shuffle_positions.each do |position|
|
52
|
-
item =
|
52
|
+
item = FactoryGirl.create(:default_item)
|
53
53
|
item.update_column(:position, position)
|
54
54
|
end
|
55
55
|
DefaultItem.all.should be_contiguous.starting_at(0)
|
@@ -67,7 +67,7 @@ describe Positionable do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it "increments position by one after creation" do
|
70
|
-
item =
|
70
|
+
item = FactoryGirl.create(:default_item)
|
71
71
|
item.position.should == items.last.position + 1
|
72
72
|
end
|
73
73
|
|
@@ -167,9 +167,9 @@ describe Positionable do
|
|
167
167
|
context "inheritance" do
|
168
168
|
|
169
169
|
it "inserts contiguously records of all subclasses" do
|
170
|
-
|
171
|
-
|
172
|
-
|
170
|
+
FactoryGirl.create(:sub_item_1).position.should == items.count
|
171
|
+
FactoryGirl.create(:sub_item_2).position.should == items.count + 1
|
172
|
+
FactoryGirl.create(:sub_item_1).position.should == items.count + 2
|
173
173
|
end
|
174
174
|
|
175
175
|
end
|
@@ -259,7 +259,7 @@ describe Positionable do
|
|
259
259
|
let!(:items) { FactoryGirl.create_list(:default_item, 10) }
|
260
260
|
|
261
261
|
it "gives the range position of a new record" do
|
262
|
-
item =
|
262
|
+
item = FactoryGirl.build(:default_item)
|
263
263
|
item.range.should == (0..items.count)
|
264
264
|
end
|
265
265
|
|
@@ -294,7 +294,7 @@ describe Positionable do
|
|
294
294
|
it "increments position by one after creation inside a folder" do
|
295
295
|
folders.each do |folder|
|
296
296
|
last_position = folder.documents.last.position
|
297
|
-
document =
|
297
|
+
document = FactoryGirl.create(:document, :folder => folder)
|
298
298
|
document.position.should == last_position + 1
|
299
299
|
end
|
300
300
|
end
|
@@ -438,7 +438,7 @@ describe Positionable do
|
|
438
438
|
# Last document is a special case when changing scope, so it is avoided
|
439
439
|
let!(:document) { old_folder.documents.but_last.sample }
|
440
440
|
# A new folder containing a different count of documents than the old folder
|
441
|
-
let!(:new_folder) {
|
441
|
+
let!(:new_folder) { FactoryGirl.create(:folder) }
|
442
442
|
let!(:new_documents) { FactoryGirl.create_list(:document, old_folder.documents.count + 1, :folder => new_folder) }
|
443
443
|
|
444
444
|
it "moves to bottom position when scope has changed but position is out of range" do
|
@@ -472,27 +472,27 @@ describe Positionable do
|
|
472
472
|
end
|
473
473
|
|
474
474
|
it "gives the range within a scope" do
|
475
|
-
folder =
|
475
|
+
folder = FactoryGirl.create(:folder_with_documents)
|
476
476
|
document = Document.new
|
477
477
|
document.range(folder).should == (0..folder.documents.count)
|
478
478
|
end
|
479
479
|
|
480
480
|
it "gives the range within its own scope by default" do
|
481
|
-
folder =
|
481
|
+
folder = FactoryGirl.create(:folder_with_documents)
|
482
482
|
document = folder.documents.sample
|
483
483
|
document.range.should == (0..(folder.documents.count - 1))
|
484
484
|
end
|
485
485
|
|
486
486
|
it "gives the range within another scope" do
|
487
|
-
document =
|
488
|
-
folder =
|
487
|
+
document = FactoryGirl.build(:document)
|
488
|
+
folder = FactoryGirl.create(:folder_with_documents)
|
489
489
|
document.folder.should_not == folder # Meta!
|
490
490
|
document.range(folder).should == (0..folder.documents.count)
|
491
491
|
end
|
492
492
|
|
493
493
|
it "gives the range within another empty scope" do
|
494
|
-
document =
|
495
|
-
folder =
|
494
|
+
document = FactoryGirl.build(:document)
|
495
|
+
folder = FactoryGirl.create(:folder)
|
496
496
|
document.folder.should_not == folder # Meta!
|
497
497
|
folder.documents.should be_empty # Meta!
|
498
498
|
document.range(folder).should == (0..0)
|
@@ -503,14 +503,14 @@ describe Positionable do
|
|
503
503
|
context "existing record" do
|
504
504
|
|
505
505
|
it "gives the range within its own scope" do
|
506
|
-
folder =
|
506
|
+
folder = FactoryGirl.create(:folder_with_documents)
|
507
507
|
document = folder.documents.sample
|
508
508
|
document.range(folder).should == (0..(folder.documents.count - 1))
|
509
509
|
end
|
510
510
|
|
511
511
|
it "gives the range within another scope" do
|
512
|
-
document =
|
513
|
-
folder =
|
512
|
+
document = FactoryGirl.create(:document)
|
513
|
+
folder = FactoryGirl.create(:folder_with_documents)
|
514
514
|
document.folder.should_not == folder # Meta!
|
515
515
|
document.range(folder).should == (0..folder.documents.count)
|
516
516
|
end
|
@@ -526,13 +526,13 @@ describe Positionable do
|
|
526
526
|
let(:start) { 1 }
|
527
527
|
|
528
528
|
it "starts at the given position" do
|
529
|
-
item =
|
529
|
+
item = FactoryGirl.create(:starting_at_one_item)
|
530
530
|
item.position.should == start
|
531
531
|
end
|
532
532
|
|
533
533
|
it "increments by one the given start position" do
|
534
534
|
items = FactoryGirl.create_list(:starting_at_one_item, 5)
|
535
|
-
item =
|
535
|
+
item = FactoryGirl.create(:starting_at_one_item)
|
536
536
|
item.position.should == items.size + start
|
537
537
|
end
|
538
538
|
|
@@ -581,7 +581,7 @@ describe Positionable do
|
|
581
581
|
|
582
582
|
it "appends at the last position" do
|
583
583
|
items = FactoryGirl.create_list(:asc_item, 5)
|
584
|
-
item =
|
584
|
+
item = FactoryGirl.create(:asc_item)
|
585
585
|
item.position.should == items.size
|
586
586
|
end
|
587
587
|
|
@@ -598,7 +598,7 @@ describe Positionable do
|
|
598
598
|
|
599
599
|
it "appends at the last position" do
|
600
600
|
items = FactoryGirl.create_list(:desc_item, 5)
|
601
|
-
item =
|
601
|
+
item = FactoryGirl.create(:desc_item)
|
602
602
|
item.position.should == items.size
|
603
603
|
end
|
604
604
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: positionable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|