sinatra-tests 0.1.4 → 0.1.5
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/VERSION +1 -1
- data/lib/sinatra/tests.rb +1 -1
- data/lib/sinatra/tests/init.rb +174 -0
- data/lib/sinatra/tests/shared_specs.rb +121 -2
- data/sinatra-tests.gemspec +3 -2
- metadata +3 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/lib/sinatra/tests.rb
CHANGED
@@ -0,0 +1,174 @@
|
|
1
|
+
|
2
|
+
# ### Make sure my own gem path is included first
|
3
|
+
# if (ENV['HOME'] =~ /^\/home\//) ## DREAMHOST
|
4
|
+
# ENV['GEM_HOME'] = "#{ENV['HOME']}/.gems"
|
5
|
+
# ENV['GEM_PATH'] = "#{ENV['HOME']}/.gems:/usr/lib/ruby/gems/1.8"
|
6
|
+
# require 'rubygems'
|
7
|
+
# Gem.clear_paths
|
8
|
+
# else
|
9
|
+
# require 'rubygems'
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# #--
|
13
|
+
# # DEPENDENCIES
|
14
|
+
# #++
|
15
|
+
#
|
16
|
+
# require 'haml'
|
17
|
+
# require 'sass'
|
18
|
+
# require 'sinatra/base'
|
19
|
+
# require 'alt/rext'
|
20
|
+
# require 'ostruct'
|
21
|
+
# require 'yaml'
|
22
|
+
#
|
23
|
+
# #--
|
24
|
+
# ## SINATRA EXTENSIONS
|
25
|
+
# #++
|
26
|
+
#
|
27
|
+
# require 'sinatra/basics'
|
28
|
+
# require 'sinatra/ie6nomore'
|
29
|
+
# # require 'sinatra/upload'
|
30
|
+
# # require 'sinatra/snippets'
|
31
|
+
# #require 'sinatra/cache'
|
32
|
+
#
|
33
|
+
# #--
|
34
|
+
# # DATABASE DEPENDENCIES
|
35
|
+
# #++
|
36
|
+
# require 'dm-core'
|
37
|
+
# require 'dm-migrations'
|
38
|
+
# require 'dm-timestamps'
|
39
|
+
# require 'dm-validations'
|
40
|
+
# require 'dm-serializer'
|
41
|
+
# require 'dm-types'
|
42
|
+
#
|
43
|
+
# #--
|
44
|
+
# # DATABASE CONFIGURATION
|
45
|
+
# #++
|
46
|
+
#
|
47
|
+
# DataMapper::Logger.new("#{APP_ROOT}/db/dm.app.log", :debug)
|
48
|
+
# DataMapper.setup :default, "sqlite3://#{APP_ROOT}/db/db.tests.db"
|
49
|
+
# DataMapper.auto_upgrade!
|
50
|
+
#
|
51
|
+
#--
|
52
|
+
# SINATRA::TESTS::INIT
|
53
|
+
#
|
54
|
+
# Main Extension that loads a number of commonly used parts / functionality
|
55
|
+
#++
|
56
|
+
|
57
|
+
module Sinatra::Tests
|
58
|
+
module Init
|
59
|
+
|
60
|
+
module Helpers
|
61
|
+
|
62
|
+
##
|
63
|
+
# Convenience method for the class Settings block
|
64
|
+
def konf
|
65
|
+
self.class.settings
|
66
|
+
end
|
67
|
+
|
68
|
+
end #/module Helpers
|
69
|
+
|
70
|
+
def self.registered(app)
|
71
|
+
app.helpers Sinatra::Init::Helpers
|
72
|
+
|
73
|
+
## OPTIONS / SINATRA / CORE
|
74
|
+
app.set :static, true
|
75
|
+
app.set :logging, true
|
76
|
+
app.set :sessions, true
|
77
|
+
app.set :methodoverride, true
|
78
|
+
app.set :run, false
|
79
|
+
|
80
|
+
app.set :raise_errors, true #Proc.new { test? }
|
81
|
+
app.set :show_exceptions, true #Proc.new { development? }
|
82
|
+
|
83
|
+
## OPTIONS / SINATRA / EXTENSIONS
|
84
|
+
# app.set :admin_path_prefix, '/admin'
|
85
|
+
|
86
|
+
## OPTIONS / SINATRA / APP
|
87
|
+
|
88
|
+
app.set :apps_dir, "#{APP_ROOT}/apps"
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# Configuration loading abstraction. Loads the configurations in the given path,
|
94
|
+
# or
|
95
|
+
#
|
96
|
+
# ==== Examples
|
97
|
+
#
|
98
|
+
# set :settings, load_settings('/path/2/configurations/file.yml')
|
99
|
+
#
|
100
|
+
# Merge local settings with the global configurations, via adding :merge_with_global
|
101
|
+
#
|
102
|
+
# set :settings, load_settings('/path/2/configurations/file.yml', :merge_with_global)
|
103
|
+
#
|
104
|
+
#
|
105
|
+
# @api public
|
106
|
+
def load_settings!(path, load_global = nil)
|
107
|
+
global_settings = load_global.nil? ? {} : YAML.load_file("#{APP_ROOT}/config/settings.yml")
|
108
|
+
loaded_settings = test(?f, path) ? YAML.load_file(path) : {} # Hash coming in
|
109
|
+
merged_settings = global_settings.merge(loaded_settings)
|
110
|
+
puts "- Settings loaded and merged for [#{path.sub(APP_ROOT,'')}]"
|
111
|
+
@settings = ::OpenStruct.new(merged_settings)
|
112
|
+
end
|
113
|
+
|
114
|
+
##
|
115
|
+
# Convenience method for loading declared routes.
|
116
|
+
#
|
117
|
+
# Takes the full path to the apps/app directory
|
118
|
+
#
|
119
|
+
# ==== Examples
|
120
|
+
#
|
121
|
+
# load_routes!(app_dir)
|
122
|
+
#
|
123
|
+
#
|
124
|
+
# load_routes!('/full/path/2/apps/app/dir')
|
125
|
+
#
|
126
|
+
# @api public
|
127
|
+
def load_routes!(app_dir_path)
|
128
|
+
# puts "load_routes!(app_dir_path=[#{app_dir_path}]) [#{__FILE__}:#{__LINE__}]"
|
129
|
+
Dir["#{app_dir_path}/routes/*.rb"].each do |route|
|
130
|
+
load route
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
##
|
135
|
+
# Convenience method for loading helpers.
|
136
|
+
#
|
137
|
+
# Takes the full path to the apps/app directory
|
138
|
+
#
|
139
|
+
# ==== Examples
|
140
|
+
#
|
141
|
+
# load_helpers!(app_dir)
|
142
|
+
#
|
143
|
+
#
|
144
|
+
# load_helpers!('/full/path/2/apps/app/dir')
|
145
|
+
#
|
146
|
+
# @api public
|
147
|
+
def load_helpers!(app_dir_path)
|
148
|
+
# puts "load_helpers!(app_dir_path=[#{app_dir_path}]) [#{__FILE__}:#{__LINE__}]"
|
149
|
+
Dir["#{app_dir_path}/helpers/*.rb"].each do |helper|
|
150
|
+
load helper
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# Convenience method for loading models.
|
156
|
+
#
|
157
|
+
# Takes the full path to the apps/app directory
|
158
|
+
#
|
159
|
+
# ==== Examples
|
160
|
+
#
|
161
|
+
# load_models!(app_dir)
|
162
|
+
#
|
163
|
+
#
|
164
|
+
# load_models!('/full/path/2/apps/app/dir')
|
165
|
+
#
|
166
|
+
# @api public
|
167
|
+
def load_models!(app_dir)
|
168
|
+
Dir["#{app_dir}/models/*.rb"].each do |model|
|
169
|
+
load model
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
end #/module Init
|
174
|
+
end #/module Sinatra::Tests
|
@@ -231,7 +231,12 @@ module Sinatra
|
|
231
231
|
describe "Sanity" do
|
232
232
|
|
233
233
|
it "should be a MyTestApp kind of app" do
|
234
|
-
|
234
|
+
# FIXME:: HACK to prevent errors due to stupid Rack::CommonLogger error, when testing.
|
235
|
+
unless app.class == MyTestApp
|
236
|
+
pending "app.class returns [#{app.class}]"
|
237
|
+
else
|
238
|
+
app.class.should == MyTestApp
|
239
|
+
end
|
235
240
|
end
|
236
241
|
|
237
242
|
# it_should_behave_like "debug => app.methods"
|
@@ -306,7 +311,6 @@ module Sinatra
|
|
306
311
|
|
307
312
|
###### ADMIN SECTIONS #######
|
308
313
|
|
309
|
-
|
310
314
|
share_examples_for 'div.admin-section-header > div.actions > h4 with HELP' do
|
311
315
|
it "should have div.admin-section-header > div.actions > h4 with HELP" do
|
312
316
|
body.should have_tag('div.admin-section-header > div.actions > h4') do |h4|
|
@@ -325,6 +329,121 @@ module Sinatra
|
|
325
329
|
end
|
326
330
|
|
327
331
|
|
332
|
+
###### CSS ########
|
333
|
+
|
334
|
+
share_examples_for 'get_all_css_requests("/css")' do
|
335
|
+
|
336
|
+
it_should_behave_like "CSS [screen, print]"
|
337
|
+
|
338
|
+
it_should_behave_like "CSS [ie]"
|
339
|
+
|
340
|
+
end
|
341
|
+
|
342
|
+
share_examples_for 'get_all_css_requests("/css") (NO IE)' do
|
343
|
+
|
344
|
+
it_should_behave_like "CSS [screen, print]"
|
345
|
+
|
346
|
+
end
|
347
|
+
|
348
|
+
share_examples_for 'CSS [screen, print]' do
|
349
|
+
|
350
|
+
describe "CSS - GET /css/screen.css" do
|
351
|
+
|
352
|
+
before(:each) do
|
353
|
+
get("/css/screen.css")
|
354
|
+
end
|
355
|
+
|
356
|
+
it "should return status: 200" do
|
357
|
+
assert response.ok?
|
358
|
+
end
|
359
|
+
|
360
|
+
it "should return 'text/html'" do
|
361
|
+
# response.headers['Content-Type'].should == 'text/css;charset=utf-8'
|
362
|
+
response.headers['Content-Type'].should == 'text/css'
|
363
|
+
end
|
364
|
+
|
365
|
+
describe "the CSS" do
|
366
|
+
|
367
|
+
# it_should_behave_like "debug"
|
368
|
+
|
369
|
+
it "should NOT have a Sass::SyntaxError" do
|
370
|
+
body.should_not match(/Sass::SyntaxError/)
|
371
|
+
end
|
372
|
+
|
373
|
+
# TODO:: Need to write further tests here
|
374
|
+
# it "should have further tests"
|
375
|
+
|
376
|
+
end #/ the CSS
|
377
|
+
|
378
|
+
end #/CSS - GET /css/screen.css
|
379
|
+
|
380
|
+
describe "CSS - GET /css/print.css" do
|
381
|
+
|
382
|
+
before(:each) do
|
383
|
+
get("/css/print.css")
|
384
|
+
end
|
385
|
+
|
386
|
+
it "should return status: 200" do
|
387
|
+
assert response.ok?
|
388
|
+
end
|
389
|
+
|
390
|
+
it "should return 'text/html'" do
|
391
|
+
# response.headers['Content-Type'].should == 'text/css;charset=utf-8'
|
392
|
+
response.headers['Content-Type'].should == 'text/css'
|
393
|
+
end
|
394
|
+
|
395
|
+
describe "the CSS" do
|
396
|
+
|
397
|
+
# it_should_behave_like "debug"
|
398
|
+
|
399
|
+
it "should NOT have a Sass::SyntaxError" do
|
400
|
+
body.should_not match(/Sass::SyntaxError/)
|
401
|
+
end
|
402
|
+
|
403
|
+
# TODO:: Need to write further tests here
|
404
|
+
# it "should have further tests"
|
405
|
+
|
406
|
+
end #/ the CSS
|
407
|
+
|
408
|
+
end #/CSS - GET /css/print.css
|
409
|
+
|
410
|
+
end
|
411
|
+
|
412
|
+
share_examples_for 'CSS [ie]' do
|
413
|
+
|
414
|
+
describe "CSS - GET /css/ie.css" do
|
415
|
+
|
416
|
+
before(:each) do
|
417
|
+
get("/css/ie.css")
|
418
|
+
end
|
419
|
+
|
420
|
+
it "should return status: 200" do
|
421
|
+
assert response.ok?
|
422
|
+
end
|
423
|
+
|
424
|
+
it "should return 'text/html'" do
|
425
|
+
# response.headers['Content-Type'].should == 'text/css;charset=utf-8' # tilt version
|
426
|
+
response.headers['Content-Type'].should == 'text/css'
|
427
|
+
end
|
428
|
+
|
429
|
+
describe "the CSS" do
|
430
|
+
|
431
|
+
# it_should_behave_like "debug"
|
432
|
+
|
433
|
+
it "should NOT have a Sass::SyntaxError" do
|
434
|
+
body.should_not match(/Sass::SyntaxError/)
|
435
|
+
end
|
436
|
+
|
437
|
+
# TODO:: Need to write further tests here
|
438
|
+
# it "should have further tests"
|
439
|
+
|
440
|
+
end #/ the CSS
|
441
|
+
|
442
|
+
end #/CSS - GET /css/print.css
|
443
|
+
|
444
|
+
end
|
445
|
+
|
446
|
+
|
328
447
|
end #/module SharedSpecs
|
329
448
|
|
330
449
|
end #/module Tests
|
data/sinatra-tests.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sinatra-tests}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["kematzy"]
|
12
|
-
s.date = %q{2009-10-
|
12
|
+
s.date = %q{2009-10-15}
|
13
13
|
s.email = %q{kematzy@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"Rakefile",
|
24
24
|
"VERSION",
|
25
25
|
"lib/sinatra/tests.rb",
|
26
|
+
"lib/sinatra/tests/init.rb",
|
26
27
|
"lib/sinatra/tests/shared_specs.rb",
|
27
28
|
"lib/sinatra/tests/test_case.rb",
|
28
29
|
"sinatra-tests.gemspec",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kematzy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-15 00:00:00 +08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- Rakefile
|
70
70
|
- VERSION
|
71
71
|
- lib/sinatra/tests.rb
|
72
|
+
- lib/sinatra/tests/init.rb
|
72
73
|
- lib/sinatra/tests/shared_specs.rb
|
73
74
|
- lib/sinatra/tests/test_case.rb
|
74
75
|
- sinatra-tests.gemspec
|