record_formatter 0.0.2

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 (51) 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_formatter.rb +32 -0
  6. data/lib/record_formatter/base.rb +43 -0
  7. data/lib/record_formatter/column.rb +27 -0
  8. data/lib/record_formatter/model.rb +22 -0
  9. data/lib/record_formatter/version.rb +3 -0
  10. data/lib/tasks/record_formatter_tasks.rake +4 -0
  11. data/test/dummy/README.rdoc +28 -0
  12. data/test/dummy/Rakefile +6 -0
  13. data/test/dummy/app/assets/javascripts/application.js +13 -0
  14. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/test/dummy/app/controllers/application_controller.rb +5 -0
  16. data/test/dummy/app/helpers/application_helper.rb +2 -0
  17. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  18. data/test/dummy/bin/bundle +3 -0
  19. data/test/dummy/bin/rails +4 -0
  20. data/test/dummy/bin/rake +4 -0
  21. data/test/dummy/config.ru +4 -0
  22. data/test/dummy/config/application.rb +23 -0
  23. data/test/dummy/config/boot.rb +5 -0
  24. data/test/dummy/config/database.yml +25 -0
  25. data/test/dummy/config/environment.rb +5 -0
  26. data/test/dummy/config/environments/development.rb +37 -0
  27. data/test/dummy/config/environments/production.rb +78 -0
  28. data/test/dummy/config/environments/test.rb +39 -0
  29. data/test/dummy/config/initializers/assets.rb +8 -0
  30. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  31. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  32. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  33. data/test/dummy/config/initializers/inflections.rb +16 -0
  34. data/test/dummy/config/initializers/mime_types.rb +4 -0
  35. data/test/dummy/config/initializers/session_store.rb +3 -0
  36. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  37. data/test/dummy/config/locales/en.yml +23 -0
  38. data/test/dummy/config/routes.rb +56 -0
  39. data/test/dummy/config/secrets.yml +22 -0
  40. data/test/dummy/db/test.sqlite3 +0 -0
  41. data/test/dummy/log/test.log +935 -0
  42. data/test/dummy/public/404.html +67 -0
  43. data/test/dummy/public/422.html +67 -0
  44. data/test/dummy/public/500.html +66 -0
  45. data/test/dummy/public/favicon.ico +0 -0
  46. data/test/record_formatter/base_test.rb +54 -0
  47. data/test/record_formatter/column_test.rb +16 -0
  48. data/test/record_formatter/model_test.rb +31 -0
  49. data/test/record_formatter_test.rb +67 -0
  50. data/test/test_helper.rb +16 -0
  51. metadata +189 -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,54 @@
