acts-as-taggable-on 3.2.5 → 3.2.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a20675bbbf6a845a9af63de544fd91aa3d0456c4
4
- data.tar.gz: 525532eb66d8245b5d5e5f5e0b0bcafbd71f0165
3
+ metadata.gz: c207ddc1c1646d4ad2e7ea2acb1b187ae59c7dfe
4
+ data.tar.gz: 71f15406a4e299bedca0c8e23d473d02cab5b1d8
5
5
  SHA512:
6
- metadata.gz: da3437561dbcb861750489d2abcff557bd2aa488a483ea73d242a51d08fa6df6be4b8a64b1f7fbbed9e3dd44ea63e9b7b6101bd4d52d5a0ee05658272d16e5d8
7
- data.tar.gz: 4f34e61243d64b0f77c842dc929c3dc6e1039b65a388d0da2e0b31484b7c63637acc76764dc18c5fde11198199dcf5756460b322e38abd5cbb9a65ed1a510c1d
6
+ metadata.gz: e78b1c9f8d1b3ccc32567edd4f2e5703b34ea21c4ecf13bbc723647dedcfb2674177927955ffd6b0fd10a0e249d5e7e4ff85d4a72886a7d5016290bbab146862
7
+ data.tar.gz: b5e3f003ac97a1e11bad401cd8c0734570d6d0e647eed0c8c64d2c17cc7e88cfcc1204d0bf3e70b52641096cf79e84b0e9b190e19e667b938abea182e10fdf96
data/Appraisals CHANGED
@@ -1,20 +1,16 @@
1
1
  appraise "activerecord-3.2" do
2
2
  gem "activerecord", "~> 3.2"
3
- gem "actionpack", "~> 3.2"
4
3
  end
5
4
 
6
5
  appraise "activerecord-4.0" do
7
6
  gem "activerecord", "~> 4.0"
8
- gem "actionpack", "~> 4.0"
9
7
  end
10
8
 
11
9
  appraise "activerecord-4.1" do
12
10
  gem "activerecord", "~> 4.1"
13
- gem "actionpack", "~> 4.1"
14
11
  end
15
12
 
16
13
  appraise "activerecord-edge" do
17
14
  gem "activerecord", github: "rails/rails"
18
- gem "actionpack", github: "rails/rails"
19
15
  gem 'arel', github: 'rails/arel'
20
16
  end
@@ -23,7 +23,6 @@ Gem::Specification.new do |gem|
23
23
  end
24
24
 
25
25
  gem.add_runtime_dependency 'activerecord', ['>= 3', '< 5']
26
- gem.add_runtime_dependency 'actionpack', ['>= 3', '< 5']
27
26
 
28
27
  gem.add_development_dependency 'sqlite3'
29
28
  gem.add_development_dependency 'mysql2', '~> 0.3.7'
@@ -3,7 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 3.2"
6
- gem "actionpack", "~> 3.2"
7
6
 
8
7
  group :local_development do
9
8
  gem "guard"
@@ -3,7 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 4.0"
6
- gem "actionpack", "~> 4.0"
7
6
 
8
7
  group :local_development do
9
8
  gem "guard"
@@ -3,7 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", "~> 4.1"
6
- gem "actionpack", "~> 4.1"
7
6
 
8
7
  group :local_development do
9
8
  gem "guard"
@@ -3,7 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "activerecord", :github => "rails/rails"
6
- gem "actionpack", :github => "rails/rails"
7
6
  gem "arel", :github => "rails/arel"
8
7
 
9
8
  group :local_development do
@@ -3,7 +3,7 @@ require 'active_record/version'
3
3
  require 'active_support/core_ext/module'
4
4
  require 'action_view'
5
5
 
6
- require_relative 'acts_as_taggable_on/engine'
6
+ require_relative 'acts_as_taggable_on/engine' if defined?(Rails)
7
7
 
8
8
  require 'digest/sha1'
9
9
 
@@ -153,7 +153,7 @@ module ActsAsTaggableOn::Taggable
153
153
  end
