m0nkmaster_cucumber_salad 0.0.1

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.
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: []