bbq 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/CHANGELOG +12 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/bbq.gemspec +2 -0
- data/lib/bbq.rb +15 -1
- data/lib/bbq/devise.rb +2 -2
- data/lib/bbq/test.rb +1 -0
- data/lib/bbq/test_user.rb +10 -12
- data/lib/bbq/test_user/eyes.rb +13 -0
- data/lib/bbq/test_user/within.rb +31 -0
- data/lib/bbq/version.rb +1 -1
- data/test/dope/app.rb +19 -0
- data/test/dummy/app/controllers/home_controller.rb +3 -0
- data/test/dummy/app/views/home/ponycorns.html.erb +13 -0
- data/test/dummy/config/routes.rb +1 -0
- data/test/unit/bbq_test_unit_test.rb +28 -0
- data/test/unit/bbq_test_user_test.rb +20 -0
- metadata +34 -18
data/.gitignore
CHANGED
data/CHANGELOG
ADDED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Warning & disclaimer
|
2
2
|
====================
|
3
3
|
|
4
|
-
This gem is currently under development. We're targeting most popular use
|
4
|
+
This gem is currently under development. We're targeting most popular use cases - Rails & Rack applications (ex. Sinatra). However the philosophy behind it is not limited to Rails nor web applications in general. There is even example usage with EventMachine. Feel free to modify it for your own needs.
|
5
5
|
|
6
6
|
[![Build Status](https://secure.travis-ci.org/drugpl/bbq.png)](http://travis-ci.org/drugpl/bbq)
|
7
7
|
|
data/Rakefile
CHANGED
@@ -22,7 +22,7 @@ require 'rake/testtask'
|
|
22
22
|
Rake::TestTask.new(:test) do |t|
|
23
23
|
t.libs << 'lib'
|
24
24
|
t.libs << 'test'
|
25
|
-
t.pattern = 'test
|
25
|
+
t.pattern = 'test/unit/*_test.rb' # Don't load test/dummy/test && test/dope/test etc. because we run them from our tests with proper commands setup.
|
26
26
|
t.verbose = false
|
27
27
|
end
|
28
28
|
|
data/bbq.gemspec
CHANGED
data/lib/bbq.rb
CHANGED
@@ -1,7 +1,21 @@
|
|
1
|
-
require '
|
1
|
+
require 'pathname'
|
2
2
|
|
3
3
|
module Bbq
|
4
4
|
def self.root
|
5
5
|
@root ||= Pathname.new(File.expand_path(File.join(File.dirname(__FILE__), '..')))
|
6
6
|
end
|
7
|
+
|
8
|
+
def self.rails?
|
9
|
+
defined?(::Rails)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.app
|
13
|
+
Capybara.app
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.app=(new_app)
|
17
|
+
Capybara.app=(new_app)
|
18
|
+
end
|
7
19
|
end
|
20
|
+
|
21
|
+
require 'bbq/railtie' if Bbq.rails?
|
data/lib/bbq/devise.rb
CHANGED
@@ -6,12 +6,12 @@ if defined?(Devise)
|
|
6
6
|
attr_accessor :devise_authentication_key, :email, :password, :scope
|
7
7
|
|
8
8
|
def initialize_devise
|
9
|
-
|
9
|
+
@devise_initialized ||= begin
|
10
10
|
self.devise_authentication_key = ::Devise.authentication_keys.first
|
11
11
|
self.email = options[devise_authentication_key.to_sym] || Bbq::Devise.next_email
|
12
12
|
self.password = options[:password] || Bbq::Devise.next_password
|
13
13
|
self.scope = ::Devise.mappings.first.second.singular.to_s
|
14
|
-
|
14
|
+
true
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
data/lib/bbq/test.rb
CHANGED
data/lib/bbq/test_user.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
|
-
require 'capybara/rails'
|
1
|
+
require 'capybara/rails' if Bbq.rails?
|
2
2
|
require 'capybara/dsl'
|
3
3
|
require 'securerandom'
|
4
4
|
require 'bbq/util'
|
5
|
+
require 'bbq/test_user/eyes'
|
6
|
+
require 'bbq/test_user/within'
|
5
7
|
|
6
8
|
module Bbq
|
7
9
|
class TestUser
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
if Bbq.rails?
|
11
|
+
include ActionDispatch::Routing::UrlFor
|
12
|
+
include Rails.application.routes.url_helpers
|
13
|
+
include ActionDispatch::Routing::RouteSet::MountedHelpers unless Rails.version < "3.1"
|
14
|
+
end
|
11
15
|
include Capybara::DSL
|
16
|
+
include Bbq::TestUser::Eyes
|
17
|
+
include Bbq::TestUser::Within
|
12
18
|
|
13
19
|
attr_reader :options
|
14
20
|
|
@@ -42,13 +48,5 @@ module Bbq
|
|
42
48
|
self.extend(module_obj)
|
43
49
|
end
|
44
50
|
end
|
45
|
-
|
46
|
-
def see?(*args)
|
47
|
-
args.all? { |arg| has_content?(arg) }
|
48
|
-
end
|
49
|
-
|
50
|
-
def not_see?(*args)
|
51
|
-
args.all? { |arg| has_no_content?(arg) }
|
52
|
-
end
|
53
51
|
end
|
54
52
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Bbq
|
2
|
+
class TestUser
|
3
|
+
module Within
|
4
|
+
METHODS_USING_WITHIN = [
|
5
|
+
:see?, :not_see?,
|
6
|
+
:attach_file, :check, :choose, :click_link_or_button, :click_button,
|
7
|
+
:click_link, :click_on, :fill_in, :select, :uncheck, :unselect
|
8
|
+
]
|
9
|
+
|
10
|
+
METHODS_USING_WITHIN.each do |method_name|
|
11
|
+
class_eval <<-RUBY
|
12
|
+
def #{method_name}(*args)
|
13
|
+
using_within(args) { super }
|
14
|
+
end
|
15
|
+
RUBY
|
16
|
+
end
|
17
|
+
|
18
|
+
def using_within(args)
|
19
|
+
options = args.extract_options!
|
20
|
+
locator = options.delete(:within)
|
21
|
+
args.push(options) unless options.empty?
|
22
|
+
|
23
|
+
if locator
|
24
|
+
within(locator) { yield }
|
25
|
+
else
|
26
|
+
yield
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/bbq/version.rb
CHANGED
data/test/dope/app.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gemfile = File.expand_path('../../../Gemfile', __FILE__)
|
3
|
+
|
4
|
+
raise 'could not find gemfile' unless File.exist?(gemfile)
|
5
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
6
|
+
require 'bundler'
|
7
|
+
Bundler.setup
|
8
|
+
|
9
|
+
$:.unshift File.expand_path('../../../../lib', __FILE__)
|
10
|
+
|
11
|
+
require 'sinatra'
|
12
|
+
|
13
|
+
module Dope
|
14
|
+
class App < ::Sinatra::Base
|
15
|
+
get "/" do
|
16
|
+
"BBQ supports sinatra"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/test/dummy/config/routes.rb
CHANGED
@@ -3,6 +3,34 @@ require 'test_helper'
|
|
3
3
|
class BbqTestUnitTest < Test::Unit::TestCase
|
4
4
|
include CommandHelper
|
5
5
|
|
6
|
+
def test_sinatra
|
7
|
+
create_file 'test/dope/test/acceptance/root_path_test.rb', <<-TESTCASE
|
8
|
+
require 'app'
|
9
|
+
require 'bbq/test'
|
10
|
+
|
11
|
+
class DopeAppRootTest < Bbq::TestCase
|
12
|
+
FAILED_ASSERTION = RUBY_VERSION < "1.9" ? Test::Unit::AssertionFailedError : MiniTest::Assertion
|
13
|
+
|
14
|
+
background do
|
15
|
+
Bbq.app = ::Dope::App
|
16
|
+
end
|
17
|
+
|
18
|
+
scenario "user see '/' page" do
|
19
|
+
user = Bbq::TestUser.new
|
20
|
+
user.visit "/"
|
21
|
+
user.see!("BBQ supports sinatra")
|
22
|
+
assert user.see?("BBQ supports sinatra")
|
23
|
+
|
24
|
+
assert_raises(FAILED_ASSERTION) { user.see!("blah") }
|
25
|
+
assert_raises(FAILED_ASSERTION) { user.not_see!("BBQ supports sinatra") }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
TESTCASE
|
29
|
+
|
30
|
+
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
|
32
|
+
end
|
33
|
+
|
6
34
|
def test_dsl
|
7
35
|
create_file 'test/dummy/test/acceptance/dsl_test.rb', <<-TESTCASE
|
8
36
|
require 'test_helper'
|
@@ -51,4 +51,24 @@ class BbqTestUserTest < Test::Unit::TestCase
|
|
51
51
|
assert @user.see?("MIRACLE")
|
52
52
|
end
|
53
53
|
|
54
|
+
def test_user_eyes_within_scope
|
55
|
+
@user = TestUser.new
|
56
|
+
@user.visit "/ponycorns"
|
57
|
+
assert @user.see?("Pink", :within => "#unicorns")
|
58
|
+
assert ! @user.see?("Violet", :within => "#unicorns")
|
59
|
+
assert @user.not_see?("Violet", :within => "#unicorns")
|
60
|
+
assert ! @user.not_see?("Pink", :within => "#unicorns")
|
61
|
+
|
62
|
+
assert_nothing_raised do
|
63
|
+
@user.fill_in "color", :with => "red", :within => "#new_pony"
|
64
|
+
end
|
65
|
+
assert_raises Capybara::ElementNotFound do
|
66
|
+
@user.fill_in "color", :with => "red", :within => "#new_unicorn"
|
67
|
+
end
|
68
|
+
|
69
|
+
assert_nothing_raised do
|
70
|
+
@user.click_link "More ponycorns"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
54
74
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bbq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-07-
|
12
|
+
date: 2011-07-14 00:00:00.000000000 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capybara
|
17
|
-
requirement: &
|
17
|
+
requirement: &6718740 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *6718740
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rails
|
28
|
-
requirement: &
|
28
|
+
requirement: &6717800 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 3.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *6717800
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sqlite3
|
39
|
-
requirement: &
|
39
|
+
requirement: &6716860 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.3.3
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *6716860
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rake
|
50
|
-
requirement: &
|
50
|
+
requirement: &6715100 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 0.8.7
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *6715100
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rdoc
|
61
|
-
requirement: &
|
61
|
+
requirement: &6712180 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '3.7'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *6712180
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: devise
|
72
|
-
requirement: &
|
72
|
+
requirement: &6707800 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 1.4.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *6707800
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: rspec-rails
|
83
|
-
requirement: &
|
83
|
+
requirement: &6706580 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,7 +88,18 @@ dependencies:
|
|
88
88
|
version: 2.6.0
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *6706580
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: sinatra
|
94
|
+
requirement: &6705280 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.2.6
|
100
|
+
type: :development
|
101
|
+
prerelease: false
|
102
|
+
version_requirements: *6705280
|
92
103
|
description: Objected oriented acceptance testing for Rails, using personas.
|
93
104
|
email:
|
94
105
|
- bbq@drug.org.pl
|
@@ -98,6 +109,7 @@ extra_rdoc_files: []
|
|
98
109
|
files:
|
99
110
|
- .gitignore
|
100
111
|
- .travis.yml
|
112
|
+
- CHANGELOG
|
101
113
|
- Gemfile
|
102
114
|
- MIT-LICENSE
|
103
115
|
- README.md
|
@@ -109,6 +121,8 @@ files:
|
|
109
121
|
- lib/bbq/rspec.rb
|
110
122
|
- lib/bbq/test.rb
|
111
123
|
- lib/bbq/test_user.rb
|
124
|
+
- lib/bbq/test_user/eyes.rb
|
125
|
+
- lib/bbq/test_user/within.rb
|
112
126
|
- lib/bbq/util.rb
|
113
127
|
- lib/bbq/version.rb
|
114
128
|
- lib/generators/bbq/install_generator.rb
|
@@ -124,11 +138,13 @@ files:
|
|
124
138
|
- lib/generators/test_unit/templates/bbq_test_case.rb
|
125
139
|
- lib/generators/test_unit/templates/test_user.rb
|
126
140
|
- lib/tasks/bbq.rake
|
141
|
+
- test/dope/app.rb
|
127
142
|
- test/dummy/Rakefile
|
128
143
|
- test/dummy/app/controllers/application_controller.rb
|
129
144
|
- test/dummy/app/controllers/home_controller.rb
|
130
145
|
- test/dummy/app/helpers/application_helper.rb
|
131
146
|
- test/dummy/app/models/user.rb
|
147
|
+
- test/dummy/app/views/home/ponycorns.html.erb
|
132
148
|
- test/dummy/app/views/layouts/application.html.erb
|
133
149
|
- test/dummy/config.ru
|
134
150
|
- test/dummy/config/application.rb
|
@@ -179,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
195
|
version: '0'
|
180
196
|
segments:
|
181
197
|
- 0
|
182
|
-
hash: -
|
198
|
+
hash: -2949951085360793970
|
183
199
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
200
|
none: false
|
185
201
|
requirements:
|
@@ -188,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
204
|
version: '0'
|
189
205
|
segments:
|
190
206
|
- 0
|
191
|
-
hash: -
|
207
|
+
hash: -2949951085360793970
|
192
208
|
requirements: []
|
193
209
|
rubyforge_project: bbq
|
194
210
|
rubygems_version: 1.6.2
|