categorical 0.0.4

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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +33 -0
  4. data/app/models/categorical/tag.rb +5 -0
  5. data/app/models/categorical/tagging.rb +6 -0
  6. data/db/migrate/20150919153408_create_categorical_tags.rb +9 -0
  7. data/db/migrate/20151011215525_create_categorical_taggings.rb +8 -0
  8. data/db/migrate/20151015173150_add_index_to_tags.rb +5 -0
  9. data/lib/categorical.rb +6 -0
  10. data/lib/categorical/concerns/models/tag.rb +39 -0
  11. data/lib/categorical/engine.rb +5 -0
  12. data/lib/categorical/taggable.rb +10 -0
  13. data/lib/categorical/version.rb +3 -0
  14. data/lib/tasks/categorical_tasks.rake +4 -0
  15. data/test/categorical_test.rb +7 -0
  16. data/test/dummy/README.rdoc +28 -0
  17. data/test/dummy/Rakefile +6 -0
  18. data/test/dummy/app/assets/javascripts/application.js +13 -0
  19. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  20. data/test/dummy/app/controllers/application_controller.rb +5 -0
  21. data/test/dummy/app/helpers/application_helper.rb +2 -0
  22. data/test/dummy/app/models/post.rb +3 -0
  23. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  24. data/test/dummy/bin/bundle +3 -0
  25. data/test/dummy/bin/rails +4 -0
  26. data/test/dummy/bin/rake +4 -0
  27. data/test/dummy/bin/setup +29 -0
  28. data/test/dummy/config.ru +4 -0
  29. data/test/dummy/config/application.rb +13 -0
  30. data/test/dummy/config/boot.rb +5 -0
  31. data/test/dummy/config/database.yml +12 -0
  32. data/test/dummy/config/environment.rb +5 -0
  33. data/test/dummy/config/environments/development.rb +41 -0
  34. data/test/dummy/config/environments/production.rb +79 -0
  35. data/test/dummy/config/environments/test.rb +42 -0
  36. data/test/dummy/config/initializers/assets.rb +11 -0
  37. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  38. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  39. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  40. data/test/dummy/config/initializers/inflections.rb +16 -0
  41. data/test/dummy/config/initializers/mime_types.rb +4 -0
  42. data/test/dummy/config/initializers/session_store.rb +3 -0
  43. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  44. data/test/dummy/config/locales/en.yml +23 -0
  45. data/test/dummy/config/routes.rb +4 -0
  46. data/test/dummy/config/secrets.yml +22 -0
  47. data/test/dummy/db/migrate/20151003185718_create_posts.rb +9 -0
  48. data/test/dummy/db/schema.rb +41 -0
  49. data/test/dummy/log/development.log +241 -0
  50. data/test/dummy/log/test.log +6583 -0
  51. data/test/dummy/public/404.html +67 -0
  52. data/test/dummy/public/422.html +67 -0
  53. data/test/dummy/public/500.html +66 -0
  54. data/test/dummy/public/favicon.ico +0 -0
  55. data/test/models/categorical/concerns/taggable_test.rb +15 -0
  56. data/test/models/categorical/tag_test.rb +53 -0
  57. data/test/models/categorical/tagging_test.rb +25 -0
  58. data/test/test_helper.rb +12 -0
  59. metadata +202 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ module Categorical