154
154
 
155
155
  joins << tagging_join
156
- unless any == 'distinct' # Fix issue #544
156
+ unless any == 'distinct' # Fix issue #544
157
157
  group = "#{table_name}.#{primary_key}"
158
158
  select_clause << group
159
159
  end
@@ -329,8 +329,12 @@ module ActsAsTaggableOn::Taggable
329
329
  old = changed_attributes[attrib]
330
330
  changed_attributes.delete(attrib) if old.to_s == value.to_s
331
331
  else
332
- old = tag_list_on(context).to_s
333
- changed_attributes[attrib] = old if old.to_s != value.to_s
332
+ old = tag_list_on(context)
333
+ if self.class.preserve_tag_order
334
+ changed_attributes[attrib] = old if old.to_s != value.to_s
335
+ else
336
+ changed_attributes[attrib] = old.to_s if old.sort != ActsAsTaggableOn::TagListParser.parse(value).sort
337
+ end
334
338
  end
335
339
  end
336
340
 
@@ -1,4 +1,4 @@
1
1
  module ActsAsTaggableOn
2
- VERSION = '3.2.5'
2
+ VERSION = '3.2.6'
3
3
  end
4
4
 
@@ -0,0 +1,127 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe ActsAsTaggableOn::Taggable::Dirty do
5
+ context 'with un-contexted tags' do
6
+ before(:each) do
7
+ @taggable = TaggableModel.create(tag_list: 'awesome, epic')
8
+ end
9
+
10
+ context 'when tag_list changed' do
11
+ before(:each) do
12
+ expect(@taggable.changes).to be_empty
13
+ @taggable.tag_list = 'one'
14
+ end
15
+
16
+ it 'should show changes of dirty object' do
17
+ expect(@taggable.changes).to eq({'tag_list' => ['awesome, epic', ['one']]})
18
+ end
19
+
20
+ it 'flags tag_list as changed' do
21
+ expect(@taggable.tag_list_changed?).to be_truthy
22
+ end
23
+
24
+ it 'preserves original value' do
25
+ expect(@taggable.tag_list_was).to eq('awesome, epic')
26
+ end
27
+
28
+ it 'shows what the change was' do
29
+ expect(@taggable.tag_list_change).to eq(['awesome, epic', ['one']])
30
+ end
31
+
32
+ context 'without order' do
33
+ it 'should not mark attribute if order change ' do
34
+ taggable = TaggableModel.create(name: 'Dirty Harry', tag_list: %w(d c b a))
35
+ taggable.tag_list = %w(a b c d)
36
+ expect(taggable.tag_list_changed?).to be_falsey
37
+ end
38
+ end
39
+
40
+ context 'with order' do
41
+ it 'should mark attribute if order change' do
42
+ taggable = OrderedTaggableModel.create(name: 'Clean Harry', tag_list: 'd,c,b,a')
43
+ taggable.save
44
+ taggable.tag_list = %w(a b c d)
45
+ expect(taggable.tag_list_changed?).to be_truthy
46
+ end
47
+ end
48
+ end
49
+
50
+ context 'when tag_list is the same' do
51
+ before(:each) do
52
+ @taggable.tag_list = 'awesome, epic'
53
+ end
54
+
55
+ it 'is not flagged as changed' do
56
+ expect(@taggable.tag_list_changed?).to be_falsy
57
+ end
58
+
59
+ it 'does not show any changes to the taggable item' do
60
+ expect(@taggable.changes).to be_empty
61
+ end
62
+
63
+ context "and using a delimiter different from a ','" do
64
+ before do
65
+ @old_delimiter = ActsAsTaggableOn.delimiter
66
+ ActsAsTaggableOn.delimiter = ';'
67
+ end
68
+
69
+ after do
70
+ ActsAsTaggableOn.delimiter = @old_delimiter
71
+ end
72
+
73
+ it 'does not show any changes to the taggable item when using array assignments' do
74
+ @taggable.tag_list = %w(awesome epic)
75
+ expect(@taggable.changes).to be_empty
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ context 'with context tags' do
82
+ before(:each) do
83
+ @taggable = TaggableModel.create('language_list' => 'awesome, epic')
84
+ end
85
+
86
+ context 'when language_list changed' do
87
+ before(:each) do
88
+ expect(@taggable.changes).to be_empty
89
+ @taggable.language_list = 'one'
90
+ end
91
+
92
+ it 'should show changes of dirty object' do
93
+ expect(@taggable.changes).to eq({'language_list' => ['awesome, epic', ['one']]})
94
+ end
95
+
96
+ it 'flags language_list as changed' do
97
+ expect(@taggable.language_list_changed?).to be_truthy
98
+ end
99
+
100
+ it 'preserves original value' do
101
+ expect(@taggable.language_list_was).to eq('awesome, epic')
102
+ end
103
+
104
+ it 'shows what the change was' do
105
+ expect(@taggable.language_list_change).to eq(['awesome, epic', ['one']])
106
+ end
107
+
108
+ it 'shows what the changes were' do
109
+ expect(@taggable.language_list_changes).to eq(['awesome, epic', ['one']])
110
+ end
111
+ end
112
+
113
+ context 'when language_list is the same' do
114
+ before(:each) do
115
+ @taggable.language_list = 'awesome, epic'
116
+ end
117
+
118
+ it 'is not flagged as changed' do
119
+ expect(@taggable.language_list_changed?).to be_falsy
120
+ end
121
+
122
+ it 'does not show any changes to the taggable item' do
123
+ expect(@taggable.changes).to be_empty
124
+ end
125
+ end
126
+ end
127
+ end
@@ -506,6 +506,13 @@ describe 'Taggable' do
506
506
  expect(options).to eq({:exclude => true})
