null_object_models 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 (58) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/lib/null_object_models.rb +6 -0
  5. data/lib/null_object_models/default.rb +14 -0
  6. data/lib/null_object_models/extension.rb +29 -0
  7. data/lib/null_object_models/null_class_delegator.rb +17 -0
  8. data/lib/null_object_models/version.rb +3 -0
  9. data/spec/dummy/README.rdoc +28 -0
  10. data/spec/dummy/Rakefile +6 -0
  11. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  12. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  13. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  14. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  15. data/spec/dummy/app/models/another_test_model.rb +5 -0
  16. data/spec/dummy/app/models/test_model.rb +5 -0
  17. data/spec/dummy/app/models/test_model_without_null.rb +2 -0
  18. data/spec/dummy/app/null_models/null_test_model.rb +2 -0
  19. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  20. data/spec/dummy/bin/bundle +3 -0
  21. data/spec/dummy/bin/rails +4 -0
  22. data/spec/dummy/bin/rake +4 -0
  23. data/spec/dummy/bin/setup +29 -0
  24. data/spec/dummy/config.ru +4 -0
  25. data/spec/dummy/config/application.rb +26 -0
  26. data/spec/dummy/config/boot.rb +5 -0
  27. data/spec/dummy/config/database.yml +12 -0
  28. data/spec/dummy/config/environment.rb +5 -0
  29. data/spec/dummy/config/environments/development.rb +41 -0
  30. data/spec/dummy/config/environments/production.rb +79 -0
  31. data/spec/dummy/config/environments/test.rb +42 -0
  32. data/spec/dummy/config/initializers/assets.rb +11 -0
  33. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  34. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  35. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  36. data/spec/dummy/config/initializers/inflections.rb +16 -0
  37. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  38. data/spec/dummy/config/initializers/session_store.rb +3 -0
  39. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  40. data/spec/dummy/config/locales/en.yml +23 -0
  41. data/spec/dummy/config/routes.rb +56 -0
  42. data/spec/dummy/config/secrets.yml +22 -0
  43. data/spec/dummy/db/migrate/20160226004548_create_test_models.rb +9 -0
  44. data/spec/dummy/db/schema.rb +22 -0
  45. data/spec/dummy/log/development.log +95 -0
  46. data/spec/dummy/log/test.log +307 -0
  47. data/spec/dummy/public/404.html +67 -0
  48. data/spec/dummy/public/422.html +67 -0
  49. data/spec/dummy/public/500.html +66 -0
  50. data/spec/dummy/public/favicon.ico +0 -0
  51. data/spec/dummy/test/fixtures/test_models.yml +7 -0
  52. data/spec/dummy/test/models/test_model_test.rb +7 -0
  53. data/spec/factories/test_model.rb +6 -0
  54. data/spec/null_test_model_spec.rb +12 -0
  55. data/spec/spec_helper.rb +12 -0
  56. data/spec/support/factory_girl.rb +3 -0
  57. data/spec/test_model_spec.rb +73 -0
  58. metadata +227 -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,7 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one:
