m0nkmaster_cucumber_salad 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmI1NTBiMzRjZGE3MDUyYTY4MTBkODdmZDBiMWI0OTA1NDNiYjMwNQ==
5
+ data.tar.gz: !binary |-
6
+ NWJmOTQ4N2MzNGM1NmRlNjU5NWQ4MmU1MWU2ZjEyMTM3OWQxMzcyMg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ODhkNDVmZjhiMjIwNGIzOGE0ZGFiNGFkNGZmMThiOTQ4ZWQ4YTU5ZTQyN2Y4
10
+ N2IyNmU4MTgyZTRjYmUwZjVlYjYyZjUyYzVkODc0NzliMmE1NzU4MTExM2Ez
11
+ MTFkYmYyODJlNDA1OTkwZjc0NzlkMmM4NWVmYzkxYjViYTU3MzU=
12
+ data.tar.gz: !binary |-
13
+ MWQ3Y2E4ZmMzNjIxYTgyODI0ZjA5ZTM2ODU4ZDc4N2E2OTc1Mjk1MzBlYzQ2
14
+ MDM0N2JlMmQwMjM0MDNjNTdjNDk5YmQ3OTQ5OGE4N2UwNjkxOGYxZDIyNjU3
15
+ NDRhZjMzZjIxNTQyNWUzMDcyNTg2ZWJiYjI0M2QyZTc0YjkxMjM=
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -0,0 +1,11 @@
1
+ Before do
2
+ Helper::Stub.clear
3
+ end
4
+
5
+ Before "@sleep" do
6
+ @sleep_enabled = true
7
+ end
8
+
9
+ After "@sleep" do
10
+ @sleep_enabled = false
11
+ end
@@ -0,0 +1,14 @@
1
+ Capybara.register_driver :blackberry do |app|
2
+ driver = Capybara::Poltergeist::Driver.new(app,
3
+ :window_size => [220,200],
4
+ :phantomjs_options => %w(--load-images=no --local-storage-quota=0 --proxy-type=none),
5
+ :inspector => true,
6
+ :js_errors => false
7
+ )
8
+ Helper::Driver.register(
9
+ :blackberry,
10
+ :poltergeist,
11
+ "BlackBerry8530/5.0.0.337 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/105"
12
+ )
13
+ driver
14
+ end
@@ -0,0 +1,3 @@
1
+ Capybara.register_driver :firefox do |app|
2
+ Capybara::Selenium::Driver.new(app, :browser => :firefox)
3
+ end
@@ -0,0 +1,13 @@
1
+ Capybara.register_driver :safari do |app|
2
+ driver = Capybara::Poltergeist::Driver.new(app,
3
+ :window_size => [1024,768],
4
+ :phantomjs_options => %w(--load-images=no --local-storage-quota=0 --proxy-type=none),
5
+ :inspector => true,
6
+ :js_errors => false
7
+ )
8
+ Helper::Driver.register(
9
+ :smartphone,
10
+ :poltergeist
11
+ )
12
+ driver
13
+ end
@@ -0,0 +1,29 @@
1
+ Capybara.register_driver :smartphone do |app|
2
+ driver = Capybara::Poltergeist::Driver.new(app,
3
+ :window_size => [320,480],
4
+ :phantomjs_options => %w(--load-images=no --local-storage-quota=0 --proxy-type=none),
5
+ :inspector => true,
6
+ :js_errors => false
7
+ )
8
+ Helper::Driver.register(
9
+ :smartphone,
10
+ :poltergeist,
11
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25"
12
+ )
13
+ driver
14
+ end
15
+
16
+ Capybara.register_driver :smartphone_landscape do |app|
17
+ driver = Capybara::Poltergeist::Driver.new(app,
18
+ :window_size => [480, 320],
19
+ :phantomjs_options => %w(--load-images=no --local-storage-quota=0 --proxy-type=none),
20
+ :inspector => true,
21
+ :js_errors => false
22
+ )
23
+ Helper::Driver.register(
24
+ :smartphone_landscape,
25
+ :poltergeist,
26
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B141 Safari/8536.25"
27
+ )
28
+ driver
29
+ end
@@ -0,0 +1,13 @@
1
+ Capybara.register_driver :tablet do |app|
2
+ driver = Capybara::Poltergeist::Driver.new(app,
3
+ :window_size => [1024,768],
4
+ :phantomjs_options => %w(--load-images=no --local-storage-quota=0 --proxy-type=none),
5
+ :inspector => true
6
+ )
7
+ Helper::Driver.register(
8
+ :tablet,
9
+ :poltergeist,
10
+ "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25"
11
+ )
12
+ driver
13
+ end
@@ -0,0 +1 @@
1
+ Dir[File.dirname(__FILE__) + "/drivers/*.rb"].each {|driver| require driver }
@@ -0,0 +1,62 @@
1
+ require 'cgi'
2
+ module Helper
3
+ module Cookie
4
+ def self.init_cookies
5
+ @cookies ||= {}
6
+ end
7
+
8
+ def self.all
9
+ @cookies
10
+ end
11
+
12
+ def self.add(key, value, options = {})
13
+ self.init_cookies
14
+ @cookies[key] = {
15
+ :value => value,
16
+ :options => options
17
+ }
18
+ end
19
+
20
+ def self.add_test_cookie(key, value)
21
+ key = 'test-' + self.base64_encode(key)
22
+ value = base64_encode value
23
+ self.add(key, value)
24
+ end
25
+
26
+ def self.send_to_driver(driver)
27
+ driver = Helper::Driver.get(driver)
28
+ if driver
29
+ self.set_cookies(driver)
30
+ end
31
+ end
32
+
33
+ def self.set_cookies(driver)
34
+ self.init_cookies
35
+ if driver[:driver] == :poltergeist
36
+ @cookies.keys.each do |key|
37
+ cookie = @cookies[key]
38
+ Capybara.current_session.driver.set_cookie(
39
+ key,
40
+ cookie[:value],
41
+ :domain => self.domain_for_cookie(cookie)
42
+ )
43
+ end
44
+ end
45
+ end
46
+
47
+ def self.domain_for_cookie(cookie)
48
+ if cookie[:options][:domain]
49
+ cookie[:options][:domain]
50
+ end
51
+ end
52
+
53
+ def self.base64_encode(key)
54
+ CGI.escape(Base64.encode64(key).gsub("\n", ""))
55
+ end
56
+
57
+ def self.reset
58
+ @cookies = nil
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,29 @@
1
+ module Helper
2
+ module Device
3
+ def use_device(device)
4
+ driver = driver_for_device(device)
5
+ self.set_driver(driver)
6
+ end
7
+
8
+ protected
9
+
10
+ def set_driver(driver)
11
+ Capybara.current_driver = driver
12
+ end
13
+
14
+ def default_drivers
15
+ {
16
+ :desktop => :firefox,
17
+ :tablet => :ipad,
18
+ :smartphone => :smartphone,
19
+ :feature_phone => :blackberry
20
+ }
21
+ end
22
+
23
+ def driver_for_device(device)
24
+ driver = ENV[device.to_s] || default_drivers[device]
25
+ raise "Driver '#{driver}' does not exist. Please define a driver for :#{driver} in drivers/#{driver}.rb" unless Capybara.drivers.keys.include?(driver)
26
+ driver
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,30 @@
1
+ module Helper
2
+ module Driver
3
+ def self.register(name, driver, useragent)
4
+ @drivers ||= {}
5
+ @drivers[name] = {
6
+ :driver => driver,
7
+ :useragent => useragent
8
+ }
9
+ end
10
+
11
+ def self.setup(driver)
12
+ driver = self.get(driver)
13
+ if driver
14
+ self.init_driver(driver)
15
+ end
16
+ end
17
+
18
+ def self.init_driver(driver)
19
+ if driver[:driver] == :poltergeist
20
+ Capybara.current_session.driver.headers = {"User-Agent" => driver[:useragent]}
21
+ end
22
+ end
23
+
24
+ def self.get(driver)
25
+ if @drivers and @drivers[driver]
26
+ @drivers[driver]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,65 @@
1
+ module Helper
2
+ module Environment
3
+
4
+ def host(prefix = 'pal')
5
+ app_host = "http://#{prefix}."
6
+ if self.env == "sandbox"
7
+ app_host << "sandbox.dev"
8
+ else
9
+ app_host << "#{self.env}"
10
+ end
11
+ "#{app_host}.bbc.co.uk"
12
+ end
13
+
14
+ def env
15
+ ENV["TARGET_ENV"] || "sandbox"
16
+ end
17
+
18
+ def stub_path
19
+ raise "Please set your stub path using Helper::Environment.stub_path = '/path'" unless @stub_path
20
+ FileUtils.mkdir_p(@stub_path) unless Dir.exists?(@stub_path)
21
+ @stub_path
22
+ end
23
+
24
+ def stub_path=(path)
25
+ @stub_path = path
26
+ end
27
+
28
+ def default_stub_path
29
+ raise "Please set your default stub path using Helper::Environment.default_stub_path = '/path'" unless @default_stub_path
30
+ FileUtils.mkdir_p(@default_stub_path) unless Dir.exists?(@default_stub_path)
31
+ @default_stub_path
32
+ end
33
+
34
+ def default_stub_path=(path)
35
+ @default_stub_path = path
36
+ end
37
+
38
+ def proxy
39
+ ENV["http_proxy"] || ""
40
+ end
41
+
42
+ def syd_proxy
43
+ "http://www-cache-syd.reith.bbc.co.uk:80"
44
+ end
45
+
46
+ def allow_driver_override?
47
+ true if ENV["device_override"]
48
+ end
49
+
50
+ def remote?
51
+ self.env != "sandbox"
52
+ end
53
+
54
+ module_function :host,
55
+ :env,
56
+ :stub_path,
57
+ :stub_path=,
58
+ :default_stub_path,
59
+ :default_stub_path=,
60
+ :proxy,
61
+ :syd_proxy,
62
+ :allow_driver_override?,
63
+ :remote?
64
+ end
65
+ end
@@ -0,0 +1,7 @@
1
+ module Helper
2
+ module Flagpole
3
+ def self.set(flagpole, value)
4
+ Helper::Cookie.add_test_cookie("fp-#{flagpole}", value)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ module Helper
2
+ module Sleep
3
+
4
+ def enable
5
+ @enable_sleep = true
6
+ end
7
+
8
+ def disable
9
+ @enable_sleep = false
10
+ end
11
+
12
+ def enable?
13
+ sleep 10000 if @enable_sleep
14
+ end
15
+
16
+ module_function :enable,
17
+ :disable,
18
+ :enable?
19
+
20
+ end
21
+ end
@@ -0,0 +1,84 @@
1
+ require 'json'
2
+ module Helper
3
+ module Stub
4
+
5
+ def self.clear
6
+ Dir.foreach self.stub_file_path do |file|
7
+ next if file == '.' or file == '..' or file == '.svn'
8
+ if File.exists?(file)
9
+ File.delete(File.join(self.stub_file_path, file))
10
+ end
11
+ end
12
+ end
13
+
14
+ def self.init_stubs
15
+ @stubs ||= {}
16
+ end
17
+
18
+ def self.register(key, value)
19
+ self.init_stubs
20
+ @stubs[key] = value
21
+ end
22
+
23
+ def self.register_default(key, value)
24
+ self.init_stubs
25
+ unless @stubs[key]
26
+ self.register(key, value)
27
+ end
28
+ end
29
+
30
+ def self.load_defaults
31
+ Dir.glob(File.join(Helper::Environment.default_stub_path, '**/*')).each do |file|
32
+ unless File.directory?(file)
33
+ value = JSON.load(File.read(file))
34
+ key = file.split('/').last
35
+ self.register_default(key, value)
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.create_key(class_name, method, parameters = nil)
41
+ Digest::MD5.hexdigest([
42
+ class_name,
43
+ method,
44
+ parameters
45
+ ].delete_if{|value| value == nil}.to_json)
46
+ end
47
+
48
+ def self.write
49
+ if @stubs and @stubs.size > 0
50
+ self.write_to_store
51
+ end
52
+ end
53
+
54
+ def self.write_to_store
55
+ if Helper::Environment.remote?
56
+ self.write_to_redis
57
+ else
58
+ self.write_to_file
59
+ end
60
+ end
61
+
62
+ def self.write_to_redis
63
+ @redis ||= Redis.new(:host => '176.34.255.217', :port => 6379)
64
+ @redis.flushall
65
+ @redis.pipelined do
66
+ @stubs.each_pair do |key, value|
67
+ @redis.set key, value.to_json
68
+ end
69
+ end
70
+ end
71
+
72
+ def self.write_to_file
73
+ @stubs.each_pair do |key, value|
74
+ path = self.stub_file_path + '/' + key
75
+ File.open(path, 'w') {|f| f.write(value.to_json) }
76
+ end
77
+ end
78
+
79
+ def self.stub_file_path
80
+ Helper::Environment.stub_path
81
+ end
82
+
83
+ end
84
+ end
@@ -0,0 +1,14 @@
1
+ module Helper
2
+ module Visit
3
+ def visit(*args)
4
+ current_driver = Capybara.current_driver
5
+ Helper::Stub.load_defaults
6
+ Helper::Stub.write
7
+ Capybara.current_session.visit "/"
8
+ Helper::Driver.setup current_driver
9
+ Helper::Cookie.send_to_driver current_driver
10
+ Helper::Sleep.enable?
11
+ Capybara.current_session.visit *args
12
+ end
13
+ end
14
+ end
@@ -0,0 +1 @@
1
+ Dir[File.dirname(__FILE__) + "/helper/*.rb"].each {|helper| require helper }
@@ -0,0 +1,8 @@
1
+ require 'cucumber_salad/before'
2
+ World(Helper::Cookie)
3
+ World(Helper::Device)
4
+ World(Helper::Environment)
5
+ World(Helper::Flagpole)
6
+ World(Helper::Sleep)
7
+ World(Helper::Stub)
8
+ World(Helper::Visit)
@@ -0,0 +1,4 @@
1
+ require 'capybara'
2
+ require 'capybara/poltergeist'
3
+ require 'cucumber_salad/helpers'
4
+ require 'cucumber_salad/drivers'
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: m0nkmaster_cucumber_salad
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rob MacDonald
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: cucumber
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.2.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 2.1.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.1.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: poltergeist
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.0.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: redis
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 3.0.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.2
83
+ description: A gem to manage the usage of cucumber/mocking/multiple devices
84
+ email:
85
+ - Matthew.Crouch@bbc.co.uk
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - lib/cucumber_salad/before.rb
91
+ - lib/cucumber_salad/drivers/blackberry.rb
92
+ - lib/cucumber_salad/drivers/firefox.rb
93
+ - lib/cucumber_salad/drivers/safari.rb
94
+ - lib/cucumber_salad/drivers/smartphone.rb
95
+ - lib/cucumber_salad/drivers/tablet.rb
96
+ - lib/cucumber_salad/drivers.rb
97
+ - lib/cucumber_salad/helper/cookie.rb
98
+ - lib/cucumber_salad/helper/device.rb
99
+ - lib/cucumber_salad/helper/driver.rb
100
+ - lib/cucumber_salad/helper/environment.rb
101
+ - lib/cucumber_salad/helper/flagpole.rb
102
+ - lib/cucumber_salad/helper/sleep.rb
103
+ - lib/cucumber_salad/helper/stub.rb
104
+ - lib/cucumber_salad/helper/visit.rb
105
+ - lib/cucumber_salad/helpers.rb
106
+ - lib/cucumber_salad/world.rb
107
+ - lib/cucumber_salad.rb
108
+ - Gemfile
109
+ homepage:
110
+ licenses: []
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 2.0.3
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: Gem to ease the pain of managing capybara driver config and provide a home
132
+ for common utils and patches
133
+ test_files: []