bbq 0.0.4 → 0.1.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.
@@ -0,0 +1,42 @@
1
+ require 'test_helper'
2
+ require 'bbq/test_user'
3
+
4
+ class BbqSessionPoolTest < Test::Unit::TestCase
5
+ def setup
6
+ Bbq::Session.instance_variable_set(:@pool, nil)
7
+ end
8
+
9
+ def test_reuses_sessions
10
+ pool = Bbq::Session::Pool.new
11
+ user1 = Bbq::TestUser.new(:pool => pool).tap { |u| u.page }
12
+ pool.release
13
+ user2 = Bbq::TestUser.new(:pool => pool).tap { |u| u.page }
14
+
15
+ assert_same user1.page, user2.page
16
+ end
17
+
18
+ def test_has_default_pool
19
+ user1 = Bbq::TestUser.new.tap { |u| u.page }
20
+ Bbq::Session::pool.release
21
+ user2 = Bbq::TestUser.new.tap { |u| u.page }
22
+
23
+ assert_same user1.page, user2.page
24
+ end
25
+
26
+ def test_without_pool
27
+ user1 = Bbq::TestUser.new(:pool => false).tap { |u| u.page }
28
+ Bbq::Session::pool.release
29
+ user2 = Bbq::TestUser.new(:pool => false).tap { |u| u.page }
30
+
31
+ assert_not_same user1.page, user2.page
32
+ end
33
+
34
+ def test_pool_returns_correct_driver
35
+ pool = Bbq::Session::Pool.new
36
+ pool.next(:rack_test)
37
+ pool.next(:selenium)
38
+ pool.release
39
+
40
+ assert_equal :rack_test, pool.next(:rack_test).mode
41
+ end
42
+ end
@@ -1,7 +1,7 @@
1
1
  require "test_helper"
2
2
  require "generators/bbq/test_generator"
3
3
 
4
- class BbqTestGeneratorTest < Rails::Generators::TestCase
4
+ class BbqTestGeneratorTest < ::Rails::Generators::TestCase
5
5
  destination Bbq.root.join("tmp")
6
6
  setup :prepare_destination
7
7
 
@@ -3,10 +3,15 @@ require 'test_helper'
3
3
  class BbqTestUnitTest < Test::Unit::TestCase
4
4
  include CommandHelper
5
5
 
6
+ def setup
7
+ @log_path = 'test/dummy/log/test_driver.log'
8
+ end
9
+
6
10
  def test_sinatra
7
11
  create_file 'test/dope/test/acceptance/root_path_test.rb', <<-TESTCASE
8
12
  require 'app'
9
- require 'bbq/test'
13
+ require 'bbq/test_unit'
14
+ require 'bbq/test_user'
10
15
 
11
16
  class DopeAppRootTest < Bbq::TestCase
12
17
  FAILED_ASSERTION = RUBY_VERSION < "1.9" ? Test::Unit::AssertionFailedError : MiniTest::Assertion
@@ -28,13 +33,13 @@ class BbqTestUnitTest < Test::Unit::TestCase
28
33
  TESTCASE
29
34
 
30
35
  run_cmd 'ruby -Itest/dope -Itest/dope/test test/dope/test/acceptance/root_path_test.rb'
31
- assert_match /1 tests, 3 assertions, 0 failures, 0 errors/, output
36
+ assert_match /1 tests, \d+ assertions, 0 failures, 0 errors/, output
32
37
  end
33
38
 
34
39
  def test_dsl
35
40
  create_file 'test/dummy/test/acceptance/dsl_test.rb', <<-TESTCASE
36
41
  require 'test_helper'
37
- require 'bbq/test'
42
+ require 'bbq/test_unit'
38
43
 
39
44
  class DslTest < Bbq::TestCase
40
45
  background do
@@ -54,13 +59,14 @@ class BbqTestUnitTest < Test::Unit::TestCase
54
59
  TESTCASE
55
60
 
56
61
  run_cmd 'ruby -Ilib -Itest/dummy/test test/dummy/test/acceptance/dsl_test.rb'
57
- assert_match /1 tests, 1 assertions, 0 failures, 0 errors/, output
62
+ assert_match /1 tests, \d+ assertions, 0 failures, 0 errors/, output
58
63
  end
59
64
 
60
65
  def test_implicit_user_eyes
61
66
  create_file 'test/dummy/test/acceptance/implicit_user_eyes_test.rb', <<-TESTUNIT
62
67
  require 'test_helper'
63
- require 'bbq/test'
68
+ require 'bbq/test_unit'
69
+ require 'bbq/test_user'
64
70
 
65
71
  FAILED_ASSERTION = RUBY_VERSION < "1.9" ? Test::Unit::AssertionFailedError : MiniTest::Assertion
66
72
 
@@ -78,6 +84,166 @@ class BbqTestUnitTest < Test::Unit::TestCase
78
84
  TESTUNIT
79
85
 
80
86
  run_cmd 'ruby -Ilib -Itest/dummy/test test/dummy/test/acceptance/implicit_user_eyes_test.rb'
81
- assert_match /1 tests, 2 assertions, 0 failures, 0 errors/, output
87
+ assert_match /1 tests, \d+ assertions, 0 failures, 0 errors/, output
88
+ end
89
+
90
+ def test_api_client
91
+ create_file 'test/dummy/test/acceptance/api_test.rb', <<-TESTUNIT
92
+ require 'test_helper'
93
+ require 'bbq/test_unit'
94
+ require 'bbq/test_client'
95
+
96
+ class ApiTest < Bbq::TestCase
97
+ scenario 'client fetches the rainbow as JSON' do
98
+ client = Bbq::TestClient.new(:headers => { 'Accept' => 'application/json' })
99
+ client.get "/rainbow" do |response|
100
+ assert_equal 200, response.status
101
+ assert_match "application/json", response.headers["Content-Type"]
102
+ assert_equal 7, response.body["colors"]
103
+ assert_equal true, response.body["wonderful"]
104
+ end
105
+ end
106
+
107
+ scenario 'client fetches the rainbow as JSON with version' do
108
+ client = Bbq::TestClient.new(:headers => { 'Accept' => 'application/vnd.magic+json; version=2' })
109
+ client.get "/rainbow" do |response|
110
+ assert_equal 200, response.status
111
+ assert_match "application/vnd.magic+json; version=2", response.headers["Content-Type"]
112
+ assert_equal 7, response.body["colors"]
113
+ assert_equal true, response.body["wonderful"]
114
+ end
115
+ end
116
+
117
+ scenario 'client fetches the rainbow as YAML' do
118
+ client = Bbq::TestClient.new(:headers => { 'Accept' => 'application/x-yaml' })
119
+ client.get "/rainbow" do |response|
120
+ assert_equal 200, response.status
121
+ assert_match "application/x-yaml", response.headers["Content-Type"]
122
+ assert_equal 7, response.body["colors"]
123
+ assert_equal true, response.body["wonderful"]
124
+ end
125
+ end
126
+
127
+ scenario 'client extended by role gets the rainbow' do
128
+ class Bbq::TestClient
129
+ module HappyUnicorn
130
+ def get_rainbow(*args)
131
+ get "/rainbow", *args
132
+ end
133
+ end
134
+ end
135
+
136
+ client = Bbq::TestClient.new(:headers => { 'Accept' => 'application/json' })
137
+ client.roles(:happy_unicorn)
138
+ response = client.get_rainbow
139
+ assert_equal 200, response.status
140
+ assert_equal 7, response.body["colors"]
141
+ end
142
+
143
+ scenario 'client using driver with unsupported method' do
144
+ class CustomDriverClient < Bbq::TestClient
145
+ def driver
146
+ Object.new
147
+ end
148
+ end
149
+
150
+ client = CustomDriverClient.new
151
+ assert_raise Bbq::TestClient::UnsupportedMethodError do
152
+ client.patch "/rainbow"
153
+ end
154
+ end
155
+ end
156
+ TESTUNIT
157
+
158
+ run_cmd 'ruby -Ilib -Itest/dummy/test test/dummy/test/acceptance/api_test.rb'
159
+ assert_match /5 tests, \d+ assertions, 0 failures, 0 errors/, output
160
+ end
161
+
162
+ def test_session_pool
163
+ create_file 'test/dummy/test/acceptance/session_pool_test.rb', <<-TESTUNIT
164
+ require 'test_helper'
165
+ require 'bbq/test'
166
+ require 'bbq/test_user'
167
+ require 'driver_factory'
168
+
169
+ Factory = DriverFactory.new('#{@log_path}')
170
+ Capybara.register_driver :bbq do |app|
171
+ Factory.get_driver(app)
172
+ end
173
+ Capybara.default_driver = :bbq
174
+
175
+ class SessionPoolTest < Bbq::TestCase
176
+ scenario 'creates one session' do
177
+ assert Factory.drivers_clean?
178
+ alice = Bbq::TestUser.new
179
+ alice.visit "/miracle"
180
+ assert ! Factory.drivers_clean?
181
+ end
182
+
183
+ scenario 'creates three sessions' do
184
+ assert Factory.drivers_clean?
185
+ alice = Bbq::TestUser.new
186
+ bob = Bbq::TestUser.new
187
+
188
+ alice.visit "/miracle"
189
+ bob.visit "/miracle"
190
+ assert ! Factory.drivers_clean?
191
+ end
192
+
193
+ scenario 'creates two sessions' do
194
+ assert Factory.drivers_clean?
195
+ alice = Bbq::TestUser.new
196
+ alice.visit "/miracle"
197
+ assert ! Factory.drivers_clean?
198
+ end
199
+
200
+ end
201
+ TESTUNIT
202
+
203
+ run_cmd 'ruby -Ilib -Itest/dummy/test -Itest/support test/dummy/test/acceptance/session_pool_test.rb'
204
+ assert_match /3 tests, \d+ assertions, 0 failures, 0 errors/, output
205
+ drivers_created = File.readlines(@log_path).size
206
+ assert_equal 2, drivers_created
207
+ end
208
+
209
+ def test_without_session_pool
210
+ create_file 'test/dummy/test/acceptance/without_session_pool_test.rb', <<-TESTUNIT
211
+ require 'test_helper'
212
+ require 'bbq/test'
213
+ require 'bbq/test_user'
214
+ require 'driver_factory'
215
+
216
+ Factory = DriverFactory.new('#{@log_path}')
217
+ Capybara.register_driver :bbq do |app|
218
+ Factory.get_driver(app)
219
+ end
220
+ Capybara.default_driver = :bbq
221
+
222
+ class WithoutSessionPoolTest < Bbq::TestCase
223
+ scenario 'creates one session' do
224
+ alice = Bbq::TestUser.new(:pool => false)
225
+ alice.visit "/miracle"
226
+ end
227
+
228
+ scenario 'creates three sessions' do
229
+ alice = Bbq::TestUser.new(:pool => false)
230
+ bob = Bbq::TestUser.new(:pool => false)
231
+
232
+ alice.visit "/miracle"
233
+ bob.visit "/miracle"
234
+ end
235
+
236
+ scenario 'creates two sessions' do
237
+ alice = Bbq::TestUser.new(:pool => false)
238
+ alice.visit "/miracle"
239
+ end
240
+
241
+ end
242
+ TESTUNIT
243
+
244
+ run_cmd 'ruby -Ilib -Itest/dummy/test -Itest/support test/dummy/test/acceptance/without_session_pool_test.rb'
245
+ assert_match /3 tests, \d+ assertions, 0 failures, 0 errors/, output
246
+ drivers_created = File.readlines(@log_path).size
247
+ assert_equal 4, drivers_created
82
248
  end
83
249
  end
metadata CHANGED
@@ -1,104 +1,160 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
4
  prerelease:
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - DRUG - Dolnośląska Grupa Użytkowników Ruby
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-18 00:00:00.000000000Z
12
+ date: 2013-01-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: capybara
16
- requirement: &13596900 !ruby/object:Gem::Requirement
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
17
20
  none: false
21
+ prerelease: false
22
+ name: capybara
23
+ requirement: !ruby/object:Gem::Requirement
18
24
  requirements:
19
25
  - - ~>
20
26
  - !ruby/object:Gem::Version
21
27
  version: '1.0'
28
+ none: false
22
29
  type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '2.0'
36
+ none: false
23
37
  prerelease: false
24
- version_requirements: *13596900
38
+ name: activesupport
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '2.0'
44
+ none: false
45
+ type: :runtime
25
46
  - !ruby/object:Gem::Dependency
26
- name: sqlite3
27
- requirement: &13596280 !ruby/object:Gem::Requirement
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: 1.3.3
28
52
  none: false
53
+ prerelease: false
54
+ name: sqlite3
55
+ requirement: !ruby/object:Gem::Requirement
29
56
  requirements:
30
57
  - - ~>
31
58
  - !ruby/object:Gem::Version
32
59
  version: 1.3.3
60
+ none: false
33
61
  type: :development
34
- prerelease: false
35
- version_requirements: *13596280
36
62
  - !ruby/object:Gem::Dependency
37
- name: rake
38
- requirement: &13595760 !ruby/object:Gem::Requirement
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.8.7
39
68
  none: false
69
+ prerelease: false
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
40
72
  requirements:
41
73
  - - ~>
42
74
  - !ruby/object:Gem::Version
43
75
  version: 0.8.7
76
+ none: false
44
77
  type: :development
45
- prerelease: false
46
- version_requirements: *13595760
47
78
  - !ruby/object:Gem::Dependency
48
- name: rdoc
49
- requirement: &13595220 !ruby/object:Gem::Requirement
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '3.7'
50
84
  none: false
85
+ prerelease: false
86
+ name: rdoc
87
+ requirement: !ruby/object:Gem::Requirement
51
88
  requirements:
52
89
  - - ~>
53
90
  - !ruby/object:Gem::Version
54
91
  version: '3.7'
92
+ none: false
55
93
  type: :development
56
- prerelease: false
57
- version_requirements: *13595220
58
94
  - !ruby/object:Gem::Dependency
59
- name: devise
60
- requirement: &13594740 !ruby/object:Gem::Requirement
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 1.4.0
61
100
  none: false
101
+ prerelease: false
102
+ name: devise
103
+ requirement: !ruby/object:Gem::Requirement
62
104
  requirements:
63
105
  - - ~>
64
106
  - !ruby/object:Gem::Version
65
107
  version: 1.4.0
108
+ none: false
66
109
  type: :development
67
- prerelease: false
68
- version_requirements: *13594740
69
110
  - !ruby/object:Gem::Dependency
70
- name: sinatra
71
- requirement: &13594200 !ruby/object:Gem::Requirement
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ~>
114
+ - !ruby/object:Gem::Version
115
+ version: 1.2.6
72
116
  none: false
117
+ prerelease: false
118
+ name: sinatra
119
+ requirement: !ruby/object:Gem::Requirement
73
120
  requirements:
74
121
  - - ~>
75
122
  - !ruby/object:Gem::Version
76
123
  version: 1.2.6
124
+ none: false
77
125
  type: :development
78
- prerelease: false
79
- version_requirements: *13594200
80
126
  - !ruby/object:Gem::Dependency
81
- name: rspec-rails
82
- requirement: &13593580 !ruby/object:Gem::Requirement
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 2.6.0
83
132
  none: false
133
+ prerelease: false
134
+ name: rspec-rails
135
+ requirement: !ruby/object:Gem::Requirement
84
136
  requirements:
85
137
  - - ~>
86
138
  - !ruby/object:Gem::Version
87
139
  version: 2.6.0
140
+ none: false
88
141
  type: :development
89
- prerelease: false
90
- version_requirements: *13593580
91
142
  - !ruby/object:Gem::Dependency
92
- name: rails
93
- requirement: &13592940 !ruby/object:Gem::Requirement
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: 3.0.0
94
148
  none: false
149
+ prerelease: false
150
+ name: rails
151
+ requirement: !ruby/object:Gem::Requirement
95
152
  requirements:
96
153
  - - ! '>='
97
154
  - !ruby/object:Gem::Version
98
155
  version: 3.0.0
156
+ none: false
99
157
  type: :development
100
- prerelease: false
101
- version_requirements: *13592940
102
158
  description: Objected oriented acceptance testing for Rails, using personas.
103
159
  email:
104
160
  - bbq@drug.org.pl
@@ -116,10 +172,16 @@ files:
116
172
  - bbq.gemspec
117
173
  - lib/bbq.rb
118
174
  - lib/bbq/devise.rb
175
+ - lib/bbq/rails/routes.rb
119
176
  - lib/bbq/railtie.rb
177
+ - lib/bbq/roles.rb
120
178
  - lib/bbq/rspec.rb
179
+ - lib/bbq/session.rb
121
180
  - lib/bbq/test.rb
181
+ - lib/bbq/test_client.rb
182
+ - lib/bbq/test_unit.rb
122
183
  - lib/bbq/test_user.rb
184
+ - lib/bbq/test_user/capybara_dsl.rb
123
185
  - lib/bbq/test_user/eyes.rb
124
186
  - lib/bbq/test_user/within.rb
125
187
  - lib/bbq/util.rb
@@ -169,11 +231,13 @@ files:
169
231
  - test/dummy/script/rails
170
232
  - test/dummy/spec/spec_helper.rb
171
233
  - test/dummy/test/test_helper.rb
234
+ - test/support/driver_factory.rb
172
235
  - test/support/helpers.rb
173
236
  - test/test_helper.rb
174
237
  - test/unit/bbq_devise_test.rb
175
238
  - test/unit/bbq_install_generator_test.rb
176
239
  - test/unit/bbq_rspec_test.rb
240
+ - test/unit/bbq_session_pool_test.rb
177
241
  - test/unit/bbq_test_generator_test.rb
178
242
  - test/unit/bbq_test_unit_test.rb
179
243
  - test/unit/bbq_test_user_test.rb
@@ -186,27 +250,71 @@ rdoc_options: []
186
250
  require_paths:
187
251
  - lib
188
252
  required_ruby_version: !ruby/object:Gem::Requirement
189
- none: false
190
253
  requirements:
191
254
  - - ! '>='
192
255
  - !ruby/object:Gem::Version
193
256
  version: '0'
194
257
  segments:
195
258
  - 0
196
- hash: -4089825248492275040
197
- required_rubygems_version: !ruby/object:Gem::Requirement
259
+ hash: -3767528183073540906
198
260
  none: false
261
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
262
  requirements:
200
263
  - - ! '>='
201
264
  - !ruby/object:Gem::Version
202
265
  version: '0'
203
266
  segments:
204
267
  - 0
205
- hash: -4089825248492275040
268
+ hash: -3767528183073540906
269
+ none: false
206
270
  requirements: []
207
271
  rubyforge_project: bbq
208
- rubygems_version: 1.8.10
272
+ rubygems_version: 1.8.24
209
273
  signing_key:
210
274
  specification_version: 3
211
275
  summary: Objected oriented acceptance testing for Rails, using personas.
212
- test_files: []
276
+ test_files:
277
+ - test/dope/app.rb
278
+ - test/dummy/Rakefile
279
+ - test/dummy/app/controllers/application_controller.rb
280
+ - test/dummy/app/controllers/home_controller.rb
281
+ - test/dummy/app/helpers/application_helper.rb
282
+ - test/dummy/app/models/user.rb
283
+ - test/dummy/app/views/home/ponycorns.html.erb
284
+ - test/dummy/app/views/layouts/application.html.erb
285
+ - test/dummy/config.ru
286
+ - test/dummy/config/application.rb
287
+ - test/dummy/config/boot.rb
288
+ - test/dummy/config/database.yml
289
+ - test/dummy/config/environment.rb
290
+ - test/dummy/config/environments/development.rb
291
+ - test/dummy/config/environments/production.rb
292
+ - test/dummy/config/environments/test.rb
293
+ - test/dummy/config/initializers/backtrace_silencers.rb
294
+ - test/dummy/config/initializers/devise.rb
295
+ - test/dummy/config/initializers/inflections.rb
296
+ - test/dummy/config/initializers/mime_types.rb
297
+ - test/dummy/config/initializers/secret_token.rb
298
+ - test/dummy/config/initializers/session_store.rb
299
+ - test/dummy/config/locales/en.yml
300
+ - test/dummy/config/routes.rb
301
+ - test/dummy/db/schema.rb
302
+ - test/dummy/public/404.html
303
+ - test/dummy/public/422.html
304
+ - test/dummy/public/500.html
305
+ - test/dummy/public/favicon.ico
306
+ - test/dummy/script/rails
307
+ - test/dummy/spec/spec_helper.rb
308
+ - test/dummy/test/test_helper.rb
309
+ - test/support/driver_factory.rb
310
+ - test/support/helpers.rb
311
+ - test/test_helper.rb
312
+ - test/unit/bbq_devise_test.rb
313
+ - test/unit/bbq_install_generator_test.rb
314
+ - test/unit/bbq_rspec_test.rb
315
+ - test/unit/bbq_session_pool_test.rb
316
+ - test/unit/bbq_test_generator_test.rb
317
+ - test/unit/bbq_test_unit_test.rb
318
+ - test/unit/bbq_test_user_test.rb
319
+ - test/unit/bbq_two_simultaneous_users_test.rb
320
+ - test/unit/bbq_util_test.rb