pacecar 1.5.2 → 1.5.3
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.
- data/.gitignore +6 -0
- data/.travis.yml +4 -0
- data/Appraisals +22 -0
- data/Gemfile +1 -7
- data/Gemfile.lock +129 -0
- data/README.md +33 -33
- data/Rakefile +2 -19
- data/gemfiles/rails-3.0.11-database-mysql.gemfile +8 -0
- data/gemfiles/rails-3.0.11-database-mysql.gemfile.lock +134 -0
- data/gemfiles/rails-3.0.11-database-mysql2.gemfile +8 -0
- data/gemfiles/rails-3.0.11-database-mysql2.gemfile.lock +134 -0
- data/gemfiles/rails-3.0.11-database-pg.gemfile +8 -0
- data/gemfiles/rails-3.0.11-database-pg.gemfile.lock +134 -0
- data/gemfiles/rails-3.0.11-database-sqlite3-ruby.gemfile +8 -0
- data/gemfiles/rails-3.0.11-database-sqlite3-ruby.gemfile.lock +136 -0
- data/gemfiles/rails-3.0.11-database-sqlite3.gemfile +8 -0
- data/gemfiles/rails-3.0.11-database-sqlite3.gemfile.lock +134 -0
- data/gemfiles/rails-3.1.3-database-mysql.gemfile +8 -0
- data/gemfiles/rails-3.1.3-database-mysql.gemfile.lock +144 -0
- data/gemfiles/rails-3.1.3-database-mysql2.gemfile +8 -0
- data/gemfiles/rails-3.1.3-database-mysql2.gemfile.lock +144 -0
- data/gemfiles/rails-3.1.3-database-pg.gemfile +8 -0
- data/gemfiles/rails-3.1.3-database-pg.gemfile.lock +144 -0
- data/gemfiles/rails-3.1.3-database-sqlite3-ruby.gemfile +8 -0
- data/gemfiles/rails-3.1.3-database-sqlite3-ruby.gemfile.lock +146 -0
- data/gemfiles/rails-3.1.3-database-sqlite3.gemfile +8 -0
- data/gemfiles/rails-3.1.3-database-sqlite3.gemfile.lock +144 -0
- data/lib/pacecar.rb +1 -0
- data/lib/pacecar/helpers.rb +1 -1
- data/lib/pacecar/version.rb +3 -0
- data/pacecar.gemspec +25 -0
- data/spec/associations_spec.rb +32 -0
- data/spec/boolean_spec.rb +30 -0
- data/spec/datetime_spec.rb +92 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/article.rb +5 -0
- data/spec/dummy/app/models/comment.rb +5 -0
- data/spec/dummy/app/models/mammal.rb +7 -0
- data/spec/dummy/app/models/post.rb +14 -0
- data/spec/dummy/app/models/user.rb +14 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +45 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +51 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +26 -0
- data/spec/dummy/config/environments/production.rb +49 -0
- data/spec/dummy/config/environments/test.rb +35 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/db/migrate/20100419201348_create_schema.rb +37 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/javascripts/application.js +2 -0
- data/spec/dummy/public/javascripts/controls.js +965 -0
- data/spec/dummy/public/javascripts/dragdrop.js +974 -0
- data/spec/dummy/public/javascripts/effects.js +1123 -0
- data/spec/dummy/public/javascripts/prototype.js +6001 -0
- data/spec/dummy/public/javascripts/rails.js +191 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/duration_spec.rb +22 -0
- data/spec/factories.rb +26 -0
- data/spec/helpers_spec.rb +49 -0
- data/spec/integration/navigation_spec.rb +9 -0
- data/spec/limit_spec.rb +25 -0
- data/spec/numeric_spec.rb +43 -0
- data/spec/order_spec.rb +22 -0
- data/spec/pacecar_spec.rb +7 -0
- data/spec/polymorph_spec.rb +18 -0
- data/spec/presence_spec.rb +23 -0
- data/spec/ranking_spec.rb +63 -0
- data/spec/search_spec.rb +63 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/state_spec.rb +69 -0
- metadata +202 -10
@@ -0,0 +1,146 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/mjankowski/Development/opensource/pacecar
|
3
|
+
specs:
|
4
|
+
pacecar (1.5.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
actionmailer (3.1.3)
|
10
|
+
actionpack (= 3.1.3)
|
11
|
+
mail (~> 2.3.0)
|
12
|
+
actionpack (3.1.3)
|
13
|
+
activemodel (= 3.1.3)
|
14
|
+
activesupport (= 3.1.3)
|
15
|
+
builder (~> 3.0.0)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
i18n (~> 0.6)
|
18
|
+
rack (~> 1.3.5)
|
19
|
+
rack-cache (~> 1.1)
|
20
|
+
rack-mount (~> 0.8.2)
|
21
|
+
rack-test (~> 0.6.1)
|
22
|
+
sprockets (~> 2.0.3)
|
23
|
+
activemodel (3.1.3)
|
24
|
+
activesupport (= 3.1.3)
|
25
|
+
builder (~> 3.0.0)
|
26
|
+
i18n (~> 0.6)
|
27
|
+
activerecord (3.1.3)
|
28
|
+
activemodel (= 3.1.3)
|
29
|
+
activesupport (= 3.1.3)
|
30
|
+
arel (~> 2.2.1)
|
31
|
+
tzinfo (~> 0.3.29)
|
32
|
+
activeresource (3.1.3)
|
33
|
+
activemodel (= 3.1.3)
|
34
|
+
activesupport (= 3.1.3)
|
35
|
+
activesupport (3.1.3)
|
36
|
+
multi_json (~> 1.0)
|
37
|
+
appraisal (0.4.0)
|
38
|
+
bundler
|
39
|
+
rake
|
40
|
+
arel (2.2.1)
|
41
|
+
builder (3.0.0)
|
42
|
+
capybara (1.1.2)
|
43
|
+
mime-types (>= 1.16)
|
44
|
+
nokogiri (>= 1.3.3)
|
45
|
+
rack (>= 1.0.0)
|
46
|
+
rack-test (>= 0.5.4)
|
47
|
+
selenium-webdriver (~> 2.0)
|
48
|
+
xpath (~> 0.1.4)
|
49
|
+
childprocess (0.2.6)
|
50
|
+
ffi (~> 1.0.6)
|
51
|
+
diff-lcs (1.1.3)
|
52
|
+
erubis (2.7.0)
|
53
|
+
factory_girl (2.3.2)
|
54
|
+
activesupport
|
55
|
+
factory_girl_rails (1.4.0)
|
56
|
+
factory_girl (~> 2.3.0)
|
57
|
+
railties (>= 3.0.0)
|
58
|
+
ffi (1.0.11)
|
59
|
+
hike (1.2.1)
|
60
|
+
i18n (0.6.0)
|
61
|
+
json (1.6.4)
|
62
|
+
mail (2.3.0)
|
63
|
+
i18n (>= 0.4.0)
|
64
|
+
mime-types (~> 1.16)
|
65
|
+
treetop (~> 1.4.8)
|
66
|
+
metaclass (0.0.1)
|
67
|
+
mime-types (1.17.2)
|
68
|
+
mocha (0.10.0)
|
69
|
+
metaclass (~> 0.0.1)
|
70
|
+
multi_json (1.0.4)
|
71
|
+
nokogiri (1.5.0)
|
72
|
+
polyglot (0.3.3)
|
73
|
+
rack (1.3.6)
|
74
|
+
rack-cache (1.1)
|
75
|
+
rack (>= 0.4)
|
76
|
+
rack-mount (0.8.3)
|
77
|
+
rack (>= 1.0.0)
|
78
|
+
rack-ssl (1.3.2)
|
79
|
+
rack
|
80
|
+
rack-test (0.6.1)
|
81
|
+
rack (>= 1.0)
|
82
|
+
rails (3.1.3)
|
83
|
+
actionmailer (= 3.1.3)
|
84
|
+
actionpack (= 3.1.3)
|
85
|
+
activerecord (= 3.1.3)
|
86
|
+
activeresource (= 3.1.3)
|
87
|
+
activesupport (= 3.1.3)
|
88
|
+
bundler (~> 1.0)
|
89
|
+
railties (= 3.1.3)
|
90
|
+
railties (3.1.3)
|
91
|
+
actionpack (= 3.1.3)
|
92
|
+
activesupport (= 3.1.3)
|
93
|
+
rack-ssl (~> 1.3.2)
|
94
|
+
rake (>= 0.8.7)
|
95
|
+
rdoc (~> 3.4)
|
96
|
+
thor (~> 0.14.6)
|
97
|
+
rake (0.9.2.2)
|
98
|
+
rdoc (3.12)
|
99
|
+
json (~> 1.4)
|
100
|
+
rspec (2.8.0)
|
101
|
+
rspec-core (~> 2.8.0)
|
102
|
+
rspec-expectations (~> 2.8.0)
|
103
|
+
rspec-mocks (~> 2.8.0)
|
104
|
+
rspec-core (2.8.0)
|
105
|
+
rspec-expectations (2.8.0)
|
106
|
+
diff-lcs (~> 1.1.2)
|
107
|
+
rspec-mocks (2.8.0)
|
108
|
+
rspec-rails (2.8.1)
|
109
|
+
actionpack (>= 3.0)
|
110
|
+
activesupport (>= 3.0)
|
111
|
+
railties (>= 3.0)
|
112
|
+
rspec (~> 2.8.0)
|
113
|
+
rubyzip (0.9.5)
|
114
|
+
selenium-webdriver (2.16.0)
|
115
|
+
childprocess (>= 0.2.5)
|
116
|
+
ffi (~> 1.0.9)
|
117
|
+
multi_json (~> 1.0.4)
|
118
|
+
rubyzip
|
119
|
+
sprockets (2.0.3)
|
120
|
+
hike (~> 1.2)
|
121
|
+
rack (~> 1.0)
|
122
|
+
tilt (~> 1.1, != 1.3.0)
|
123
|
+
sqlite3 (1.3.5)
|
124
|
+
sqlite3-ruby (1.3.3)
|
125
|
+
sqlite3 (>= 1.3.3)
|
126
|
+
thor (0.14.6)
|
127
|
+
tilt (1.3.3)
|
128
|
+
treetop (1.4.10)
|
129
|
+
polyglot
|
130
|
+
polyglot (>= 0.3.1)
|
131
|
+
tzinfo (0.3.31)
|
132
|
+
xpath (0.1.4)
|
133
|
+
nokogiri (~> 1.3)
|
134
|
+
|
135
|
+
PLATFORMS
|
136
|
+
ruby
|
137
|
+
|
138
|
+
DEPENDENCIES
|
139
|
+
appraisal (~> 0.4)
|
140
|
+
capybara (>= 0.4.0)
|
141
|
+
factory_girl_rails
|
142
|
+
mocha
|
143
|
+
pacecar!
|
144
|
+
rails (= 3.1.3)
|
145
|
+
rspec-rails (>= 2.4.0)
|
146
|
+
sqlite3-ruby
|
@@ -0,0 +1,144 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/mjankowski/Development/opensource/pacecar
|
3
|
+
specs:
|
4
|
+
pacecar (1.5.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
actionmailer (3.1.3)
|
10
|
+
actionpack (= 3.1.3)
|
11
|
+
mail (~> 2.3.0)
|
12
|
+
actionpack (3.1.3)
|
13
|
+
activemodel (= 3.1.3)
|
14
|
+
activesupport (= 3.1.3)
|
15
|
+
builder (~> 3.0.0)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
i18n (~> 0.6)
|
18
|
+
rack (~> 1.3.5)
|
19
|
+
rack-cache (~> 1.1)
|
20
|
+
rack-mount (~> 0.8.2)
|
21
|
+
rack-test (~> 0.6.1)
|
22
|
+
sprockets (~> 2.0.3)
|
23
|
+
activemodel (3.1.3)
|
24
|
+
activesupport (= 3.1.3)
|
25
|
+
builder (~> 3.0.0)
|
26
|
+
i18n (~> 0.6)
|
27
|
+
activerecord (3.1.3)
|
28
|
+
activemodel (= 3.1.3)
|
29
|
+
activesupport (= 3.1.3)
|
30
|
+
arel (~> 2.2.1)
|
31
|
+
tzinfo (~> 0.3.29)
|
32
|
+
activeresource (3.1.3)
|
33
|
+
activemodel (= 3.1.3)
|
34
|
+
activesupport (= 3.1.3)
|
35
|
+
activesupport (3.1.3)
|
36
|
+
multi_json (~> 1.0)
|
37
|
+
appraisal (0.4.0)
|
38
|
+
bundler
|
39
|
+
rake
|
40
|
+
arel (2.2.1)
|
41
|
+
builder (3.0.0)
|
42
|
+
capybara (1.1.2)
|
43
|
+
mime-types (>= 1.16)
|
44
|
+
nokogiri (>= 1.3.3)
|
45
|
+
rack (>= 1.0.0)
|
46
|
+
rack-test (>= 0.5.4)
|
47
|
+
selenium-webdriver (~> 2.0)
|
48
|
+
xpath (~> 0.1.4)
|
49
|
+
childprocess (0.2.6)
|
50
|
+
ffi (~> 1.0.6)
|
51
|
+
diff-lcs (1.1.3)
|
52
|
+
erubis (2.7.0)
|
53
|
+
factory_girl (2.3.2)
|
54
|
+
activesupport
|
55
|
+
factory_girl_rails (1.4.0)
|
56
|
+
factory_girl (~> 2.3.0)
|
57
|
+
railties (>= 3.0.0)
|
58
|
+
ffi (1.0.11)
|
59
|
+
hike (1.2.1)
|
60
|
+
i18n (0.6.0)
|
61
|
+
json (1.6.4)
|
62
|
+
mail (2.3.0)
|
63
|
+
i18n (>= 0.4.0)
|
64
|
+
mime-types (~> 1.16)
|
65
|
+
treetop (~> 1.4.8)
|
66
|
+
metaclass (0.0.1)
|
67
|
+
mime-types (1.17.2)
|
68
|
+
mocha (0.10.0)
|
69
|
+
metaclass (~> 0.0.1)
|
70
|
+
multi_json (1.0.4)
|
71
|
+
nokogiri (1.5.0)
|
72
|
+
polyglot (0.3.3)
|
73
|
+
rack (1.3.6)
|
74
|
+
rack-cache (1.1)
|
75
|
+
rack (>= 0.4)
|
76
|
+
rack-mount (0.8.3)
|
77
|
+
rack (>= 1.0.0)
|
78
|
+
rack-ssl (1.3.2)
|
79
|
+
rack
|
80
|
+
rack-test (0.6.1)
|
81
|
+
rack (>= 1.0)
|
82
|
+
rails (3.1.3)
|
83
|
+
actionmailer (= 3.1.3)
|
84
|
+
actionpack (= 3.1.3)
|
85
|
+
activerecord (= 3.1.3)
|
86
|
+
activeresource (= 3.1.3)
|
87
|
+
activesupport (= 3.1.3)
|
88
|
+
bundler (~> 1.0)
|
89
|
+
railties (= 3.1.3)
|
90
|
+
railties (3.1.3)
|
91
|
+
actionpack (= 3.1.3)
|
92
|
+
activesupport (= 3.1.3)
|
93
|
+
rack-ssl (~> 1.3.2)
|
94
|
+
rake (>= 0.8.7)
|
95
|
+
rdoc (~> 3.4)
|
96
|
+
thor (~> 0.14.6)
|
97
|
+
rake (0.9.2.2)
|
98
|
+
rdoc (3.12)
|
99
|
+
json (~> 1.4)
|
100
|
+
rspec (2.8.0)
|
101
|
+
rspec-core (~> 2.8.0)
|
102
|
+
rspec-expectations (~> 2.8.0)
|
103
|
+
rspec-mocks (~> 2.8.0)
|
104
|
+
rspec-core (2.8.0)
|
105
|
+
rspec-expectations (2.8.0)
|
106
|
+
diff-lcs (~> 1.1.2)
|
107
|
+
rspec-mocks (2.8.0)
|
108
|
+
rspec-rails (2.8.1)
|
109
|
+
actionpack (>= 3.0)
|
110
|
+
activesupport (>= 3.0)
|
111
|
+
railties (>= 3.0)
|
112
|
+
rspec (~> 2.8.0)
|
113
|
+
rubyzip (0.9.5)
|
114
|
+
selenium-webdriver (2.16.0)
|
115
|
+
childprocess (>= 0.2.5)
|
116
|
+
ffi (~> 1.0.9)
|
117
|
+
multi_json (~> 1.0.4)
|
118
|
+
rubyzip
|
119
|
+
sprockets (2.0.3)
|
120
|
+
hike (~> 1.2)
|
121
|
+
rack (~> 1.0)
|
122
|
+
tilt (~> 1.1, != 1.3.0)
|
123
|
+
sqlite3 (1.3.5)
|
124
|
+
thor (0.14.6)
|
125
|
+
tilt (1.3.3)
|
126
|
+
treetop (1.4.10)
|
127
|
+
polyglot
|
128
|
+
polyglot (>= 0.3.1)
|
129
|
+
tzinfo (0.3.31)
|
130
|
+
xpath (0.1.4)
|
131
|
+
nokogiri (~> 1.3)
|
132
|
+
|
133
|
+
PLATFORMS
|
134
|
+
ruby
|
135
|
+
|
136
|
+
DEPENDENCIES
|
137
|
+
appraisal (~> 0.4)
|
138
|
+
capybara (>= 0.4.0)
|
139
|
+
factory_girl_rails
|
140
|
+
mocha
|
141
|
+
pacecar!
|
142
|
+
rails (= 3.1.3)
|
143
|
+
rspec-rails (>= 2.4.0)
|
144
|
+
sqlite3
|
data/lib/pacecar.rb
CHANGED
data/lib/pacecar/helpers.rb
CHANGED
data/pacecar.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "pacecar/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'pacecar'
|
7
|
+
s.version = Pacecar::VERSION.dup
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Matt Jankowski', 'Gabe Berke-Williams', 'Chad Pytel', 'Ryan McGeary', 'Mike Burns', 'Ryan Sonnek', 'Thomas Dippel', 'Tristan Dunn']
|
10
|
+
s.email = 'support@thoughtbot.com'
|
11
|
+
s.homepage = 'http://github.com/thoughtbot/pacecar'
|
12
|
+
s.summary = 'Pacecar adds scope methods to ActiveRecord classes via database column introspection.'
|
13
|
+
s.description = 'Generated scopes for ActiveRecord classes.'
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_development_dependency("appraisal", "~> 0.4")
|
21
|
+
s.add_development_dependency("capybara", ">= 0.4.0")
|
22
|
+
s.add_development_dependency("mocha")
|
23
|
+
s.add_development_dependency("rspec-rails", ">= 2.4.0")
|
24
|
+
s.add_development_dependency("factory_girl_rails")
|
25
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Associations', 'has recent records' do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@comment_user = Factory :user
|
7
|
+
@post_user = Factory :user
|
8
|
+
@both_user = Factory :user
|
9
|
+
Factory :comment, :user => @comment_user, :created_at => 10.days.ago
|
10
|
+
Factory :comment, :user => @comment_user, :created_at => 3.days.ago
|
11
|
+
Factory :post, :owner => @post_user, :created_at => 10.days.ago
|
12
|
+
Factory :post, :owner => @post_user, :created_at => 3.days.ago
|
13
|
+
|
14
|
+
Factory :comment, :user => @both_user, :created_at => 10.days.ago
|
15
|
+
Factory :comment, :user => @both_user, :created_at => 3.days.ago
|
16
|
+
Factory :post, :owner => @both_user, :created_at => 10.days.ago
|
17
|
+
Factory :post, :owner => @both_user, :created_at => 3.days.ago
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should set the correct options for a recent methods for one association" do
|
21
|
+
User.recent_comments_since(5.days.ago).should == [@comment_user, @both_user]
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set the correct options for a recent methods combining associations with or" do
|
25
|
+
User.recent_posts_or_comments_since(5.days.ago).should == [@comment_user, @post_user, @both_user]
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should set the correct options for a recent methods combining associations with and" do
|
29
|
+
User.recent_posts_and_comments_since(5.days.ago).should == [@both_user]
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Boolean' do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@one = Factory :user, :admin => true
|
7
|
+
@two = Factory :user, :admin => true
|
8
|
+
@three = Factory :user, :admin => true
|
9
|
+
@four = Factory :user, :admin => false
|
10
|
+
@five = Factory :user, :admin => false
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should set the correct expected values for a boolean column method" do
|
14
|
+
User.admin.should == [@one, @two, @three]
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should set the correct expected values for a not_ boolean column method" do
|
18
|
+
User.not_admin.should == [@four, @five]
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return correct value for balance class method when true greater than false" do
|
22
|
+
User.admin_balance.should == 1
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return correct value for balance class method when true less than false" do
|
26
|
+
3.times { Factory :user, :admin => false }
|
27
|
+
User.admin_balance.should == -2
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Datetime' do
|
4
|
+
|
5
|
+
before do
|
6
|
+
date = DateTime.parse '2000-01-01'
|
7
|
+
@abe = Factory :user, :created_at => date, :rejected_at => date, :updated_at => date, :last_posted_on => date, :approved_at => date
|
8
|
+
|
9
|
+
date = DateTime.parse '2005-05-05'
|
10
|
+
@bob = Factory :user, :created_at => date, :rejected_at => date, :updated_at => date, :last_posted_on => date, :approved_at => date
|
11
|
+
|
12
|
+
date = DateTime.parse '2010-10-10'
|
13
|
+
@fox = Factory :user, :created_at => date, :rejected_at => date, :updated_at => date, :last_posted_on => date, :approved_at => date
|
14
|
+
end
|
15
|
+
|
16
|
+
[:created_at, :rejected_at, :updated_at, :last_posted_on, :approved_at].each do |column|
|
17
|
+
describe "before and after methods" do
|
18
|
+
it "should set the correct expected values for a #{column}_before method" do
|
19
|
+
date = DateTime.parse '2003-01-01'
|
20
|
+
User.send(:"#{column}_before", date).should == [@abe]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should set the correct expected values for a #{column}_after datetime column method" do
|
24
|
+
date = DateTime.parse '2007-01-01'
|
25
|
+
User.send(:"#{column}_after", date).should == [@fox]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "past and future methods" do
|
30
|
+
it "should set the correct expected values for a #{column}_in_past method without a zone default" do
|
31
|
+
Time.zone_default = nil
|
32
|
+
Time.zone_default.should == nil
|
33
|
+
now = DateTime.parse '2007-01-01'
|
34
|
+
User.stubs(:now).returns now
|
35
|
+
User.send(:"#{column}_in_past").should == [@abe, @bob]
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should set the correct expected values for a #{column}_in_future datetime column method without a zone default" do
|
39
|
+
Time.zone_default = nil
|
40
|
+
Time.zone_default.should == nil
|
41
|
+
now = DateTime.parse '2007-01-01'
|
42
|
+
User.stubs(:now).returns now
|
43
|
+
User.send(:"#{column}_in_future").should == [@fox]
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should set the correct expected values for a #{column}_in_past method given a zone_default" do
|
47
|
+
Time.zone_default = Time.respond_to?(:find_zone) ? Time.find_zone("UTC") : Time.__send__(:get_zone, "UTC")
|
48
|
+
now = DateTime.parse '2007-01-01'
|
49
|
+
Time.zone_default.stubs(:now).returns now
|
50
|
+
User.send(:"#{column}_in_past").should == [@abe, @bob]
|
51
|
+
Time.zone_default = nil
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should set the correct expected values for a #{column}_in_future datetime column method given a zone_default" do
|
55
|
+
Time.zone_default = Time.respond_to?(:find_zone) ? Time.find_zone("UTC") : Time.__send__(:get_zone, "UTC")
|
56
|
+
now = DateTime.parse '2007-01-01'
|
57
|
+
Time.zone_default.stubs(:now).returns now
|
58
|
+
User.send(:"#{column}_in_future").should == [@fox]
|
59
|
+
Time.zone_default = nil
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "inside and outside methods" do
|
64
|
+
it "should set the correct expected values for a #{column}_inside method" do
|
65
|
+
start = DateTime.parse '2003-01-01'
|
66
|
+
stop = DateTime.parse '2007-01-01'
|
67
|
+
User.send(:"#{column}_inside", start, stop).should == [@bob]
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should set the correct expected values for a #{column}_outside method" do
|
71
|
+
start = DateTime.parse '2003-01-01'
|
72
|
+
stop = DateTime.parse '2007-01-01'
|
73
|
+
User.send(:"#{column}_outside", start, stop).should == [@abe, @fox]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "year month and day methods" do
|
78
|
+
it "should set the correct expected values for a #{column}_in_year method" do
|
79
|
+
User.send(:"#{column}_in_year", '2000').should == [@abe]
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should set the correct expected values for a #{column}_in_month method" do
|
83
|
+
User.send(:"#{column}_in_month", '05').should == [@bob]
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should set the correct expected values for a #{column}_in_day method" do
|
87
|
+
User.send(:"#{column}_in_day", '10').should == [@fox]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|