francois-shoulda 2.0.5.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 (104) hide show
  1. data/CONTRIBUTION_GUIDELINES.rdoc +12 -0
  2. data/MIT-LICENSE +22 -0
  3. data/README.rdoc +119 -0
  4. data/Rakefile +72 -0
  5. data/bin/convert_to_should_syntax +42 -0
  6. data/lib/shoulda.rb +17 -0
  7. data/lib/shoulda/action_mailer.rb +10 -0
  8. data/lib/shoulda/action_mailer/assertions.rb +39 -0
  9. data/lib/shoulda/active_record.rb +12 -0
  10. data/lib/shoulda/active_record/assertions.rb +96 -0
  11. data/lib/shoulda/active_record/macros.rb +752 -0
  12. data/lib/shoulda/assertions.rb +49 -0
  13. data/lib/shoulda/context.rb +306 -0
  14. data/lib/shoulda/controller.rb +30 -0
  15. data/lib/shoulda/controller/formats/html.rb +201 -0
  16. data/lib/shoulda/controller/formats/xml.rb +170 -0
  17. data/lib/shoulda/controller/helpers.rb +64 -0
  18. data/lib/shoulda/controller/macros.rb +316 -0
  19. data/lib/shoulda/controller/resource_options.rb +236 -0
  20. data/lib/shoulda/helpers.rb +10 -0
  21. data/lib/shoulda/macros.rb +74 -0
  22. data/lib/shoulda/private_helpers.rb +22 -0
  23. data/lib/shoulda/proc_extensions.rb +14 -0
  24. data/lib/shoulda/rails.rb +19 -0
  25. data/lib/shoulda/tasks.rb +3 -0
  26. data/lib/shoulda/tasks/list_tests.rake +24 -0
  27. data/lib/shoulda/tasks/yaml_to_shoulda.rake +28 -0
  28. data/rails/init.rb +1 -0
  29. data/test/README +36 -0
  30. data/test/fail_macros.rb +34 -0
  31. data/test/fixtures/addresses.yml +3 -0
  32. data/test/fixtures/friendships.yml +0 -0
  33. data/test/fixtures/posts.yml +5 -0
  34. data/test/fixtures/products.yml +0 -0
  35. data/test/fixtures/taggings.yml +0 -0
  36. data/test/fixtures/tags.yml +11 -0
  37. data/test/fixtures/users.yml +6 -0
  38. data/test/functional/posts_controller_test.rb +105 -0
  39. data/test/functional/users_controller_test.rb +38 -0
  40. data/test/other/context_test.rb +145 -0
  41. data/test/other/convert_to_should_syntax_test.rb +63 -0
  42. data/test/other/helpers_test.rb +183 -0
  43. data/test/other/private_helpers_test.rb +34 -0
  44. data/test/other/should_test.rb +266 -0
  45. data/test/rails_root/app/controllers/application.rb +25 -0
  46. data/test/rails_root/app/controllers/posts_controller.rb +85 -0
  47. data/test/rails_root/app/controllers/users_controller.rb +84 -0
  48. data/test/rails_root/app/helpers/application_helper.rb +3 -0
  49. data/test/rails_root/app/helpers/posts_helper.rb +2 -0
  50. data/test/rails_root/app/helpers/users_helper.rb +2 -0
  51. data/test/rails_root/app/models/address.rb +7 -0
  52. data/test/rails_root/app/models/dog.rb +5 -0
  53. data/test/rails_root/app/models/flea.rb +3 -0
  54. data/test/rails_root/app/models/friendship.rb +4 -0
  55. data/test/rails_root/app/models/post.rb +12 -0
  56. data/test/rails_root/app/models/product.rb +12 -0
  57. data/test/rails_root/app/models/tag.rb +8 -0
  58. data/test/rails_root/app/models/tagging.rb +4 -0
  59. data/test/rails_root/app/models/user.rb +28 -0
  60. data/test/rails_root/app/views/layouts/posts.rhtml +17 -0
  61. data/test/rails_root/app/views/layouts/users.rhtml +17 -0
  62. data/test/rails_root/app/views/layouts/wide.html.erb +1 -0
  63. data/test/rails_root/app/views/posts/edit.rhtml +27 -0
  64. data/test/rails_root/app/views/posts/index.rhtml +25 -0
  65. data/test/rails_root/app/views/posts/new.rhtml +26 -0
  66. data/test/rails_root/app/views/posts/show.rhtml +18 -0
  67. data/test/rails_root/app/views/users/edit.rhtml +22 -0
  68. data/test/rails_root/app/views/users/index.rhtml +22 -0
  69. data/test/rails_root/app/views/users/new.rhtml +21 -0
  70. data/test/rails_root/app/views/users/show.rhtml +13 -0
  71. data/test/rails_root/config/boot.rb +109 -0
  72. data/test/rails_root/config/database.yml +4 -0
  73. data/test/rails_root/config/environment.rb +14 -0
  74. data/test/rails_root/config/environments/sqlite3.rb +0 -0
  75. data/test/rails_root/config/initializers/new_rails_defaults.rb +15 -0
  76. data/test/rails_root/config/initializers/shoulda.rb +8 -0
  77. data/test/rails_root/config/routes.rb +6 -0
  78. data/test/rails_root/db/migrate/001_create_users.rb +18 -0
  79. data/test/rails_root/db/migrate/002_create_posts.rb +13 -0
  80. data/test/rails_root/db/migrate/003_create_taggings.rb +12 -0
  81. data/test/rails_root/db/migrate/004_create_tags.rb +11 -0
  82. data/test/rails_root/db/migrate/005_create_dogs.rb +12 -0
  83. data/test/rails_root/db/migrate/006_create_addresses.rb +14 -0
  84. data/test/rails_root/db/migrate/007_create_fleas.rb +11 -0
  85. data/test/rails_root/db/migrate/008_create_dogs_fleas.rb +12 -0
  86. data/test/rails_root/db/migrate/009_create_products.rb +17 -0
  87. data/test/rails_root/db/migrate/010_create_friendships.rb +14 -0
  88. data/test/rails_root/db/schema.rb +0 -0
  89. data/test/rails_root/public/404.html +30 -0
  90. data/test/rails_root/public/422.html +30 -0
  91. data/test/rails_root/public/500.html +30 -0
  92. data/test/rails_root/script/console +3 -0
  93. data/test/rails_root/script/generate +3 -0
  94. data/test/test_helper.rb +33 -0
  95. data/test/unit/address_test.rb +32 -0
  96. data/test/unit/dog_test.rb +7 -0
  97. data/test/unit/flea_test.rb +6 -0
  98. data/test/unit/friendship_test.rb +6 -0
  99. data/test/unit/post_test.rb +15 -0
  100. data/test/unit/product_test.rb +27 -0
  101. data/test/unit/tag_test.rb +15 -0
  102. data/test/unit/tagging_test.rb +6 -0
  103. data/test/unit/user_test.rb +56 -0
  104. metadata +197 -0
