has_default_association 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 (58) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/lib/has_default_association.rb +63 -0
  5. data/lib/has_default_association/version.rb +3 -0
  6. data/lib/tasks/has_default_association_tasks.rake +4 -0
  7. data/test/dummy/README.rdoc +28 -0
  8. data/test/dummy/Rakefile +6 -0
  9. data/test/dummy/app/assets/javascripts/application.js +13 -0
  10. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  11. data/test/dummy/app/controllers/application_controller.rb +5 -0
  12. data/test/dummy/app/helpers/application_helper.rb +2 -0
  13. data/test/dummy/app/views/layouts/application.html.erb +13 -0
  14. data/test/dummy/bin/bundle +3 -0
  15. data/test/dummy/bin/rails +4 -0
  16. data/test/dummy/bin/rake +4 -0
  17. data/test/dummy/bin/setup +29 -0
  18. data/test/dummy/config.ru +4 -0
  19. data/test/dummy/config/application.rb +32 -0
  20. data/test/dummy/config/boot.rb +5 -0
  21. data/test/dummy/config/database.yml +25 -0
  22. data/test/dummy/config/environment.rb +5 -0
  23. data/test/dummy/config/environments/development.rb +41 -0
  24. data/test/dummy/config/environments/production.rb +79 -0
  25. data/test/dummy/config/environments/test.rb +42 -0
  26. data/test/dummy/config/initializers/assets.rb +11 -0
  27. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  28. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  29. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  30. data/test/dummy/config/initializers/inflections.rb +16 -0
  31. data/test/dummy/config/initializers/mime_types.rb +4 -0
  32. data/test/dummy/config/initializers/session_store.rb +3 -0
  33. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  34. data/test/dummy/config/locales/en.yml +23 -0
  35. data/test/dummy/config/routes.rb +56 -0
  36. data/test/dummy/config/secrets.yml +22 -0
  37. data/test/dummy/db/development.sqlite3 +0 -0
  38. data/test/dummy/db/migrate/20150815045153_create_books.rb +10 -0
  39. data/test/dummy/db/migrate/20150815045203_create_people.rb +9 -0
  40. data/test/dummy/db/migrate/20150815045223_create_summaries.rb +10 -0
  41. data/test/dummy/db/migrate/20150816140025_create_reviews.rb +11 -0
  42. data/test/dummy/db/schema.rb +44 -0
  43. data/test/dummy/db/test.sqlite3 +0 -0
  44. data/test/dummy/log/development.log +67 -0
  45. data/test/dummy/log/test.log +924 -0
  46. data/test/dummy/public/404.html +67 -0
  47. data/test/dummy/public/422.html +67 -0
  48. data/test/dummy/public/500.html +66 -0
  49. data/test/dummy/public/favicon.ico +0 -0
  50. data/test/dummy/test/fixtures/books.yml +7 -0
  51. data/test/dummy/test/fixtures/people.yml +7 -0
  52. data/test/dummy/test/fixtures/summaries.yml +7 -0
  53. data/test/dummy/test/models/book_test.rb +7 -0
  54. data/test/dummy/test/models/person_test.rb +7 -0
  55. data/test/dummy/test/models/summary_test.rb +7 -0
  56. data/test/has_default_association_test.rb +127 -0
  57. data/test/test_helper.rb +18 -0
  58. metadata +193 -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
