acts-as-taggable-on 2.2.2 → 2.3.1
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/.gitignore +3 -1
- data/README.rdoc +54 -15
- data/acts-as-taggable-on.gemspec +2 -2
- data/lib/acts-as-taggable-on/version.rb +1 -1
- data/lib/acts-as-taggable-on.rb +26 -1
- data/lib/acts_as_taggable_on/acts_as_taggable_on/core.rb +80 -23
- data/lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb +37 -0
- data/lib/acts_as_taggable_on/acts_as_taggable_on/ownership.rb +33 -12
- data/lib/acts_as_taggable_on/tag.rb +5 -11
- data/lib/acts_as_taggable_on/tag_list.rb +13 -12
- data/lib/acts_as_taggable_on/taggable.rb +64 -16
- data/lib/acts_as_taggable_on/tagger.rb +3 -3
- data/lib/acts_as_taggable_on/tagging.rb +1 -1
- data/lib/acts_as_taggable_on/utils.rb +1 -1
- data/spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb +58 -0
- data/spec/acts_as_taggable_on/tag_list_spec.rb +84 -65
- data/spec/acts_as_taggable_on/tag_spec.rb +29 -30
- data/spec/acts_as_taggable_on/taggable_spec.rb +137 -6
- data/spec/acts_as_taggable_on/tagger_spec.rb +23 -16
- data/spec/models.rb +5 -0
- data/spec/schema.rb +5 -0
- data/spec/spec_helper.rb +3 -1
- metadata +22 -21
|
@@ -16,7 +16,7 @@ describe "Tagger" do
|
|
|
16
16
|
@user.tag(@taggable, :with=>'ruby,scheme', :on=>:tags)
|
|
17
17
|
@user.owned_tags.size == 2
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
it "should scope objects returned by tagged_with by owners" do
|
|
21
21
|
@taggable2 = TaggableModel.create(:name => "Jim Jones")
|
|
22
22
|
@taggable3 = TaggableModel.create(:name => "Jane Doe")
|
|
@@ -30,7 +30,7 @@ describe "Tagger" do
|
|
|
30
30
|
TaggableModel.tagged_with(%w(ruby scheme), :owned_by => @user2).count.should == 2
|
|
31
31
|
|
|
32
32
|
end
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
it "should not overlap tags from different taggers" do
|
|
35
35
|
@user2 = TaggableUser.new
|
|
36
36
|
lambda{
|
|
@@ -42,35 +42,35 @@ describe "Tagger" do
|
|
|
42
42
|
|
|
43
43
|
@user.owned_tags.map(&:name).sort.should == %w(ruby scheme).sort
|
|
44
44
|
@user2.owned_tags.map(&:name).sort.should == %w(java python lisp ruby).sort
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
@taggable.tags_from(@user).sort.should == %w(ruby scheme).sort
|
|
47
47
|
@taggable.tags_from(@user2).sort.should == %w(java lisp python ruby).sort
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
@taggable.all_tags_list.sort.should == %w(ruby scheme java python lisp).sort
|
|
50
50
|
@taggable.all_tags_on(:tags).size.should == 5
|
|
51
51
|
end
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
it "should not lose tags from different taggers" do
|
|
54
54
|
@user2 = TaggableUser.create
|
|
55
55
|
@user2.tag(@taggable, :with => 'java, python, lisp, ruby', :on => :tags)
|
|
56
|
-
@user.tag(@taggable, :with => 'ruby, scheme', :on => :tags)
|
|
57
|
-
|
|
56
|
+
@user.tag(@taggable, :with => 'ruby, scheme', :on => :tags)
|
|
57
|
+
|
|
58
58
|
lambda {
|
|
59
59
|
@user2.tag(@taggable, :with => 'java, python, lisp', :on => :tags)
|
|
60
60
|
}.should change(ActsAsTaggableOn::Tagging, :count).by(-1)
|
|
61
61
|
|
|
62
62
|
[@user, @user2, @taggable].each(&:reload)
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
@taggable.tags_from(@user).sort.should == %w(ruby scheme).sort
|
|
65
65
|
@taggable.tags_from(@user2).sort.should == %w(java python lisp).sort
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
@taggable.all_tags_list.sort.should == %w(ruby scheme java python lisp).sort
|
|
68
68
|
@taggable.all_tags_on(:tags).length.should == 5
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
it "should not lose tags" do
|
|
72
72
|
@user2 = TaggableUser.create
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
@user.tag(@taggable, :with => 'awesome', :on => :tags)
|
|
75
75
|
@user2.tag(@taggable, :with => 'awesome, epic', :on => :tags)
|
|
76
76
|
|
|
@@ -78,28 +78,35 @@ describe "Tagger" do
|
|
|
78
78
|
@user2.tag(@taggable, :with => 'epic', :on => :tags)
|
|
79
79
|
}.should change(ActsAsTaggableOn::Tagging, :count).by(-1)
|
|
80
80
|
|
|
81
|
-
@taggable.reload
|
|
81
|
+
@taggable.reload
|
|
82
82
|
@taggable.all_tags_list.should include('awesome')
|
|
83
83
|
@taggable.all_tags_list.should include('epic')
|
|
84
84
|
end
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
it "should not lose tags" do
|
|
87
87
|
@taggable.update_attributes(:tag_list => 'ruby')
|
|
88
88
|
@user.tag(@taggable, :with => 'ruby, scheme', :on => :tags)
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
[@taggable, @user].each(&:reload)
|
|
91
91
|
@taggable.tag_list.should == %w(ruby)
|
|
92
92
|
@taggable.all_tags_list.sort.should == %w(ruby scheme).sort
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
lambda {
|
|
95
95
|
@taggable.update_attributes(:tag_list => "")
|
|
96
96
|
}.should change(ActsAsTaggableOn::Tagging, :count).by(-1)
|
|
97
|
-
|
|
97
|
+
|
|
98
98
|
@taggable.tag_list.should == []
|
|
99
99
|
@taggable.all_tags_list.sort.should == %w(ruby scheme).sort
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
it "is tagger" do
|
|
103
103
|
@user.is_tagger?.should(be_true)
|
|
104
|
-
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "should skip save if skip_save is passed as option" do
|
|
107
|
+
lambda {
|
|
108
|
+
@user.tag(@taggable, :with => 'epic', :on => :tags, :skip_save => true)
|
|
109
|
+
}.should_not change(ActsAsTaggableOn::Tagging, :count)
|
|
110
|
+
|
|
111
|
+
end
|
|
105
112
|
end
|
data/spec/models.rb
CHANGED
data/spec/schema.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
|
@@ -31,6 +31,8 @@ unless [].respond_to?(:freq)
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
# set adapter to use, default is sqlite3
|
|
35
|
+
# to use an alternative adapter run => rake spec DB='postgresql'
|
|
34
36
|
db_name = ENV['DB'] || 'sqlite3'
|
|
35
37
|
database_yml = File.expand_path('../database.yml', __FILE__)
|
|
36
38
|
|
|
@@ -72,7 +74,7 @@ end
|
|
|
72
74
|
|
|
73
75
|
def clean_database!
|
|
74
76
|
models = [ActsAsTaggableOn::Tag, ActsAsTaggableOn::Tagging, TaggableModel, OtherTaggableModel, InheritingTaggableModel,
|
|
75
|
-
AlteredInheritingTaggableModel, TaggableUser, UntaggableModel]
|
|
77
|
+
AlteredInheritingTaggableModel, TaggableUser, UntaggableModel, OrderedTaggableModel]
|
|
76
78
|
models.each do |model|
|
|
77
79
|
ActiveRecord::Base.connection.execute "DELETE FROM #{model.table_name}"
|
|
78
80
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: acts-as-taggable-on
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-
|
|
12
|
+
date: 2012-05-26 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rails
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70289733250580 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,21 +21,21 @@ dependencies:
|
|
|
21
21
|
version: '3.0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70289733250580
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: rspec
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70289733250080 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '2.
|
|
32
|
+
version: '2.6'
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70289733250080
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: ammeter
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70289733265980 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: 0.1.3
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70289733265980
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: sqlite3
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70289733265560 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0'
|
|
55
55
|
type: :development
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70289733265560
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: mysql2
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70289733264720 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ~>
|
|
@@ -65,10 +65,10 @@ dependencies:
|
|
|
65
65
|
version: 0.3.7
|
|
66
66
|
type: :development
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *70289733264720
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: pg
|
|
71
|
-
requirement: &
|
|
71
|
+
requirement: &70289733264020 !ruby/object:Gem::Requirement
|
|
72
72
|
none: false
|
|
73
73
|
requirements:
|
|
74
74
|
- - ! '>='
|
|
@@ -76,10 +76,10 @@ dependencies:
|
|
|
76
76
|
version: '0'
|
|
77
77
|
type: :development
|
|
78
78
|
prerelease: false
|
|
79
|
-
version_requirements: *
|
|
79
|
+
version_requirements: *70289733264020
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: guard
|
|
82
|
-
requirement: &
|
|
82
|
+
requirement: &70289733263160 !ruby/object:Gem::Requirement
|
|
83
83
|
none: false
|
|
84
84
|
requirements:
|
|
85
85
|
- - ! '>='
|
|
@@ -87,10 +87,10 @@ dependencies:
|
|
|
87
87
|
version: '0'
|
|
88
88
|
type: :development
|
|
89
89
|
prerelease: false
|
|
90
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *70289733263160
|
|
91
91
|
- !ruby/object:Gem::Dependency
|
|
92
92
|
name: guard-rspec
|
|
93
|
-
requirement: &
|
|
93
|
+
requirement: &70289733262700 !ruby/object:Gem::Requirement
|
|
94
94
|
none: false
|
|
95
95
|
requirements:
|
|
96
96
|
- - ! '>='
|
|
@@ -98,7 +98,7 @@ dependencies:
|
|
|
98
98
|
version: '0'
|
|
99
99
|
type: :development
|
|
100
100
|
prerelease: false
|
|
101
|
-
version_requirements: *
|
|
101
|
+
version_requirements: *70289733262700
|
|
102
102
|
description: With ActsAsTaggableOn, you can tag a single model on several contexts,
|
|
103
103
|
such as skills, interests, and awards. It also provides other advanced functionality.
|
|
104
104
|
email: michael@intridea.com
|
|
@@ -121,6 +121,7 @@ files:
|
|
|
121
121
|
- lib/acts_as_taggable_on/acts_as_taggable_on/cache.rb
|
|
122
122
|
- lib/acts_as_taggable_on/acts_as_taggable_on/collection.rb
|
|
123
123
|
- lib/acts_as_taggable_on/acts_as_taggable_on/core.rb
|
|
124
|
+
- lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb
|
|
124
125
|
- lib/acts_as_taggable_on/acts_as_taggable_on/ownership.rb
|
|
125
126
|
- lib/acts_as_taggable_on/acts_as_taggable_on/related.rb
|
|
126
127
|
- lib/acts_as_taggable_on/tag.rb
|
|
@@ -163,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
163
164
|
version: '0'
|
|
164
165
|
segments:
|
|
165
166
|
- 0
|
|
166
|
-
hash: -
|
|
167
|
+
hash: -1337901759790366478
|
|
167
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
169
|
none: false
|
|
169
170
|
requirements:
|
|
@@ -172,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
172
173
|
version: '0'
|
|
173
174
|
segments:
|
|
174
175
|
- 0
|
|
175
|
-
hash: -
|
|
176
|
+
hash: -1337901759790366478
|
|
176
177
|
requirements: []
|
|
177
178
|
rubyforge_project:
|
|
178
179
|
rubygems_version: 1.8.10
|