4
+ class TaggableTest < ActiveSupport::TestCase
5
+ def test_taggable_has_many_tags_through_taggings
6
+ taggable = Post.new
7
+ tag = Tag.new(label: "tag")
8
+
9
+ taggable.tags << tag
10
+ taggable.save!
11
+
12
+ assert_equal(taggable.tags, [tag])
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+
3
+ module Categorical
4
+ class TagTest < ActiveSupport::TestCase
5
+ def test_has_many_taggings
6
+ tag = Tag.create!(label: "label")
7
+ tagging = Tagging.create!(tag: tag)
8
+
9
+ assert_equal(tag.taggings, [tagging])
10
+ end
11
+
12
+ def test_validates_presence_of_label
13
+ exp = assert_raises { Tag.create! }
14
+ assert_match(/Validation failed: Label can't be blank/, exp.message)
15
+ end
16
+
17
+ def test_validates_uniqueness_of_label
18
+ Tag.create!(label: "label")
19
+ exp = assert_raises { Tag.create!(label: "label") }
20
+ assert_match(/Label has already been taken/, exp.message)
21
+ end
22
+
23
+ def test_validates_uniqueness_of_label_not_case_sensitive
24
+ Tag.create!(label: "Label")
25
+ exp = assert_raises { Tag.create!(label: "label") }
26
+ assert_match(/Label has already been taken/, exp.message)
27
+ end
28
+
29
+ def test_validates_length_of_label
30
+ exp = assert_raises do
31
+ label = 'x' * 255
32
+ Tag.create!(label: label)
33
+ end
34
+ assert_match(/Label is too long \(maximum is 244 characters\)/, exp.message)
35
+ end
36
+
37
+ def test_to_s
38
+ tag = Tag.create!(label: "label")
39
+
40
+ assert_equal("label", tag.to_s)
41
+ end
42
+
43
+ def test_fetching_taggables_by_class
44
+ post = Post.new
45
+ tag = Tag.new(label: "tag")
46
+
47
+ post.tags << tag
48
+ post.save!
49
+
50
+ assert_equal(tag.posts, [post])
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ module Categorical
4
+ class TaggingTest < ActiveSupport::TestCase
5
+ def test_tagging_belongs_to_tag
6
+ tag = Tag.create!(label: 'label')
7
+ tagging = Tagging.create!
8
+
9
+ tagging.tag = tag
10
+ tagging.save!
11
+
12
+ assert_equal(tagging.tag, tag)
13
+ end
14
+
15
+ def test_tagging_belongs_to_taggable
16
+ taggable = Post.create!
17
+ tagging = Tagging.create!
18
+
19
+ tagging.taggable = taggable
20
+ tagging.save!
21
+
22
+ assert_equal(tagging.taggable, taggable)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
6
+ ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
7
+ require "rails/test_help"
8
+ require "minitest/rails"
9
+ require "minitest/pride"
10
+ require "pry-rails"
11
+
12
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: categorical
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Josh Klina
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pg
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Categorical allows for any Rails model to become taggable and provides
70
+ utility methods for managing tags and taggables.
71
+ email:
72
+ - joshua.klina@gmail.com
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - MIT-LICENSE
78
+ - Rakefile
79
+ - app/models/categorical/tag.rb
80
+ - app/models/categorical/tagging.rb
81
+ - db/migrate/20150919153408_create_categorical_tags.rb
82
+ - db/migrate/20151011215525_create_categorical_taggings.rb
83
+ - db/migrate/20151015173150_add_index_to_tags.rb
84
+ - lib/categorical.rb
85
+ - lib/categorical/concerns/models/tag.rb
86
+ - lib/categorical/engine.rb
87
+ - lib/categorical/taggable.rb
88
+ - lib/categorical/version.rb
89
+ - lib/tasks/categorical_tasks.rake
90
+ - test/categorical_test.rb
91
+ - test/dummy/README.rdoc
92
+ - test/dummy/Rakefile
93
+ - test/dummy/app/assets/javascripts/application.js
94
+ - test/dummy/app/assets/stylesheets/application.css
95
+ - test/dummy/app/controllers/application_controller.rb
96
+ - test/dummy/app/helpers/application_helper.rb
97
+ - test/dummy/app/models/post.rb
98
+ - test/dummy/app/views/layouts/application.html.erb
99
+ - test/dummy/bin/bundle
100
+ - test/dummy/bin/rails
101
+ - test/dummy/bin/rake
102
+ - test/dummy/bin/setup
103
+ - test/dummy/config.ru
104
+ - test/dummy/config/application.rb
105
+ - test/dummy/config/boot.rb
106
+ - test/dummy/config/database.yml
107
+ - test/dummy/config/environment.rb
108
+ - test/dummy/config/environments/development.rb
109
+ - test/dummy/config/environments/production.rb
110
+ - test/dummy/config/environments/test.rb
111
+ - test/dummy/config/initializers/assets.rb
112
+ - test/dummy/config/initializers/backtrace_silencers.rb
113
+ - test/dummy/config/initializers/cookies_serializer.rb
114
+ - test/dummy/config/initializers/filter_parameter_logging.rb
115
+ - test/dummy/config/initializers/inflections.rb
116
+ - test/dummy/config/initializers/mime_types.rb
117
+ - test/dummy/config/initializers/session_store.rb
118
+ - test/dummy/config/initializers/wrap_parameters.rb
119
+ - test/dummy/config/locales/en.yml
120
+ - test/dummy/config/routes.rb
121
+ - test/dummy/config/secrets.yml
122
+ - test/dummy/db/migrate/20151003185718_create_posts.rb
123
+ - test/dummy/db/schema.rb
124
+ - test/dummy/log/development.log
125
+ - test/dummy/log/test.log
126
+ - test/dummy/public/404.html
127
+ - test/dummy/public/422.html
128
+ - test/dummy/public/500.html
129
+ - test/dummy/public/favicon.ico
130
+ - test/models/categorical/concerns/taggable_test.rb
131
+ - test/models/categorical/tag_test.rb
132
+ - test/models/categorical/tagging_test.rb
133
+ - test/test_helper.rb
134
+ homepage: https://github.com/jklina/categorical
135
+ licenses:
136
+ - MIT
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 2.0.0
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.4.5
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: Provides basic tagging for Rails applications
158
+ test_files:
159
+ - test/categorical_test.rb
160
+ - test/dummy/app/assets/javascripts/application.js
161
+ - test/dummy/app/assets/stylesheets/application.css
162
+ - test/dummy/app/controllers/application_controller.rb
163
+ - test/dummy/app/helpers/application_helper.rb
164
+ - test/dummy/app/models/post.rb
165
+ - test/dummy/app/views/layouts/application.html.erb
166
+ - test/dummy/bin/bundle
167
+ - test/dummy/bin/rails
168
+ - test/dummy/bin/rake
169
+ - test/dummy/bin/setup
170
+ - test/dummy/config/application.rb
171
+ - test/dummy/config/boot.rb
172
+ - test/dummy/config/database.yml
173
+ - test/dummy/config/environment.rb
174
+ - test/dummy/config/environments/development.rb
175
+ - test/dummy/config/environments/production.rb
176
+ - test/dummy/config/environments/test.rb
177
+ - test/dummy/config/initializers/assets.rb
178
+ - test/dummy/config/initializers/backtrace_silencers.rb
179
+ - test/dummy/config/initializers/cookies_serializer.rb
180
+ - test/dummy/config/initializers/filter_parameter_logging.rb
181
+ - test/dummy/config/initializers/inflections.rb
182
+ - test/dummy/config/initializers/mime_types.rb
183
+ - test/dummy/config/initializers/session_store.rb
184
+ - test/dummy/config/initializers/wrap_parameters.rb
185
+ - test/dummy/config/locales/en.yml
186
+ - test/dummy/config/routes.rb
187
+ - test/dummy/config/secrets.yml
188
+ - test/dummy/config.ru
189
+ - test/dummy/db/migrate/20151003185718_create_posts.rb
190
+ - test/dummy/db/schema.rb
191
+ - test/dummy/log/development.log
192
+ - test/dummy/log/test.log
193
+ - test/dummy/public/404.html
194
+ - test/dummy/public/422.html
195
+ - test/dummy/public/500.html
196
+ - test/dummy/public/favicon.ico
197
+ - test/dummy/Rakefile
198
+ - test/dummy/README.rdoc
199
+ - test/models/categorical/concerns/taggable_test.rb
200
+ - test/models/categorical/tag_test.rb
201
+ - test/models/categorical/tagging_test.rb
202
+ - test/test_helper.rb