+ # 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
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one:
4
+ text: MyString
5
+
6
+ two:
7
+ text: MyString
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class BookTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class PersonTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class SummaryTest < ActiveSupport::TestCase
4
+ # test "the truth" do
5
+ # assert true
6
+ # end
7
+ end
@@ -0,0 +1,127 @@
1
+ require_relative './test_helper'
2
+
3
+ # The required models are defined inline here for clarity.
4
+
5
+ class Book < ActiveRecord::Base
6
+ include HasDefaultAssociation
7
+
8
+ belongs_to :author, class_name: "Person"
9
+ has_default_association(:author)
10
+
11
+ has_one :summary
12
+ has_default_association(:summary, :eager => true) do |book|
13
+ Summary.new(text: "'#{book.name}' is just swell!")
14
+ end
15
+
16
+ has_many :reviews
17
+ end
18
+
19
+ class Summary < ActiveRecord::Base
20
+ include HasDefaultAssociation
21
+
22
+ belongs_to :book
23
+ has_default_association :book
24
+ end
25
+
26
+ class Review < ActiveRecord::Base
27
+ include HasDefaultAssociation
28
+
29
+ belongs_to :book
30
+ belongs_to :person
31
+
32
+ has_default_associations :book, :person
33
+ end
34
+
35
+ class Person < ActiveRecord::Base
36
+ DEFAULT_BOOK_NAMES = ["First", "Second", "Third"]
37
+ include HasDefaultAssociation
38
+
39
+ has_many :books
40
+ has_default_association :books do |person|
41
+ DEFAULT_BOOK_NAMES.map{|n| Book.new(name: n) }
42
+ end
43
+ end
44
+
45
+
46
+
47
+ class HasDefaultAssociationTest < ActiveSupport::TestCase
48
+
49
+ test "builds default models" do
50
+ book = Summary.new.book
51
+
52
+ assert_kind_of Book, book
53
+ assert !book.persisted?
54
+ end
55
+
56
+ test "infers correct model class" do
57
+ author = Book.new.author
58
+
59
+ assert_kind_of Person, author
60
+ end
61
+
62
+ test "builds default models with custom blocks" do
63
+ name = "Writing Plugins For Fun and the Other Thing"
64
+ book = Book.new(name: name)
65
+
66
+ summary = book.summary
67
+
68
+ assert_kind_of Summary, summary
69
+ assert_includes summary.text, name
70
+ end
71
+
72
+ test "does not overwrite newly set associations" do
73
+ book = Book.new
74
+ author = Person.new
75
+ book.author = author
76
+
77
+ assert book.author === author
78
+ end
79
+
80
+ test "loads saved associations" do
81
+ author = Person.create!
82
+ book = Book.create!(author: author)
83
+
84
+ assert book.author === author
85
+ end
86
+
87
+ test "supports one to many relations with custom block" do
88
+ person = Person.new
89
+
90
+ default_book_names = person.books.map{|b| b.name}
91
+ assert_equal Person::DEFAULT_BOOK_NAMES, default_book_names
92
+ end
93
+
94
+ test "multiple relations can be declared at once" do
95
+ review = Review.new
96
+
97
+ book = review.book
98
+ person = review.person
99
+
100
+ assert_kind_of Book, book
101
+ assert_kind_of Person, person
102
+ end
103
+
104
+ test "eagerly instantiates associations" do
105
+ book = Book.new
106
+
107
+ summary_loaded = book.association(:summary).loaded?
108
+ assert summary_loaded
109
+ end
110
+
111
+ test "eager associations are saved" do
112
+ book = Book.create!
113
+ summary = book.summary
114
+
115
+ assert summary.persisted?
116
+ end
117
+
118
+ test "does not eagerly instantiate relations on saved records" do
119
+ # Create and then find the book so that a fresh object is used.
120
+ book = Book.create!
121
+ book = Book.find(book.id)
122
+
123
+ summary_loaded = book.association(:summary).loaded?
124
+ assert !summary_loaded
125
+ end
126
+
127
+ end
@@ -0,0 +1,18 @@
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
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
9
+ # to be shown.
10
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ end
metadata ADDED
@@ -0,0 +1,193 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: has_default_association
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Adam Sanderson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-16 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.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
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: pry
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
+ description:
56
+ email:
57
+ - netghost@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - MIT-LICENSE
63
+ - Rakefile
64
+ - lib/has_default_association.rb
65
+ - lib/has_default_association/version.rb
66
+ - lib/tasks/has_default_association_tasks.rake
67
+ - test/dummy/README.rdoc
68
+ - test/dummy/Rakefile
69
+ - test/dummy/app/assets/javascripts/application.js
70
+ - test/dummy/app/assets/stylesheets/application.css
71
+ - test/dummy/app/controllers/application_controller.rb
72
+ - test/dummy/app/helpers/application_helper.rb
73
+ - test/dummy/app/views/layouts/application.html.erb
74
+ - test/dummy/bin/bundle
75
+ - test/dummy/bin/rails
76
+ - test/dummy/bin/rake
77
+ - test/dummy/bin/setup
78
+ - test/dummy/config.ru
79
+ - test/dummy/config/application.rb
80
+ - test/dummy/config/boot.rb
81
+ - test/dummy/config/database.yml
82
+ - test/dummy/config/environment.rb
83
+ - test/dummy/config/environments/development.rb
84
+ - test/dummy/config/environments/production.rb
85
+ - test/dummy/config/environments/test.rb
86
+ - test/dummy/config/initializers/assets.rb
87
+ - test/dummy/config/initializers/backtrace_silencers.rb
88
+ - test/dummy/config/initializers/cookies_serializer.rb
89
+ - test/dummy/config/initializers/filter_parameter_logging.rb
90
+ - test/dummy/config/initializers/inflections.rb
91
+ - test/dummy/config/initializers/mime_types.rb
92
+ - test/dummy/config/initializers/session_store.rb
93
+ - test/dummy/config/initializers/wrap_parameters.rb
94
+ - test/dummy/config/locales/en.yml
95
+ - test/dummy/config/routes.rb
96
+ - test/dummy/config/secrets.yml
97
+ - test/dummy/db/development.sqlite3
98
+ - test/dummy/db/migrate/20150815045153_create_books.rb
99
+ - test/dummy/db/migrate/20150815045203_create_people.rb
100
+ - test/dummy/db/migrate/20150815045223_create_summaries.rb
101
+ - test/dummy/db/migrate/20150816140025_create_reviews.rb
102
+ - test/dummy/db/schema.rb
103
+ - test/dummy/db/test.sqlite3
104
+ - test/dummy/log/development.log
105
+ - test/dummy/log/test.log
106
+ - test/dummy/public/404.html
107
+ - test/dummy/public/422.html
108
+ - test/dummy/public/500.html
109
+ - test/dummy/public/favicon.ico
110
+ - test/dummy/test/fixtures/books.yml
111
+ - test/dummy/test/fixtures/people.yml
112
+ - test/dummy/test/fixtures/summaries.yml
113
+ - test/dummy/test/models/book_test.rb
114
+ - test/dummy/test/models/person_test.rb
115
+ - test/dummy/test/models/summary_test.rb
116
+ - test/has_default_association_test.rb
117
+ - test/test_helper.rb
118
+ homepage: https://github.com/adamsanderson/has_default_association
119
+ licenses:
120
+ - MIT
121
+ metadata: {}
122
+ post_install_message:
123
+ rdoc_options: []
124
+ require_paths:
125
+ - lib
126
+ required_ruby_version: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ requirements: []
137
+ rubyforge_project:
138
+ rubygems_version: 2.4.5
139
+ signing_key:
140
+ specification_version: 4
141
+ summary: Provide default models for ActiveRecord associations
142
+ test_files:
143
+ - test/dummy/app/assets/javascripts/application.js
144
+ - test/dummy/app/assets/stylesheets/application.css
145
+ - test/dummy/app/controllers/application_controller.rb
146
+ - test/dummy/app/helpers/application_helper.rb
147
+ - test/dummy/app/views/layouts/application.html.erb
148
+ - test/dummy/bin/bundle
149
+ - test/dummy/bin/rails
150
+ - test/dummy/bin/rake
151
+ - test/dummy/bin/setup
152
+ - test/dummy/config/application.rb
153
+ - test/dummy/config/boot.rb
154
+ - test/dummy/config/database.yml
155
+ - test/dummy/config/environment.rb
156
+ - test/dummy/config/environments/development.rb
157
+ - test/dummy/config/environments/production.rb
158
+ - test/dummy/config/environments/test.rb
159
+ - test/dummy/config/initializers/assets.rb
160
+ - test/dummy/config/initializers/backtrace_silencers.rb
161
+ - test/dummy/config/initializers/cookies_serializer.rb
162
+ - test/dummy/config/initializers/filter_parameter_logging.rb
163
+ - test/dummy/config/initializers/inflections.rb
164
+ - test/dummy/config/initializers/mime_types.rb
165
+ - test/dummy/config/initializers/session_store.rb
166
+ - test/dummy/config/initializers/wrap_parameters.rb
167
+ - test/dummy/config/locales/en.yml
168
+ - test/dummy/config/routes.rb
169
+ - test/dummy/config/secrets.yml
170
+ - test/dummy/config.ru
171
+ - test/dummy/db/development.sqlite3
172
+ - test/dummy/db/migrate/20150815045153_create_books.rb
173
+ - test/dummy/db/migrate/20150815045203_create_people.rb
174
+ - test/dummy/db/migrate/20150815045223_create_summaries.rb
175
+ - test/dummy/db/migrate/20150816140025_create_reviews.rb
176
+ - test/dummy/db/schema.rb
177
+ - test/dummy/db/test.sqlite3
178
+ - test/dummy/log/development.log
179
+ - test/dummy/log/test.log
180
+ - test/dummy/public/404.html
181
+ - test/dummy/public/422.html
182
+ - test/dummy/public/500.html
183
+ - test/dummy/public/favicon.ico
184
+ - test/dummy/Rakefile
185
+ - test/dummy/README.rdoc
186
+ - test/dummy/test/fixtures/books.yml
187
+ - test/dummy/test/fixtures/people.yml
188
+ - test/dummy/test/fixtures/summaries.yml
189
+ - test/dummy/test/models/book_test.rb
190
+ - test/dummy/test/models/person_test.rb
191
+ - test/dummy/test/models/summary_test.rb
192
+ - test/has_default_association_test.rb
193
+ - test/test_helper.rb