acts_as_20ggable 1.0.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.
Files changed (49) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +1 -0
  3. data/CHANGELOG +6 -0
  4. data/Gemfile +3 -0
  5. data/Gemfile.lock +61 -0
  6. data/README +76 -0
  7. data/Rakefile +24 -0
  8. data/acts_as_20ggable.gemspec +26 -0
  9. data/generators/acts_as_20ggable_migration/acts_as_20ggable_migration_generator.rb +11 -0
  10. data/generators/acts_as_20ggable_migration/templates/migration.rb +45 -0
  11. data/lib/acts_as_20ggable.rb +7 -0
  12. data/lib/acts_as_taggable.rb +201 -0
  13. data/lib/tag.rb +146 -0
  14. data/lib/tag_counts_extension.rb +3 -0
  15. data/lib/tag_hierarchy_builder.rb +201 -0
  16. data/lib/tag_list.rb +108 -0
  17. data/lib/tagging.rb +10 -0
  18. data/lib/tags_helper.rb +13 -0
  19. data/test/fixtures/magazine.rb +3 -0
  20. data/test/fixtures/magazines.yml +7 -0
  21. data/test/fixtures/photo.rb +8 -0
  22. data/test/fixtures/photos.yml +24 -0
  23. data/test/fixtures/post.rb +7 -0
  24. data/test/fixtures/posts.yml +34 -0
  25. data/test/fixtures/schema.rb +73 -0
  26. data/test/fixtures/special_post.rb +2 -0
  27. data/test/fixtures/subscription.rb +4 -0
  28. data/test/fixtures/subscriptions.yml +3 -0
  29. data/test/fixtures/taggings.yml +162 -0
  30. data/test/fixtures/tags.yml +75 -0
  31. data/test/fixtures/tags_hierarchy.yml +31 -0
  32. data/test/fixtures/tags_synonyms.yml +16 -0
  33. data/test/fixtures/tags_transitive_hierarchy.yml +96 -0
  34. data/test/fixtures/user.rb +9 -0
  35. data/test/fixtures/users.yml +7 -0
  36. data/test/fixtures/video.rb +3 -0
  37. data/test/fixtures/videos.yml +9 -0
  38. data/test/lib/acts_as_taggable_test.rb +359 -0
  39. data/test/lib/tag_hierarchy_builder_test.rb +109 -0
  40. data/test/lib/tag_list_test.rb +120 -0
  41. data/test/lib/tag_test.rb +45 -0
  42. data/test/lib/tagging_test.rb +14 -0
  43. data/test/lib/tags_helper_test.rb +28 -0
  44. data/test/lib/tags_hierarchy_test.rb +12 -0
  45. data/test/support/activerecord_test_connector.rb +129 -0
  46. data/test/support/custom_asserts.rb +35 -0
  47. data/test/support/database.yml +10 -0
  48. data/test/test_helper.rb +20 -0
  49. metadata +183 -0
@@ -0,0 +1,35 @@
1
+ module CustomAsserts
2
+ def assert_equivalent(expected, actual, message = nil)
3
+ assert ((expected - actual) + (actual - expected)).empty?
4
+ end
5
+
6
+ def assert_tag_counts(tags, expected_values)
7
+ # Map the tag fixture names to real tag names
8
+ expected_values = expected_values.inject({}) do |hash, (tag, count)|
9
+ hash[tags(tag).name] = count
10
+ hash
11
+ end
12
+
13
+ tags.each do |tag|
14
+ value = expected_values.delete(tag.name)
15
+
16
+ assert_not_nil value, "Expected count for #{tag.name} was not provided"
17
+ assert_equal value, tag.count, "Expected value of #{value} for #{tag.name}, but was #{tag.count}"
18
+ end
19
+
20
+ unless expected_values.empty?
21
+ assert false, "The following tag counts were not present: #{expected_values.inspect}"
22
+ end
23
+ end
24
+
25
+ def assert_queries(num = 1)
26
+ $query_count = 0
27
+ yield
28
+ ensure
29
+ assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed."
30
+ end
31
+
32
+ def assert_no_queries(&block)
33
+ assert_queries(0, &block)
34
+ end
35
+ end
@@ -0,0 +1,10 @@
1
+ mysql:
2
+ :adapter: mysql
3
+ :host: localhost
4
+ :username: rails
5
+ :password:
6
+ :database: rails_plugin_test
7
+
8
+ sqlite3:
9
+ :adapter: sqlite3
10
+ :database: ':memory:'
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.require
4
+
5
+ require 'active_record/fixtures'
6
+ require 'active_support/test_case'
7
+ require 'action_view/test_case'
8
+
9
+ require 'test/unit'
10
+
11
+ require 'custom_asserts'
12
+ require 'activerecord_test_connector'
13
+
14
+ ActiverecordTestConnector.setup
15
+ abort unless ActiverecordTestConnector.able_to_connect
16
+
17
+ class ActiveSupport::TestCase
18
+ include CustomAsserts
19
+ extend ActiverecordTestConnector::FixtureSetup
20
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_20ggable
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dmitriy Timokhin
8
+ - Andrey Subbota
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-09-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '3.2'
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: 3.2.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '3.2'
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.0
34
+ - !ruby/object:Gem::Dependency
35
+ name: rake
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: actionpack
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.2'
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: 3.2.0
58
+ type: :development
59
+ prerelease: false
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ version: '3.2'
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: 3.2.0
68
+ - !ruby/object:Gem::Dependency
69
+ name: activesupport
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: '3.2'
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 3.2.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: '3.2'
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: 3.2.0
88
+ - !ruby/object:Gem::Dependency
89
+ name: sqlite3
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ description: ! 'This gem is rails3.2 compatible version of Dmitriy Timokhin''s plugin
103
+ acts_as_20ggable: https://github.com/pager/acts_as_20ggable'
104
+ email:
105
+ - subbota@gmail.com
106
+ executables: []
107
+ extensions: []
108
+ extra_rdoc_files:
109
+ - CHANGELOG
110
+ - README
111
+ files:
112
+ - .gitignore
113
+ - CHANGELOG
114
+ - Gemfile
115
+ - Gemfile.lock
116
+ - README
117
+ - Rakefile
118
+ - acts_as_20ggable.gemspec
119
+ - generators/acts_as_20ggable_migration/acts_as_20ggable_migration_generator.rb
120
+ - generators/acts_as_20ggable_migration/templates/migration.rb
121
+ - lib/acts_as_20ggable.rb
122
+ - lib/acts_as_taggable.rb
123
+ - lib/tag.rb
124
+ - lib/tag_counts_extension.rb
125
+ - lib/tag_hierarchy_builder.rb
126
+ - lib/tag_list.rb
127
+ - lib/tagging.rb
128
+ - lib/tags_helper.rb
129
+ - test/fixtures/magazine.rb
130
+ - test/fixtures/magazines.yml
131
+ - test/fixtures/photo.rb
132
+ - test/fixtures/photos.yml
133
+ - test/fixtures/post.rb
134
+ - test/fixtures/posts.yml
135
+ - test/fixtures/schema.rb
136
+ - test/fixtures/special_post.rb
137
+ - test/fixtures/subscription.rb
138
+ - test/fixtures/subscriptions.yml
139
+ - test/fixtures/taggings.yml
140
+ - test/fixtures/tags.yml
141
+ - test/fixtures/tags_hierarchy.yml
142
+ - test/fixtures/tags_synonyms.yml
143
+ - test/fixtures/tags_transitive_hierarchy.yml
144
+ - test/fixtures/user.rb
145
+ - test/fixtures/users.yml
146
+ - test/fixtures/video.rb
147
+ - test/fixtures/videos.yml
148
+ - test/lib/acts_as_taggable_test.rb
149
+ - test/lib/tag_hierarchy_builder_test.rb
150
+ - test/lib/tag_list_test.rb
151
+ - test/lib/tag_test.rb
152
+ - test/lib/tagging_test.rb
153
+ - test/lib/tags_helper_test.rb
154
+ - test/lib/tags_hierarchy_test.rb
155
+ - test/support/activerecord_test_connector.rb
156
+ - test/support/custom_asserts.rb
157
+ - test/support/database.yml
158
+ - test/test_helper.rb
159
+ homepage: https://github.com/numbata/acts_as_20ggable
160
+ licenses:
161
+ - MIT
162
+ metadata: {}
163
+ post_install_message:
164
+ rdoc_options: []
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubyforge_project:
179
+ rubygems_version: 2.2.2
180
+ signing_key:
181
+ specification_version: 4
182
+ summary: Implements categories ('Tags v2.0') engine inspired by Dmitriy Smirnov's
183
+ test_files: []