507
507
  end
508
508
 
509
+ it 'should not delete tags if not updated' do
510
+ model = TaggableModel.create(name: 'foo', tag_list: 'ruby, rails, programming')
511
+ model.update_attributes(name: 'bar')
512
+ model.reload
513
+ expect(model.tag_list.sort).to eq(%w(ruby rails programming).sort)
514
+ end
515
+
509
516
  context 'Duplicates' do
510
517
  context 'should not create duplicate taggings' do
511
518
  let(:bob) { TaggableModel.create(name: 'Bob') }
@@ -703,114 +710,6 @@ describe 'Taggable' do
703
710
  end
704
711
  end
705
712
 
706
- describe 'Dirty Objects' do
707
- context 'with un-contexted tags' do
708
- before(:each) do
709
- @taggable = TaggableModel.create(tag_list: 'awesome, epic')
710
- end
711
-
712
- context 'when tag_list changed' do
713
- before(:each) do
714
- expect(@taggable.changes).to be_empty
715
- @taggable.tag_list = 'one'
716
- end
717
-
718
- it 'should show changes of dirty object' do
719
- expect(@taggable.changes).to eq({'tag_list' => ['awesome, epic', ['one']]})
720
- end
721
-
722
- it 'flags tag_list as changed' do
723
- expect(@taggable.tag_list_changed?).to be_truthy
724
- end
725
-
726
- it 'preserves original value' do
727
- expect(@taggable.tag_list_was).to eq('awesome, epic')
728
- end
729
-
730
- it 'shows what the change was' do
731
- expect(@taggable.tag_list_change).to eq(['awesome, epic', ['one']])
732
- end
733
- end
734
-
735
- context 'when tag_list is the same' do
736
- before(:each) do
737
- @taggable.tag_list = 'awesome, epic'
738
- end
739
-
740
- it 'is not flagged as changed' do
741
- expect(@taggable.tag_list_changed?).to be_falsy
742
- end
743
-
744
- it 'does not show any changes to the taggable item' do
745
- expect(@taggable.changes).to be_empty
746
- end
747
-
748
- context "and using a delimiter different from a ','" do
749
- before do
750
- @old_delimiter = ActsAsTaggableOn.delimiter
751
- ActsAsTaggableOn.delimiter = ';'
752
- end
753
-
754
- after do
755
- ActsAsTaggableOn.delimiter = @old_delimiter
756
- end
757
-
758
- it 'does not show any changes to the taggable item when using array assignments' do
759
- @taggable.tag_list = %w(awesome epic)
760
- expect(@taggable.changes).to be_empty
761
- end
762
- end
763
- end
764
- end
765
-
766
- context 'with context tags' do
767
- before(:each) do
768
- @taggable = TaggableModel.create('language_list' => 'awesome, epic')
769
- end
770
-
771
- context 'when language_list changed' do
772
- before(:each) do
773
- expect(@taggable.changes).to be_empty
774
- @taggable.language_list = 'one'
775
- end
776
-
777
- it 'should show changes of dirty object' do
778
- expect(@taggable.changes).to eq({'language_list' => ['awesome, epic', ['one']]})
779
- end
780
-
781
- it 'flags language_list as changed' do
782
- expect(@taggable.language_list_changed?).to be_truthy
783
- end
784
-
785
- it 'preserves original value' do
786
- expect(@taggable.language_list_was).to eq('awesome, epic')
787
- end
788
-
789
- it 'shows what the change was' do
790
- expect(@taggable.language_list_change).to eq(['awesome, epic', ['one']])
791
- end
792
-
793
- it 'shows what the changes were' do
794
- expect(@taggable.language_list_changes).to eq(['awesome, epic', ['one']])
795
- end
796
- end
797
-
798
- context 'when language_list is the same' do
799
- before(:each) do
800
- @taggable.language_list = 'awesome, epic'
801
- end
802
-
803
- it 'is not flagged as changed' do
804
- expect(@taggable.language_list_changed?).to be_falsy
805
- end
806
-
807
- it 'does not show any changes to the taggable item' do
808
- expect(@taggable.changes).to be_empty
809
- end
810
- end
811
- end
812
- end
813
-
814
713
  describe 'Autogenerated methods' do
815
714
  it 'should be overridable' do
816
715
  expect(TaggableModel.create(tag_list: 'woo').tag_list_submethod_called).to be_truthy
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: 3.2.5
4
+ version: 3.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-25 00:00:00.000000000 Z
12
+ date: 2014-05-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -31,26 +31,6 @@ dependencies:
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '5'
34
- - !ruby/object:Gem::Dependency
35
- name: actionpack
36
- requirement: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '3'
41
- - - "<"
42
- - !ruby/object:Gem::Version
43
- version: '5'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: '3'
51
- - - "<"
52
- - !ruby/object:Gem::Version
53
- version: '5'
54
34
  - !ruby/object:Gem::Dependency
55
35
  name: sqlite3
56
36
  requirement: !ruby/object:Gem::Requirement
@@ -219,6 +199,7 @@ files:
219
199
  - spec/acts_as_taggable_on/tag_list_parser_spec.rb
220
200
  - spec/acts_as_taggable_on/tag_list_spec.rb
221
201
  - spec/acts_as_taggable_on/tag_spec.rb
202
+ - spec/acts_as_taggable_on/taggable/dirty_spec.rb
222
203
  - spec/acts_as_taggable_on/taggable_spec.rb
223
204
  - spec/acts_as_taggable_on/tagger_spec.rb
224
205
  - spec/acts_as_taggable_on/tagging_spec.rb
@@ -292,6 +273,7 @@ test_files:
292
273
  - spec/acts_as_taggable_on/tag_list_parser_spec.rb
293
274
  - spec/acts_as_taggable_on/tag_list_spec.rb
294
275
  - spec/acts_as_taggable_on/tag_spec.rb
276
+ - spec/acts_as_taggable_on/taggable/dirty_spec.rb
295
277
  - spec/acts_as_taggable_on/taggable_spec.rb
296
278
  - spec/acts_as_taggable_on/tagger_spec.rb
297
279
  - spec/acts_as_taggable_on/tagging_spec.rb