@@ -0,0 +1,30 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+
6
+ <head>
7
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
8
+ <title>The change you wanted was rejected (422)</title>
9
+ <style type="text/css">
10
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
11
+ div.dialog {
12
+ width: 25em;
13
+ padding: 0 4em;
14
+ margin: 4em auto 0 auto;
15
+ border: 1px solid #ccc;
16
+ border-right-color: #999;
17
+ border-bottom-color: #999;
18
+ }
19
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
20
+ </style>
21
+ </head>
22
+
23
+ <body>
24
+ <!-- This file lives in public/422.html -->
25
+ <div class="dialog">
26
+ <h1>The change you wanted was rejected.</h1>
27
+ <p>Maybe you tried to change something you didn't have access to.</p>
28
+ </div>
29
+ </body>
30
+ </html>
@@ -0,0 +1,30 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+
6
+ <head>
7
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
8
+ <title>We're sorry, but something went wrong (500)</title>
9
+ <style type="text/css">
10
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
11
+ div.dialog {
12
+ width: 25em;
13
+ padding: 0 4em;
14
+ margin: 4em auto 0 auto;
15
+ border: 1px solid #ccc;
16
+ border-right-color: #999;
17
+ border-bottom-color: #999;
18
+ }
19
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
20
+ </style>
21
+ </head>
22
+
23
+ <body>
24
+ <!-- This file lives in public/500.html -->
25
+ <div class="dialog">
26
+ <h1>We're sorry, but something went wrong.</h1>
27
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
28
+ </div>
29
+ </body>
30
+ </html>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
@@ -0,0 +1,33 @@
1
+ require 'fileutils'
2
+ # Load the environment
3
+ ENV['RAILS_ENV'] = 'sqlite3'
4
+
5
+ rails_root = File.dirname(__FILE__) + '/rails_root'
6
+
7
+ require "#{rails_root}/config/environment.rb"
8
+
9
+ # Load the testing framework
10
+ require 'test_help'
11
+ silence_warnings { RAILS_ENV = ENV['RAILS_ENV'] }
12
+
13
+ # Run the migrations
14
+ ActiveRecord::Migration.verbose = false
15
+ ActiveRecord::Migrator.migrate("#{RAILS_ROOT}/db/migrate")
16
+
17
+ # Setup the fixtures path
18
+ Test::Unit::TestCase.fixture_path = File.join(File.dirname(__FILE__), "fixtures")
19
+
20
+ class Test::Unit::TestCase #:nodoc:
21
+ def create_fixtures(*table_names)
22
+ if block_given?
23
+ Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names) { yield }
24
+ else
25
+ Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names)
26
+ end
27
+ end
28
+
29
+ self.use_transactional_fixtures = false
30
+ self.use_instantiated_fixtures = false
31
+ end
32
+
33
+ require 'test/fail_macros'
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class AddressTest < Test::Unit::TestCase
4
+ fixtures :all
5
+
6
+ should_belong_to :addressable
7
+ should_require_unique_attributes :title, :scoped_to => [:addressable_id, :addressable_type]
8
+ should_ensure_length_at_least :zip, 5
9
+ should_only_allow_numeric_values_for :zip
10
+
11
+ context "A non-numeric zip" do
12
+ setup do
13
+ @address = Address.new(:zip => "bc")
14
+ end
15
+
16
+ should "be invalid" do
17
+ assert_invalid @address
18
+ end
19
+ end
20
+
21
+ context "A numeric zip" do
22
+ setup do
23
+ @address = Address.new(:zip => "90210")
24
+ end
25
+
26
+ should_fail do
27
+ should "NOT be invalid" do
28
+ assert_invalid @address
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class DogTest < Test::Unit::TestCase
4
+ should_belong_to :user
5
+ should_belong_to :address
6
+ should_have_and_belong_to_many :fleas
7
+ end
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class FleaTest < Test::Unit::TestCase
4
+ should_have_and_belong_to_many :dogs
5
+ end
6
+
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class FriendshipTest < ActiveSupport::TestCase
4
+ should_belong_to :user
5
+ should_belong_to :friend
6
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PostTest < Test::Unit::TestCase
4
+ fixtures :all
5
+
6
+ should_belong_to :user
7
+ should_belong_to :owner
8
+ should_have_many :tags, :through => :taggings
9
+ should_have_many :through_tags, :through => :taggings
10
+
11
+ should_require_unique_attributes :title
12
+ should_require_attributes :body, :message => /wtf/
13
+ should_require_attributes :title
14
+ should_only_allow_numeric_values_for :user_id
15
+ end
@@ -0,0 +1,27 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ProductTest < ActiveSupport::TestCase
4
+ context "An intangible product" do
5
+ setup do
6
+ @product = Product.new(:tangible => false)
7
+ end
8
+
9
+ should_require_attributes :title
10
+ should_not_allow_values_for :size, "22"
11
+ should_allow_values_for :size, "22kb"
12
+ should_ensure_value_in_range :price, 0..99
13
+ end
14
+
15
+ context "A tangible product" do
16
+ setup do
17
+ @product = Product.new(:tangible => true)
18
+ end
19
+
20
+ should_require_attributes :price
21
+ should_ensure_value_in_range :price, 1..9999
22
+ should_ensure_value_in_range :weight, 1..100
23
+ should_not_allow_values_for :size, "22", "10x15"
24
+ should_allow_values_for :size, "12x12x1"
25
+ should_ensure_length_in_range :size, 5..20
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TagTest < Test::Unit::TestCase
4
+ should_have_many :taggings, :dependent => :destroy
5
+ should_have_many :posts
6
+
7
+ should_ensure_length_at_least :name, 2
8
+
9
+ should_protect_attributes :secret
10
+
11
+ should_fail do
12
+ should_protect_attributes :name
13
+ should_have_valid_fixtures
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TaggingTest < Test::Unit::TestCase
4
+ should_belong_to :post
5
+ should_belong_to :tag
6
+ end
@@ -0,0 +1,56 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ fixtures :all
5
+
6
+ should_have_valid_fixtures
7
+
8
+ should_have_many :posts
9
+ should_have_many :dogs
10
+
11
+ should_have_many :friendships
12
+ should_have_many :friends
13
+
14
+ should_have_one :address
15
+ should_have_one :address, :dependent => :destroy
16
+
17
+ should_have_indices :email, :name, [:email, :name]
18
+ should_have_index :age
19
+
20
+ should_have_named_scope :old, :conditions => "age > 50"
21
+ should_have_named_scope :eighteen, :conditions => { :age => 18 }
22
+
23
+ should_have_named_scope 'recent(5)', :limit => 5
24
+ should_have_named_scope 'recent(1)', :limit => 1
25
+ should_have_named_scope 'recent_via_method(7)', :limit => 7
26
+
27
+ context "when given an instance variable" do
28
+ setup { @count = 2 }
29
+ should_have_named_scope 'recent(@count)', :limit => 2
30
+ end
31
+
32
+ should_not_allow_values_for :email, "blah", "b lah"
33
+ should_allow_values_for :email, "a@b.com", "asdf@asdf.com"
34
+ should_ensure_length_in_range :email, 1..100
35
+ should_ensure_value_in_range :age, 1..100
36
+ should_protect_attributes :password
37
+ should_allow_attributes :name, :email
38
+ should_have_class_methods :find, :destroy
39
+ should_have_instance_methods :email, :age, :email=, :valid?
40
+ should_have_db_columns :name, :email, :age
41
+ should_have_db_column :id, :type => "integer", :primary => true
42
+ should_have_db_column :email, :type => "string", :default => nil, :precision => nil, :limit => 255,
43
+ :null => true, :primary => false, :scale => nil, :sql_type => 'varchar(255)'
44
+ should_require_acceptance_of :eula
45
+ should_require_unique_attributes :email, :scoped_to => :name
46
+
47
+ should_ensure_length_is :ssn, 9, :message => "Social Security Number is not the right length"
48
+ should_only_allow_numeric_values_for :ssn
49
+
50
+ should_have_readonly_attributes :name
51
+
52
+ should_fail do
53
+ should_protect_attributes :name, :age
54
+ should_allow_attributes :password
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: francois-shoulda
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.5.1
5
+ platform: ruby
6
+ authors:
7
+ - Tammer Saleh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-15 00:00:00 -07:00
13
+ default_executable: convert_to_should_syntax
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
23
+ version:
24
+ description:
25
+ email: tsaleh@thoughtbot.com
26
+ executables:
27
+ - convert_to_should_syntax
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - README.rdoc
32
+ - CONTRIBUTION_GUIDELINES.rdoc
33
+ files:
34
+ - CONTRIBUTION_GUIDELINES.rdoc
35
+ - MIT-LICENSE
36
+ - Rakefile
37
+ - README.rdoc
38
+ - bin/convert_to_should_syntax
39
+ - lib/shoulda
40
+ - lib/shoulda/action_mailer
41
+ - lib/shoulda/action_mailer/assertions.rb
42
+ - lib/shoulda/action_mailer.rb
43
+ - lib/shoulda/active_record
44
+ - lib/shoulda/active_record/assertions.rb
45
+ - lib/shoulda/active_record/macros.rb
46
+ - lib/shoulda/active_record.rb
47
+ - lib/shoulda/assertions.rb
48
+ - lib/shoulda/context.rb
49
+ - lib/shoulda/controller
50
+ - lib/shoulda/controller/formats
51
+ - lib/shoulda/controller/formats/html.rb
52
+ - lib/shoulda/controller/formats/xml.rb
53
+ - lib/shoulda/controller/helpers.rb
54
+ - lib/shoulda/controller/macros.rb
55
+ - lib/shoulda/controller/resource_options.rb
56
+ - lib/shoulda/controller.rb
57
+ - lib/shoulda/helpers.rb
58
+ - lib/shoulda/macros.rb
59
+ - lib/shoulda/private_helpers.rb
60
+ - lib/shoulda/proc_extensions.rb
61
+ - lib/shoulda/rails.rb
62
+ - lib/shoulda/tasks
63
+ - lib/shoulda/tasks/list_tests.rake
64
+ - lib/shoulda/tasks/yaml_to_shoulda.rake
65
+ - lib/shoulda/tasks.rb
66
+ - lib/shoulda.rb
67
+ - rails/init.rb
68
+ - test/fail_macros.rb
69
+ - test/fixtures
70
+ - test/fixtures/addresses.yml
71
+ - test/fixtures/friendships.yml
72
+ - test/fixtures/posts.yml
73
+ - test/fixtures/products.yml
74
+ - test/fixtures/taggings.yml
75
+ - test/fixtures/tags.yml
76
+ - test/fixtures/users.yml
77
+ - test/functional
78
+ - test/functional/posts_controller_test.rb
79
+ - test/functional/users_controller_test.rb
80
+ - test/other
81
+ - test/other/context_test.rb
82
+ - test/other/convert_to_should_syntax_test.rb
83
+ - test/other/helpers_test.rb
84
+ - test/other/private_helpers_test.rb
85
+ - test/other/should_test.rb
86
+ - test/rails_root
87
+ - test/rails_root/app
88
+ - test/rails_root/app/controllers
89
+ - test/rails_root/app/controllers/application.rb
90
+ - test/rails_root/app/controllers/posts_controller.rb
91
+ - test/rails_root/app/controllers/users_controller.rb
92
+ - test/rails_root/app/helpers
93
+ - test/rails_root/app/helpers/application_helper.rb
94
+ - test/rails_root/app/helpers/posts_helper.rb
95
+ - test/rails_root/app/helpers/users_helper.rb
96
+ - test/rails_root/app/models
97
+ - test/rails_root/app/models/address.rb
98
+ - test/rails_root/app/models/dog.rb
99
+ - test/rails_root/app/models/flea.rb
100
+ - test/rails_root/app/models/friendship.rb
101
+ - test/rails_root/app/models/post.rb
102
+ - test/rails_root/app/models/product.rb
103
+ - test/rails_root/app/models/tag.rb
104
+ - test/rails_root/app/models/tagging.rb
105
+ - test/rails_root/app/models/user.rb
106
+ - test/rails_root/app/views
107
+ - test/rails_root/app/views/layouts
108
+ - test/rails_root/app/views/layouts/posts.rhtml
109
+ - test/rails_root/app/views/layouts/users.rhtml
110
+ - test/rails_root/app/views/layouts/wide.html.erb
111
+ - test/rails_root/app/views/posts
112
+ - test/rails_root/app/views/posts/edit.rhtml
113
+ - test/rails_root/app/views/posts/index.rhtml
114
+ - test/rails_root/app/views/posts/new.rhtml
115
+ - test/rails_root/app/views/posts/show.rhtml
116
+ - test/rails_root/app/views/users
117
+ - test/rails_root/app/views/users/edit.rhtml
118
+ - test/rails_root/app/views/users/index.rhtml
119
+ - test/rails_root/app/views/users/new.rhtml
120
+ - test/rails_root/app/views/users/show.rhtml
121
+ - test/rails_root/config
122
+ - test/rails_root/config/boot.rb
123
+ - test/rails_root/config/database.yml
124
+ - test/rails_root/config/environment.rb
125
+ - test/rails_root/config/environments
126
+ - test/rails_root/config/environments/sqlite3.rb
127
+ - test/rails_root/config/initializers
128
+ - test/rails_root/config/initializers/new_rails_defaults.rb
129
+ - test/rails_root/config/initializers/shoulda.rb
130
+ - test/rails_root/config/routes.rb
131
+ - test/rails_root/db
132
+ - test/rails_root/db/migrate
133
+ - test/rails_root/db/migrate/001_create_users.rb
134
+ - test/rails_root/db/migrate/002_create_posts.rb
135
+ - test/rails_root/db/migrate/003_create_taggings.rb
136
+ - test/rails_root/db/migrate/004_create_tags.rb
137
+ - test/rails_root/db/migrate/005_create_dogs.rb
138
+ - test/rails_root/db/migrate/006_create_addresses.rb
139
+ - test/rails_root/db/migrate/007_create_fleas.rb
140
+ - test/rails_root/db/migrate/008_create_dogs_fleas.rb
141
+ - test/rails_root/db/migrate/009_create_products.rb
142
+ - test/rails_root/db/migrate/010_create_friendships.rb
143
+ - test/rails_root/db/schema.rb
144
+ - test/rails_root/log
145
+ - test/rails_root/log/sqlite3.log
146
+ - test/rails_root/public
147
+ - test/rails_root/public/404.html
148
+ - test/rails_root/public/422.html
149
+ - test/rails_root/public/500.html
150
+ - test/rails_root/script
151
+ - test/rails_root/script/console
152
+ - test/rails_root/script/generate
153
+ - test/rails_root/vendor
154
+ - test/rails_root/vendor/plugins
155
+ - test/README
156
+ - test/test_helper.rb
157
+ - test/unit
158
+ - test/unit/address_test.rb
159
+ - test/unit/dog_test.rb
160
+ - test/unit/flea_test.rb
161
+ - test/unit/friendship_test.rb
162
+ - test/unit/post_test.rb
163
+ - test/unit/product_test.rb
164
+ - test/unit/tag_test.rb
165
+ - test/unit/tagging_test.rb
166
+ - test/unit/user_test.rb
167
+ has_rdoc: true
168
+ homepage: http://thoughtbot.com/projects/shoulda
169
+ post_install_message:
170
+ rdoc_options:
171
+ - --line-numbers
172
+ - --inline-source
173
+ - --main
174
+ - README.rdoc
175
+ require_paths:
176
+ - lib
177
+ required_ruby_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: "0"
182
+ version:
183
+ required_rubygems_version: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: "0"
188
+ version:
189
+ requirements: []
190
+
191
+ rubyforge_project: shoulda
192
+ rubygems_version: 1.2.0
193
+ signing_key:
194
+ specification_version: 2
195
+ summary: Making tests easy on the fingers and eyes
196
+ test_files: []
197
+