4
+ name: MyString
5
+
6
+ two:
7
+ name: MyString
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class TestModelTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,6 @@
1
+ # This will guess the User class
2
+ FactoryGirl.define do
3
+ factory :test_model do
4
+ name "John"
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe NullTestModel do
4
+ it "delegates any missing class methods to the model's class it represents" do
5
+ expect(described_class.new(1, TestModel).class.some_class_method).to eq("Hello")
6
+ expect(described_class.new(1, AnotherTestModel).class.some_other_class_method).to eq("Heyyo")
7
+ end
8
+
9
+ it "has a NullClassDelegator as a class" do
10
+ expect(described_class.new(1, TestModel).class).to be_a(NullObjectModels::NullClassDelegator)
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ ENV["RAILS_ENV"] ||= "test"
2
+
3
+ require 'pry-byebug'
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require 'rspec/rails'
6
+
7
+ require 'factory_girl_rails'
8
+ require 'support/factory_girl'
9
+
10
+ RSpec.configure do |config|
11
+ config.use_transactional_fixtures = true
12
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryGirl::Syntax::Methods
3
+ end
@@ -0,0 +1,73 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe TestModel do
4
+ describe ".null_model" do
5
+ it "is the class with same name as the model and the prefix Null" do
6
+ expect(TestModel.null_model).to eq(NullTestModel)
7
+ end
8
+
9
+ it "is NullObjectModels::Default if a Null is not defined for the class" do
10
+ expect(TestModelWithoutNull.null_model).to eq(NullObjectModels::Default)
11
+ end
12
+ end
13
+
14
+ describe ".find_or_null" do
15
+ it "uses the model's default null model" do
16
+ instance = create(:test_model)
17
+ expect(described_class.find_or_null(instance.id)).to eq(instance)
18
+ end
19
+
20
+ it "uses a custom null model if one is passed in" do
21
+ class SomeotherNull < NullObjectModels::Default; end
22
+ expect(described_class.find_or_null(1, SomeotherNull)).to be_a(SomeotherNull)
23
+ end
24
+
25
+ describe "with one ID" do
26
+ it "returns the instance if found" do
27
+ instance = create(:test_model)
28
+ expect(described_class.find_or_null(instance.id)).to eq(instance)
29
+ end
30
+
31
+ it "returns a null object if not found" do
32
+ instance = described_class.find_or_null(6)
33
+ expect(instance).to be_a(NullTestModel)
34
+ end
35
+ end
36
+
37
+ describe "with multiple IDs" do
38
+ it "returns the instances if all are found" do
39
+ ids = create_list(:test_model, 5).map(&:id)
40
+ instances = described_class.find_or_null(ids)
41
+
42
+ instances.each do |instance|
43
+ expect(instance).to be_a(described_class)
44
+ end
45
+ end
46
+
47
+ it "returns null objects if none are found" do
48
+ instances = described_class.find_or_null([17, 33, 68, 100, 171])
49
+
50
+ instances.each do |instance|
51
+ expect(instance).to be_a(NullTestModel)
52
+ end
53
+ end
54
+
55
+ it "returns instances or null objects in the same order they were given if it is a mix" do
56
+ (1..3).each do |id|
57
+ create(:test_model, id: id)
58
+ end
59
+ instances = described_class.find_or_null([1, 33, 2, 3, 171])
60
+
61
+ [1, 33, 2, 3, 171].each_with_index do |id, index|
62
+ expect(instances[index].id).to eq(id)
63
+ end
64
+
65
+ expect(instances[0]).to be_a(described_class)
66
+ expect(instances[1]).to be_a(NullTestModel)
67
+ expect(instances[2]).to be_a(described_class)
68
+ expect(instances[3]).to be_a(described_class)
69
+ expect(instances[4]).to be_a(NullTestModel)
70
+ end
71
+ end
72
+ end
73
+ end
metadata ADDED
@@ -0,0 +1,227 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: null_object_models
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Szczepanski
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-26 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: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: factory_girl_rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pg
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.19'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.19'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.4'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.4'
83
+ description: |
84
+ Null Object Models is a gem that provides finder method(s) extensions to ActiveRecord::Base
85
+ objects. These finder methods will return either default or defined null objects if an object
86
+ is not found with the given ID(s). This is very useful for preventing nil errors.
87
+
88
+ I recommend using this gem if you have dangling records and have yet to implement some sort
89
+ of soft destroy implementation.
90
+ email:
91
+ - andrew.szczepanski@thescore.com
92
+ executables: []
93
+ extensions: []
94
+ extra_rdoc_files: []
95
+ files:
96
+ - MIT-LICENSE
97
+ - Rakefile
98
+ - lib/null_object_models.rb
99
+ - lib/null_object_models/default.rb
100
+ - lib/null_object_models/extension.rb
101
+ - lib/null_object_models/null_class_delegator.rb
102
+ - lib/null_object_models/version.rb
103
+ - spec/dummy/README.rdoc
104
+ - spec/dummy/Rakefile
105
+ - spec/dummy/app/assets/javascripts/application.js
106
+ - spec/dummy/app/assets/stylesheets/application.css
107
+ - spec/dummy/app/controllers/application_controller.rb
108
+ - spec/dummy/app/helpers/application_helper.rb
109
+ - spec/dummy/app/models/another_test_model.rb
110
+ - spec/dummy/app/models/test_model.rb
111
+ - spec/dummy/app/models/test_model_without_null.rb
112
+ - spec/dummy/app/null_models/null_test_model.rb
113
+ - spec/dummy/app/views/layouts/application.html.erb
114
+ - spec/dummy/bin/bundle
115
+ - spec/dummy/bin/rails
116
+ - spec/dummy/bin/rake
117
+ - spec/dummy/bin/setup
118
+ - spec/dummy/config.ru
119
+ - spec/dummy/config/application.rb
120
+ - spec/dummy/config/boot.rb
121
+ - spec/dummy/config/database.yml
122
+ - spec/dummy/config/environment.rb
123
+ - spec/dummy/config/environments/development.rb
124
+ - spec/dummy/config/environments/production.rb
125
+ - spec/dummy/config/environments/test.rb
126
+ - spec/dummy/config/initializers/assets.rb
127
+ - spec/dummy/config/initializers/backtrace_silencers.rb
128
+ - spec/dummy/config/initializers/cookies_serializer.rb
129
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
130
+ - spec/dummy/config/initializers/inflections.rb
131
+ - spec/dummy/config/initializers/mime_types.rb
132
+ - spec/dummy/config/initializers/session_store.rb
133
+ - spec/dummy/config/initializers/wrap_parameters.rb
134
+ - spec/dummy/config/locales/en.yml
135
+ - spec/dummy/config/routes.rb
136
+ - spec/dummy/config/secrets.yml
137
+ - spec/dummy/db/migrate/20160226004548_create_test_models.rb
138
+ - spec/dummy/db/schema.rb
139
+ - spec/dummy/log/development.log
140
+ - spec/dummy/log/test.log
141
+ - spec/dummy/public/404.html
142
+ - spec/dummy/public/422.html
143
+ - spec/dummy/public/500.html
144
+ - spec/dummy/public/favicon.ico
145
+ - spec/dummy/test/fixtures/test_models.yml
146
+ - spec/dummy/test/models/test_model_test.rb
147
+ - spec/factories/test_model.rb
148
+ - spec/null_test_model_spec.rb
149
+ - spec/spec_helper.rb
150
+ - spec/support/factory_girl.rb
151
+ - spec/test_model_spec.rb
152
+ homepage: https://www.github.com/skipants/null_object_models
153
+ licenses:
154
+ - MIT
155
+ metadata: {}
156
+ post_install_message:
157
+ rdoc_options: []
158
+ require_paths:
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ required_rubygems_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ requirements: []
171
+ rubyforge_project:
172
+ rubygems_version: 2.5.1
173
+ signing_key:
174
+ specification_version: 4
175
+ summary: ActiveRecord extension for handling dangling records with the null object
176
+ pattern
177
+ test_files:
178
+ - spec/dummy/app/assets/javascripts/application.js
179
+ - spec/dummy/app/assets/stylesheets/application.css
180
+ - spec/dummy/app/controllers/application_controller.rb
181
+ - spec/dummy/app/helpers/application_helper.rb
182
+ - spec/dummy/app/models/another_test_model.rb
183
+ - spec/dummy/app/models/test_model.rb
184
+ - spec/dummy/app/models/test_model_without_null.rb
185
+ - spec/dummy/app/null_models/null_test_model.rb
186
+ - spec/dummy/app/views/layouts/application.html.erb
187
+ - spec/dummy/bin/bundle
188
+ - spec/dummy/bin/rails
189
+ - spec/dummy/bin/rake
190
+ - spec/dummy/bin/setup
191
+ - spec/dummy/config/application.rb
192
+ - spec/dummy/config/boot.rb
193
+ - spec/dummy/config/database.yml
194
+ - spec/dummy/config/environment.rb
195
+ - spec/dummy/config/environments/development.rb
196
+ - spec/dummy/config/environments/production.rb
197
+ - spec/dummy/config/environments/test.rb
198
+ - spec/dummy/config/initializers/assets.rb
199
+ - spec/dummy/config/initializers/backtrace_silencers.rb
200
+ - spec/dummy/config/initializers/cookies_serializer.rb
201
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
202
+ - spec/dummy/config/initializers/inflections.rb
203
+ - spec/dummy/config/initializers/mime_types.rb
204
+ - spec/dummy/config/initializers/session_store.rb
205
+ - spec/dummy/config/initializers/wrap_parameters.rb
206
+ - spec/dummy/config/locales/en.yml
207
+ - spec/dummy/config/routes.rb
208
+ - spec/dummy/config/secrets.yml
209
+ - spec/dummy/config.ru
210
+ - spec/dummy/db/migrate/20160226004548_create_test_models.rb
211
+ - spec/dummy/db/schema.rb
212
+ - spec/dummy/log/development.log
213
+ - spec/dummy/log/test.log
214
+ - spec/dummy/public/404.html
215
+ - spec/dummy/public/422.html
216
+ - spec/dummy/public/500.html
217
+ - spec/dummy/public/favicon.ico
218
+ - spec/dummy/Rakefile
219
+ - spec/dummy/README.rdoc
220
+ - spec/dummy/test/fixtures/test_models.yml
221
+ - spec/dummy/test/models/test_model_test.rb
222
+ - spec/factories/test_model.rb
223
+ - spec/null_test_model_spec.rb
224
+ - spec/spec_helper.rb
225
+ - spec/support/factory_girl.rb
226
+ - spec/test_model_spec.rb
227
+ has_rdoc: