record_encoder 0.0.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +37 -0
  4. data/Rakefile +32 -0
  5. data/lib/record_encoder.rb +29 -0
  6. data/lib/record_encoder/bert.rb +97 -0
  7. data/lib/record_encoder/version.rb +3 -0
  8. data/lib/tasks/record_encoder_tasks.rake +4 -0
  9. data/test/dummy/README.rdoc +28 -0
  10. data/test/dummy/Rakefile +6 -0
  11. data/test/dummy/app/assets/javascripts/application.js +13 -0
  12. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  13. data/test/dummy/app/controllers/application_controller.rb +5 -0
  14. data/test/dummy/app/helpers/application_helper.rb +2 -0
  15. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  16. data/test/dummy/bin/bundle +3 -0
  17. data/test/dummy/bin/rails +4 -0
  18. data/test/dummy/bin/rake +4 -0
  19. data/test/dummy/config.ru +4 -0
  20. data/test/dummy/config/application.rb +23 -0
  21. data/test/dummy/config/boot.rb +5 -0
  22. data/test/dummy/config/database.yml +25 -0
  23. data/test/dummy/config/environment.rb +5 -0
  24. data/test/dummy/config/environments/development.rb +37 -0
  25. data/test/dummy/config/environments/production.rb +78 -0
  26. data/test/dummy/config/environments/test.rb +39 -0
  27. data/test/dummy/config/initializers/assets.rb +8 -0
  28. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  29. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  30. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  31. data/test/dummy/config/initializers/inflections.rb +16 -0
  32. data/test/dummy/config/initializers/mime_types.rb +4 -0
  33. data/test/dummy/config/initializers/session_store.rb +3 -0
  34. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  35. data/test/dummy/config/locales/en.yml +23 -0
  36. data/test/dummy/config/routes.rb +56 -0
  37. data/test/dummy/config/secrets.yml +22 -0
  38. data/test/dummy/db/test.sqlite3 +0 -0
  39. data/test/dummy/log/test.log +200 -0
  40. data/test/dummy/public/404.html +67 -0
  41. data/test/dummy/public/422.html +67 -0
  42. data/test/dummy/public/500.html +66 -0
  43. data/test/dummy/public/favicon.ico +0 -0
  44. data/test/record_encoder/bert_test.rb +50 -0
  45. data/test/record_encoder_test.rb +74 -0
  46. data/test/test_helper.rb +16 -0
  47. metadata +197 -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,50 @@
