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 CHANGED
@@ -9,4 +9,6 @@ test/dummy/log/*.log
9
9
  test/dummy/tmp/
10
10
  test/dummy/test/acceptance/*
11
11
  test/dummy/spec/acceptance/*
12
+ test/dope/test/acceptance/*
13
+ test/dope/spec/acceptance/*
12
14
  nbproject/
@@ -0,0 +1,12 @@
1
+ 0.0.3
2
+
3
+ * Added support and tests for Sinatra
4
+ * Added Bbq.app and Bbq.app=
5
+
6
+ 0.0.2
7
+
8
+ * ...
9
+
10
+ 0.0.1
11
+
12
+ * ...
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 case - Rails. 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.
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/**/*_test.rb'
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
 
@@ -28,4 +28,6 @@ Gem::Specification.new do |s|
28
28
  s.add_development_dependency "devise", "~> 1.4.0"
29
29
  s.add_development_dependency "rspec-rails", "~> 2.6.0"
30
30
 
31
+ s.add_development_dependency "sinatra", "~> 1.2.6"
32
+
31
33
  end
data/lib/bbq.rb CHANGED
@@ -1,7 +1,21 @@
1
- require 'bbq/railtie' if defined?(Rails)
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?
@@ -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
- unless @devise_initialized
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
- @devise_initialized = true
14
+ true
15
15
  end
16
16
  end
17
17
 
@@ -1,3 +1,4 @@
1
+ require 'bbq'
1
2
  require 'active_support'
2
3
  require 'test/unit'
3
4
  require 'bbq/test_user'
@@ -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
- include ActionDispatch::Routing::UrlFor
9
- include Rails.application.routes.url_helpers
10
- include ActionDispatch::Routing::RouteSet::MountedHelpers unless Rails.version < "3.1"
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,13 @@
1
+ module Bbq
2
+ class TestUser
3
+ module Eyes
4
+ def see?(*args)
5
+ args.all? { |arg| has_content?(arg) }
6
+ end
7
+
8
+ def not_see?(*args)
9
+ args.all? { |arg| has_no_content?(arg) }
10
+ end
11
+ end
12
+ end
13
+ 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
@@ -1,3 +1,3 @@
1
1
  module Bbq
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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
@@ -8,4 +8,7 @@ class HomeController < ApplicationController
8
8
  def miracle
9
9
  render :text => "MIRACLE"
10
10
  end
11
+
12
+ def ponycorns
13
+ end
11
14
  end
@@ -0,0 +1,13 @@
1
+ <ul id="unicorns">
2
+ <li>Pink</li>
3
+ </ul>
4
+
5
+ <ul id="ponies">
6
+ <li>Violet</li>
7
+ </ul>
8
+
9
+ <div id="new_pony">
10
+ <input type="text" name="color" value="" />
11
+ </div>
12
+
13
+ <a href="#">More ponycorns</a>
@@ -3,4 +3,5 @@ Dummy::Application.routes.draw do
3
3
  root :to => "home#index"
4
4
 
5
5
  match "/miracle" => "home#miracle"
6
+ match "/ponycorns" => "home#ponycorns"
6
7
  end
@@ -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.2
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-01 00:00:00.000000000 +02:00
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: &14361700 !ruby/object:Gem::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: *14361700
25
+ version_requirements: *6718740
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rails
28
- requirement: &14361160 !ruby/object:Gem::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: *14361160
36
+ version_requirements: *6717800
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3
39
- requirement: &14360560 !ruby/object:Gem::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: *14360560
47
+ version_requirements: *6716860
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rake
50
- requirement: &14360060 !ruby/object:Gem::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: *14360060
58
+ version_requirements: *6715100
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: rdoc
61
- requirement: &14359600 !ruby/object:Gem::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: *14359600
69
+ version_requirements: *6712180
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: devise
72
- requirement: &14359020 !ruby/object:Gem::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: *14359020
80
+ version_requirements: *6707800
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rspec-rails
83
- requirement: &14358560 !ruby/object:Gem::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: *14358560
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: -2429979834433993951
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: -2429979834433993951
207
+ hash: -2949951085360793970
192
208
  requirements: []
193
209
  rubyforge_project: bbq
194
210
  rubygems_version: 1.6.2