dm-is-list 0.9.6 → 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/dm-is-list.rb +2 -2
- data/lib/dm-is-list/is/list.rb +3 -2
- data/lib/dm-is-list/is/version.rb +1 -1
- data/spec/integration/list_spec.rb +22 -23
- data/spec/spec_helper.rb +1 -1
- metadata +15 -5
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ AUTHOR = "Sindre Aarsaether"
|
|
10
10
|
EMAIL = "sindre [a] identu [d] no"
|
11
11
|
GEM_NAME = "dm-is-list"
|
12
12
|
GEM_VERSION = DataMapper::Is::List::VERSION
|
13
|
-
GEM_DEPENDENCIES = [["dm-core", GEM_VERSION]]
|
13
|
+
GEM_DEPENDENCIES = [["dm-core", GEM_VERSION], ["dm-adjust", GEM_VERSION]]
|
14
14
|
GEM_CLEAN = ["log", "pkg"]
|
15
15
|
GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO ] }
|
16
16
|
|
data/lib/dm-is-list.rb
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
require 'pathname'
|
4
4
|
|
5
|
-
gem 'dm-core', '
|
5
|
+
gem 'dm-core', '~>0.9.7'
|
6
6
|
require 'dm-core'
|
7
7
|
|
8
|
-
gem 'dm-adjust', '
|
8
|
+
gem 'dm-adjust', '~>0.9.7'
|
9
9
|
require 'dm-adjust'
|
10
10
|
|
11
11
|
require Pathname(__FILE__).dirname.expand_path / 'dm-is-list' / 'is' / 'list.rb'
|
data/lib/dm-is-list/is/list.rb
CHANGED
@@ -150,8 +150,7 @@ module DataMapper
|
|
150
150
|
# @return <TrueClass, FalseClass> returns false if it cannot move to the position, otherwise true
|
151
151
|
# @see move_without_saving
|
152
152
|
def move(vector)
|
153
|
-
move_without_saving(vector)
|
154
|
-
save
|
153
|
+
move_without_saving(vector) && save
|
155
154
|
end
|
156
155
|
|
157
156
|
##
|
@@ -166,6 +165,7 @@ module DataMapper
|
|
166
165
|
minpos = self.class.list_options[:first]
|
167
166
|
prepos = self.original_values[:position] || self.position
|
168
167
|
maxpos = list.last ? (list.last == self ? prepos : list.last.position + 1) : minpos
|
168
|
+
|
169
169
|
newpos = case action
|
170
170
|
when :highest then minpos
|
171
171
|
when :lowest then maxpos
|
@@ -177,6 +177,7 @@ module DataMapper
|
|
177
177
|
else [action.to_i,maxpos].min
|
178
178
|
end
|
179
179
|
|
180
|
+
return false if [:lower, :higher].include?(action) && newpos == prepos
|
180
181
|
return false if !newpos || ([:above,:below].include?(action) && list_scope != object.list_scope)
|
181
182
|
return true if newpos == position && position == prepos || (newpos == maxpos && position == maxpos-1)
|
182
183
|
|
@@ -24,19 +24,19 @@ if HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
|
|
24
24
|
is :list, :scope => [:user_id]
|
25
25
|
end
|
26
26
|
|
27
|
-
before :
|
27
|
+
before :each do
|
28
28
|
User.auto_migrate!(:default)
|
29
29
|
Todo.auto_migrate!(:default)
|
30
30
|
|
31
|
-
u1 = User.create
|
32
|
-
Todo.create
|
33
|
-
Todo.create
|
34
|
-
Todo.create
|
31
|
+
u1 = User.create(:name => "Johnny")
|
32
|
+
Todo.create(:user => u1, :title => "Write down what is needed in a list-plugin")
|
33
|
+
Todo.create(:user => u1, :title => "Complete a temporary version of is-list")
|
34
|
+
Todo.create(:user => u1, :title => "Squash bugs in nested-set")
|
35
35
|
|
36
|
-
u2 = User.create
|
37
|
-
Todo.create
|
38
|
-
Todo.create
|
39
|
-
Todo.create
|
36
|
+
u2 = User.create(:name => "Freddy")
|
37
|
+
Todo.create(:user => u2, :title => "Eat tasty cupcake")
|
38
|
+
Todo.create(:user => u2, :title => "Procrastinate on paid work")
|
39
|
+
Todo.create(:user => u2, :title => "Go to sleep")
|
40
40
|
|
41
41
|
end
|
42
42
|
|
@@ -79,11 +79,11 @@ if HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
|
|
79
79
|
|
80
80
|
it 'should rearrange items correctly when moving :lower' do
|
81
81
|
repository(:default) do |repos|
|
82
|
-
Todo.get(3).position.should == 2
|
83
|
-
Todo.get(2).position.should == 3
|
84
|
-
Todo.get(3).move :lower
|
85
|
-
Todo.get(3).position.should == 3
|
86
82
|
Todo.get(2).position.should == 2
|
83
|
+
Todo.get(3).position.should == 3
|
84
|
+
Todo.get(2).move :lower
|
85
|
+
Todo.get(2).position.should == 3
|
86
|
+
Todo.get(3).position.should == 2
|
87
87
|
|
88
88
|
Todo.get(4).position.should == 1
|
89
89
|
end
|
@@ -107,23 +107,22 @@ if HAS_SQLITE3 || HAS_MYSQL || HAS_POSTGRES
|
|
107
107
|
|
108
108
|
it 'should not rearrange when trying to move top-item up, or bottom item down' do
|
109
109
|
repository(:default) do |repos|
|
110
|
-
Todo.get(
|
111
|
-
Todo.get(
|
112
|
-
Todo.get(
|
110
|
+
Todo.get(4).position.should == 1
|
111
|
+
Todo.get(4).move(:higher).should == false
|
112
|
+
Todo.get(4).position.should == 1
|
113
113
|
|
114
|
-
Todo.get(
|
115
|
-
Todo.get(
|
116
|
-
Todo.get(1).move(:lower).should == false
|
114
|
+
Todo.get(6).position.should == 3
|
115
|
+
Todo.get(6).move(:lower).should == false
|
117
116
|
end
|
118
117
|
end
|
119
118
|
|
120
119
|
it 'should rearrange items correctly when moving :above or :below' do
|
121
120
|
repository(:default) do |repos|
|
122
|
-
Todo.get(
|
123
|
-
Todo.get(5).position.should == 3
|
124
|
-
Todo.get(6).move(:below => Todo.get(5))
|
121
|
+
Todo.get(4).position.should == 1
|
125
122
|
Todo.get(6).position.should == 3
|
126
|
-
Todo.get(
|
123
|
+
Todo.get(4).move(:below => Todo.get(6))
|
124
|
+
Todo.get(4).position.should == 3
|
125
|
+
Todo.get(6).position.should == 2
|
127
126
|
end
|
128
127
|
end
|
129
128
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -10,7 +10,7 @@ def load_driver(name, default_uri)
|
|
10
10
|
lib = "do_#{name}"
|
11
11
|
|
12
12
|
begin
|
13
|
-
gem lib, '
|
13
|
+
gem lib, '~>0.9.7'
|
14
14
|
require lib
|
15
15
|
DataMapper.setup(name, ENV["#{name.to_s.upcase}_SPEC_URI"] || default_uri)
|
16
16
|
DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[name]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-is-list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sindre Aarsaether
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-18 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,17 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.9.
|
23
|
+
version: 0.9.7
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: dm-adjust
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.7
|
24
34
|
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: hoe
|
@@ -30,7 +40,7 @@ dependencies:
|
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
43
|
+
version: 1.8.2
|
34
44
|
version:
|
35
45
|
description: DataMapper plugin for creating and organizing lists
|
36
46
|
email:
|
@@ -79,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
89
|
requirements: []
|
80
90
|
|
81
91
|
rubyforge_project: datamapper
|
82
|
-
rubygems_version: 1.
|
92
|
+
rubygems_version: 1.3.1
|
83
93
|
signing_key:
|
84
94
|
specification_version: 2
|
85
95
|
summary: DataMapper plugin for creating and organizing lists
|