1
+ require 'test_helper'
2
+ require 'record_encoder/bert'
3
+
4
+ class RecordEncoderBertTest < ActiveSupport::TestCase
5
+
6
+ test "instantiation requires at least one argument" do
7
+ error = assert_raise(ArgumentError) do
8
+ RecordEncoder::Bert.new
9
+ end
10
+ assert_equal "wrong number of arguments (0 for 1+)", error.message
11
+ end
12
+
13
+ test "instantiation requires a valid argument" do
14
+ error = assert_raise(RuntimeError) do
15
+ RecordEncoder::Bert.new ""
16
+ end
17
+ assert_equal "klass can't be blank!", error.message
18
+ end
19
+
20
+ test "instantiation requires a Class as argument" do
21
+ error = assert_raise(RuntimeError) do
22
+ RecordEncoder::Bert.new 123
23
+ end
24
+ assert_equal "klass must be a Class!", error.message
25
+ end
26
+
27
+ test "requires a block" do
28
+ error = assert_raise(LocalJumpError) do
29
+ RecordEncoder::Bert.new(dummy_class).to_bert
30
+ end
31
+ assert_equal "no block given (yield)", error.message
32
+ end
33
+
34
+ test "takes a block" do
35
+ encoder = RecordEncoder::Bert.new(dummy_class)
36
+ encoder.expects(:to_bert_internal).once.yields('result')
37
+ assert_nil encoder.to_bert {}
38
+ end
39
+
40
+ private
41
+
42
+ def dummy_class
43
+ Class.new do
44
+ def self.name
45
+ "Dummy"
46
+ end
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,74 @@
1
+ require 'test_helper'
2
+ require 'record_encoder'
3
+
4
+ class RecordEncoderTest < ActiveSupport::TestCase
5
+
6
+ test "dummy class does not define to_bert" do
7
+ assert_raises(NoMethodError) do
8
+ dummy_class.to_bert
9
+ end
10
+ end
11
+
12
+ test "dummy class + included module does not define to_bert" do
13
+ assert_raises(NoMethodError) do
14
+ dummy_class_with_included_module.to_bert
15
+ end
16
+ end
17
+
18
+ test "dummy class inheriting from ActiveRecord::Bert does not define to_bert" do
19
+ assert_raises(NoMethodError) do
20
+ dummy_class_inheriting_active_record.to_bert
21
+ end
22
+ end
23
+
24
+ test "dummy class inheriting from ActiveRecord::Bert + acts_as_record_encoder responds to to_bert" do
25
+ exception = assert_raises(LocalJumpError) do
26
+ dummy_class_with_acts_as.to_bert
27
+ end
28
+ assert_equal "no block given (yield)", exception.message
29
+ end
30
+
31
+ test "dummy class inheriting from ActiveRecord::Bert + acts_as_record_encoder responds to to_bert with block" do
32
+ RecordEncoder::Bert.any_instance.expects(:to_bert_internal).once.returns('result')
33
+ dummy_class_with_acts_as.to_bert {}
34
+ end
35
+
36
+ private
37
+
38
+ def dummy_class
39
+ Class.new do
40
+ def self.name
41
+ "Dummy"
42
+ end
43
+ end
44
+ end
45
+
46
+ def dummy_class_with_included_module
47
+ Class.new do
48
+ include RecordEncoder
49
+ def self.name
50
+ "DummyWithModule"
51
+ end
52
+ end
53
+ end
54
+
55
+ def dummy_class_inheriting_active_record
56
+ Class.new(ActiveRecord::Base) do
57
+ self.abstract_class = true
58
+ def self.name
59
+ "DummyAR"
60
+ end
61
+ end
62
+ end
63
+
64
+ def dummy_class_with_acts_as
65
+ Class.new(ActiveRecord::Base) do
66
+ self.abstract_class = true
67
+ acts_as_record_encoder
68
+ def self.name
69
+ "DummyActsAs"
70
+ end
71
+ end
72
+ end
73
+
74
+ end
@@ -0,0 +1,16 @@
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
+ require "rails/test_help"
7
+
8
+ Rails.backtrace_cleaner.remove_silencers!
9
+
10
+ # Load support files
11
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
12
+
13
+ # Load fixtures from the engine
14
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
15
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
16
+ end
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: record_encoder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tomasz Skorupa
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bert
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
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: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 4.1.8
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 4.1.8
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
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
+ - !ruby/object:Gem::Dependency
70
+ name: mocha
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description:
84
+ email:
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - MIT-LICENSE
90
+ - README.rdoc
91
+ - Rakefile
92
+ - lib/record_encoder.rb
93
+ - lib/record_encoder/bert.rb
94
+ - lib/record_encoder/version.rb
95
+ - lib/tasks/record_encoder_tasks.rake
96
+ - test/dummy/README.rdoc
97
+ - test/dummy/Rakefile
98
+ - test/dummy/app/assets/javascripts/application.js
99
+ - test/dummy/app/assets/stylesheets/application.css
100
+ - test/dummy/app/controllers/application_controller.rb
101
+ - test/dummy/app/helpers/application_helper.rb
102
+ - test/dummy/app/views/layouts/application.html.erb
103
+ - test/dummy/bin/bundle
104
+ - test/dummy/bin/rails
105
+ - test/dummy/bin/rake
106
+ - test/dummy/config.ru
107
+ - test/dummy/config/application.rb
108
+ - test/dummy/config/boot.rb
109
+ - test/dummy/config/database.yml
110
+ - test/dummy/config/environment.rb
111
+ - test/dummy/config/environments/development.rb
112
+ - test/dummy/config/environments/production.rb
113
+ - test/dummy/config/environments/test.rb
114
+ - test/dummy/config/initializers/assets.rb
115
+ - test/dummy/config/initializers/backtrace_silencers.rb
116
+ - test/dummy/config/initializers/cookies_serializer.rb
117
+ - test/dummy/config/initializers/filter_parameter_logging.rb
118
+ - test/dummy/config/initializers/inflections.rb
119
+ - test/dummy/config/initializers/mime_types.rb
120
+ - test/dummy/config/initializers/session_store.rb
121
+ - test/dummy/config/initializers/wrap_parameters.rb
122
+ - test/dummy/config/locales/en.yml
123
+ - test/dummy/config/routes.rb
124
+ - test/dummy/config/secrets.yml
125
+ - test/dummy/db/test.sqlite3
126
+ - test/dummy/log/test.log
127
+ - test/dummy/public/404.html
128
+ - test/dummy/public/422.html
129
+ - test/dummy/public/500.html
130
+ - test/dummy/public/favicon.ico
131
+ - test/record_encoder/bert_test.rb
132
+ - test/record_encoder_test.rb
133
+ - test/test_helper.rb
134
+ homepage:
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.1.3
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.3
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: RecordEncoder can be chained to an activerecord relation or a class and will
158
+ yield encoded representation
159
+ test_files:
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/views/layouts/application.html.erb
165
+ - test/dummy/bin/bundle
166
+ - test/dummy/bin/rails
167
+ - test/dummy/bin/rake
168
+ - test/dummy/config/application.rb
169
+ - test/dummy/config/boot.rb
170
+ - test/dummy/config/database.yml
171
+ - test/dummy/config/environment.rb
172
+ - test/dummy/config/environments/development.rb
173
+ - test/dummy/config/environments/production.rb
174
+ - test/dummy/config/environments/test.rb
175
+ - test/dummy/config/initializers/assets.rb
176
+ - test/dummy/config/initializers/backtrace_silencers.rb
177
+ - test/dummy/config/initializers/cookies_serializer.rb
178
+ - test/dummy/config/initializers/filter_parameter_logging.rb
179
+ - test/dummy/config/initializers/inflections.rb
180
+ - test/dummy/config/initializers/mime_types.rb
181
+ - test/dummy/config/initializers/session_store.rb
182
+ - test/dummy/config/initializers/wrap_parameters.rb
183
+ - test/dummy/config/locales/en.yml
184
+ - test/dummy/config/routes.rb
185
+ - test/dummy/config/secrets.yml
186
+ - test/dummy/config.ru
187
+ - test/dummy/db/test.sqlite3
188
+ - test/dummy/log/test.log
189
+ - test/dummy/public/404.html
190
+ - test/dummy/public/422.html
191
+ - test/dummy/public/500.html
192
+ - test/dummy/public/favicon.ico
193
+ - test/dummy/Rakefile
194
+ - test/dummy/README.rdoc
195
+ - test/record_encoder/bert_test.rb
196
+ - test/record_encoder_test.rb
197
+ - test/test_helper.rb