1
+ require 'test_helper'
2
+ require 'record_formatter/base'
3
+
4
+ class RecordFormatterBaseTest < ActiveSupport::TestCase
5
+
6
+ test "deployable_records with defaults" do
7
+ klass = dummy_class
8
+ klass.expects( RecordFormatter::Base::DEFAULT_SCOPE ).once
9
+ klass.expects(:select).with( all_of([]) ).once.returns(klass)
10
+
11
+ formatter = RecordFormatter::Base.new klass
12
+ formatter.deployable_records
13
+ end
14
+
15
+ test "deployable_records with plucked columns" do
16
+ klass = dummy_class
17
+ klass.expects( RecordFormatter::Base::DEFAULT_SCOPE ).once
18
+ klass.expects(:select).with( all_of(["id AS id"]) ).once.returns(klass)
19
+ formatter = RecordFormatter::Base.new klass
20
+
21
+ formatter.columns :id
22
+ formatter.deployable_records
23
+ end
24
+
25
+ test "deployable_records with aliased columns" do
26
+ klass = dummy_class
27
+ klass.expects( RecordFormatter::Base::DEFAULT_SCOPE ).once
28
+ klass.expects(:select).with( all_of(["id AS foo"]) ).once.returns(klass)
29
+ formatter = RecordFormatter::Base.new klass
30
+
31
+ formatter.columns :id, alias: :foo
32
+ formatter.deployable_records
33
+ end
34
+
35
+ test "deployable_records with custom scope" do
36
+ klass = dummy_class
37
+ klass.expects(:foo).once
38
+ klass.expects(:select).with( all_of([]) ).once.returns(klass)
39
+
40
+ formatter = RecordFormatter::Base.new klass, scope: :foo
41
+ formatter.deployable_records
42
+ end
43
+
44
+ private
45
+
46
+ def dummy_class
47
+ Class.new(ActiveRecord::Base) do
48
+ def self.name
49
+ "Dummy"
50
+ end
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+ require 'record_formatter/column'
3
+
4
+ class RecordFormatterColumnTest < ActiveSupport::TestCase
5
+
6
+ test "initialize record-formatter-column" do
7
+ formatter = RecordFormatter::Column.new :foo
8
+ assert_equal "foo AS foo", formatter.for_select
9
+ end
10
+
11
+ test "initialize record-formatter-column with alias" do
12
+ formatter = RecordFormatter::Column.new :foo, alias: :bar
13
+ assert_equal "foo AS bar", formatter.for_select
14
+ end
15
+
16
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+ require 'record_formatter/model'
3
+
4
+ class RecordFormatterModelTest < ActiveSupport::TestCase
5
+
6
+ test "initialize record-formatter-model" do
7
+ formatter = RecordFormatter::Model.new
8
+ assert_equal [], formatter.columns
9
+ end
10
+
11
+ test "add new column" do
12
+ formatter = RecordFormatter::Model.new
13
+ assert_equal [], formatter.columns
14
+ formatter.stubs(:add_column_internal).once.returns(:foo)
15
+ assert_equal [:foo], formatter.add_column(:foo)
16
+ assert_equal [:foo], formatter.columns
17
+ end
18
+
19
+ test "add existing column" do
20
+ formatter = RecordFormatter::Model.new
21
+ assert_equal [], formatter.columns
22
+ formatter.stubs(:add_column_internal).twice.returns(:foo)
23
+ # First insert
24
+ assert_equal [:foo], formatter.add_column(:foo)
25
+ assert_equal [:foo], formatter.columns
26
+ # Second insert
27
+ assert_equal [:foo], formatter.add_column(:foo)
28
+ assert_equal [:foo], formatter.columns
29
+ end
30
+
31
+ end
@@ -0,0 +1,67 @@
1
+ require 'test_helper'
2
+ require 'record_formatter'
3
+
4
+ class RecordFormatterTest < ActiveSupport::TestCase
5
+
6
+ test "dummy class does not define deployable" do
7
+ assert_raises(NoMethodError) do
8
+ dummy_class.deployable
9
+ end
10
+ end
11
+
12
+ test "dummy class + included module does not define deployable" do
13
+ assert_raises(NoMethodError) do
14
+ dummy_class_with_included_module.deployable
15
+ end
16
+ end
17
+
18
+ test "dummy class inheriting from ActiveRecord::Base does not define deployable" do
19
+ assert_raises(NoMethodError) do
20
+ dummy_class_inheriting_active_record.deployable
21
+ end
22
+ end
23
+
24
+ test "dummy class inheriting from ActiveRecord::Base + acts_as_record_formatter responds to deployable scope" do
25
+ RecordFormatter::Base.any_instance.expects(:deployable_records).once.returns('result')
26
+ dummy_class_with_acts_as.deployable
27
+ end
28
+
29
+ private
30
+
31
+ def dummy_class
32
+ Class.new do
33
+ def self.name
34
+ "Dummy"
35
+ end
36
+ end
37
+ end
38
+
39
+ def dummy_class_with_included_module
40
+ Class.new do
41
+ include RecordFormatter
42
+ def self.name
43
+ "DummyWithModule"
44
+ end
45
+ end
46
+ end
47
+
48
+ def dummy_class_inheriting_active_record
49
+ Class.new(ActiveRecord::Base) do
50
+ self.abstract_class = true
51
+ def self.name
52
+ "DummyAR"
53
+ end
54
+ end
55
+ end
56
+
57
+ def dummy_class_with_acts_as
58
+ Class.new(ActiveRecord::Base) do
59
+ self.abstract_class = true
60
+ acts_as_record_formatter
61
+ def self.name
62
+ "DummyActsAs"
63
+ end
64
+ end
65
+ end
66
+
67
+ 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,189 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: record_formatter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
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: 4.1.6
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.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 4.1.8
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 4.1.8
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
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: mocha
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:
70
+ email:
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - MIT-LICENSE
76
+ - README.rdoc
77
+ - Rakefile
78
+ - lib/record_formatter.rb
79
+ - lib/record_formatter/base.rb
80
+ - lib/record_formatter/column.rb
81
+ - lib/record_formatter/model.rb
82
+ - lib/record_formatter/version.rb
83
+ - lib/tasks/record_formatter_tasks.rake
84
+ - test/dummy/README.rdoc
85
+ - test/dummy/Rakefile
86
+ - test/dummy/app/assets/javascripts/application.js
87
+ - test/dummy/app/assets/stylesheets/application.css
88
+ - test/dummy/app/controllers/application_controller.rb
89
+ - test/dummy/app/helpers/application_helper.rb
90
+ - test/dummy/app/views/layouts/application.html.erb
91
+ - test/dummy/bin/bundle
92
+ - test/dummy/bin/rails
93
+ - test/dummy/bin/rake
94
+ - test/dummy/config.ru
95
+ - test/dummy/config/application.rb
96
+ - test/dummy/config/boot.rb
97
+ - test/dummy/config/database.yml
98
+ - test/dummy/config/environment.rb
99
+ - test/dummy/config/environments/development.rb
100
+ - test/dummy/config/environments/production.rb
101
+ - test/dummy/config/environments/test.rb
102
+ - test/dummy/config/initializers/assets.rb
103
+ - test/dummy/config/initializers/backtrace_silencers.rb
104
+ - test/dummy/config/initializers/cookies_serializer.rb
105
+ - test/dummy/config/initializers/filter_parameter_logging.rb
106
+ - test/dummy/config/initializers/inflections.rb
107
+ - test/dummy/config/initializers/mime_types.rb
108
+ - test/dummy/config/initializers/session_store.rb
109
+ - test/dummy/config/initializers/wrap_parameters.rb
110
+ - test/dummy/config/locales/en.yml
111
+ - test/dummy/config/routes.rb
112
+ - test/dummy/config/secrets.yml
113
+ - test/dummy/db/test.sqlite3
114
+ - test/dummy/log/test.log
115
+ - test/dummy/public/404.html
116
+ - test/dummy/public/422.html
117
+ - test/dummy/public/500.html
118
+ - test/dummy/public/favicon.ico
119
+ - test/record_formatter/base_test.rb
120
+ - test/record_formatter/column_test.rb
121
+ - test/record_formatter/model_test.rb
122
+ - test/record_formatter_test.rb
123
+ - test/test_helper.rb
124
+ homepage:
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 2.1.3
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.4.3
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: RecordFormatter plucks columns from records given a scope, aliased if needed
148
+ and returns an activerecord relation
149
+ test_files:
150
+ - test/dummy/app/assets/javascripts/application.js
151
+ - test/dummy/app/assets/stylesheets/application.css
152
+ - test/dummy/app/controllers/application_controller.rb
153
+ - test/dummy/app/helpers/application_helper.rb
154
+ - test/dummy/app/views/layouts/application.html.erb
155
+ - test/dummy/bin/bundle
156
+ - test/dummy/bin/rails
157
+ - test/dummy/bin/rake
158
+ - test/dummy/config/application.rb
159
+ - test/dummy/config/boot.rb
160
+ - test/dummy/config/database.yml
161
+ - test/dummy/config/environment.rb
162
+ - test/dummy/config/environments/development.rb
163
+ - test/dummy/config/environments/production.rb
164
+ - test/dummy/config/environments/test.rb
165
+ - test/dummy/config/initializers/assets.rb
166
+ - test/dummy/config/initializers/backtrace_silencers.rb
167
+ - test/dummy/config/initializers/cookies_serializer.rb
168
+ - test/dummy/config/initializers/filter_parameter_logging.rb
169
+ - test/dummy/config/initializers/inflections.rb
170
+ - test/dummy/config/initializers/mime_types.rb
171
+ - test/dummy/config/initializers/session_store.rb
172
+ - test/dummy/config/initializers/wrap_parameters.rb
173
+ - test/dummy/config/locales/en.yml
174
+ - test/dummy/config/routes.rb
175
+ - test/dummy/config/secrets.yml
176
+ - test/dummy/config.ru
177
+ - test/dummy/db/test.sqlite3
178
+ - test/dummy/log/test.log
179
+ - test/dummy/public/404.html
180
+ - test/dummy/public/422.html
181
+ - test/dummy/public/500.html
182
+ - test/dummy/public/favicon.ico
183
+ - test/dummy/Rakefile
184
+ - test/dummy/README.rdoc
185
+ - test/record_formatter/base_test.rb
186
+ - test/record_formatter/column_test.rb
187
+ - test/record_formatter/model_test.rb
188
+ - test/record_formatter_test.rb
189
+ - test/test_helper.rb