henry-dummy 0.0.2

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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8f2f19c7501d5088e5b9fc17ce7a19b7327292d7
4
+ data.tar.gz: 376da1dff63fd957f386854c83274a0ecc31fd75
5
+ SHA512:
6
+ metadata.gz: 0b34fcace3568f495a488ea77680ed875e1ffd0801ec46f09ea34152e86737b96df2581a5caff0257836820aa5703ceddf03f18f9091f34fa7ec7551fab0b0e2
7
+ data.tar.gz: 0c66b5f914e3a445ea3138f1c37d34dd90335b641daa1921b249ecc0a3dffaa0d1b5f05dc0c3882e5d6dbbd01dc9e2ff86d4d8a819e53cf4e873962aa012aa53
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,78 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ henry-dummy (0.0.1)
5
+ henry-container
6
+ watir-webdriver
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ ansi (1.4.3)
12
+ builder (3.2.1)
13
+ childprocess (0.3.9)
14
+ ffi (~> 1.0, >= 1.0.11)
15
+ colorize (0.5.8)
16
+ cucumber (1.3.2)
17
+ builder (>= 2.1.2)
18
+ diff-lcs (>= 1.1.3)
19
+ gherkin (~> 2.12.0)
20
+ multi_json (~> 1.3)
21
+ diff-lcs (1.2.4)
22
+ ffi (1.8.1)
23
+ gherkin (2.12.0)
24
+ multi_json (~> 1.3)
25
+ hashie (2.0.5)
26
+ henry-container (0.1.36)
27
+ colorize
28
+ cucumber
29
+ mail
30
+ minitest-reporters
31
+ rake
32
+ rspec (~> 2)
33
+ trollop
34
+ mail (2.5.4)
35
+ mime-types (~> 1.16)
36
+ treetop (~> 1.4.8)
37
+ mime-types (1.23)
38
+ minitest (4.7.4)
39
+ minitest-reporters (0.14.20)
40
+ ansi
41
+ builder
42
+ minitest (>= 2.12, < 5.0)
43
+ powerbar
44
+ multi_json (1.7.4)
45
+ polyglot (0.3.3)
46
+ powerbar (1.0.11)
47
+ ansi (~> 1.4.0)
48
+ hashie (>= 1.1.0)
49
+ rake (10.0.4)
50
+ rspec (2.13.0)
51
+ rspec-core (~> 2.13.0)
52
+ rspec-expectations (~> 2.13.0)
53
+ rspec-mocks (~> 2.13.0)
54
+ rspec-core (2.13.1)
55
+ rspec-expectations (2.13.0)
56
+ diff-lcs (>= 1.1.3, < 2.0)
57
+ rspec-mocks (2.13.1)
58
+ rubyzip (0.9.9)
59
+ selenium-webdriver (2.33.0)
60
+ childprocess (>= 0.2.5)
61
+ multi_json (~> 1.0)
62
+ rubyzip
63
+ websocket (~> 1.0.4)
64
+ treetop (1.4.12)
65
+ polyglot
66
+ polyglot (>= 0.3.1)
67
+ trollop (2.0)
68
+ watir-webdriver (0.6.4)
69
+ selenium-webdriver (>= 2.18.0)
70
+ websocket (1.0.7)
71
+
72
+ PLATFORMS
73
+ ruby
74
+
75
+ DEPENDENCIES
76
+ henry-dummy!
77
+ rake
78
+ rspec
data/henry-context.yml ADDED
@@ -0,0 +1,3 @@
1
+ tasks:
2
+ - name: Ruby Crash Dummy
3
+ class_name: Henry::Task::DummyTask
@@ -0,0 +1,28 @@
1
+ Gem::Specification.new do |s|
2
+ s.authors = ['Roberto Decurnex']
3
+ s.date = '2013-05-24'
4
+ s.email = 'decurnex.roberto@gmail.com'
5
+ s.homepage = 'http://gitorious.despegar.it/henry-self-test/ruby-crash-dummy'
6
+ s.name = 'henry-dummy'
7
+ s.summary = 'Henry library to recreate testing scenarios.'
8
+ s.version = '0.0.2'
9
+
10
+ s.require_paths = ['lib']
11
+
12
+ s.files = [
13
+ 'Gemfile',
14
+ 'Gemfile.lock',
15
+ 'henry-context.yml',
16
+ 'lib/henry.rb',
17
+ 'lib/henry/dummy.rb',
18
+ 'lib/henry/navigator.rb',
19
+ 'lib/henry/task/dummy_task.rb',
20
+ 'henry-dummy.gemspec'
21
+ ]
22
+
23
+ s.add_dependency 'henry-container'
24
+ s.add_dependency 'watir-webdriver'
25
+
26
+ s.add_development_dependency 'rake'
27
+ s.add_development_dependency 'rspec'
28
+ end
data/lib/henry.rb ADDED
@@ -0,0 +1,4 @@
1
+ require_relative 'henry/dummy'
2
+
3
+ module Henry
4
+ end
@@ -0,0 +1,104 @@
1
+ require 'bundler/setup'
2
+ require 'fileutils'
3
+ require 'henry/container'
4
+
5
+ require_relative 'navigator'
6
+ require_relative 'task/dummy_task'
7
+
8
+ module Henry
9
+
10
+ # Henry Dummy class holding methods to emulate testing behaviours.
11
+ class Dummy
12
+
13
+ # Collection of possibleexceptions to be thrown by the #browser method.
14
+ module BrowserException
15
+ # Exception thrown whenever the title comparison fails.
16
+ class TitleMismatch < Exception; end
17
+ end
18
+
19
+ # @param [Henry::Task] task the task to play with.
20
+ def initialize(task)
21
+ @task = task
22
+ end
23
+
24
+ # Opens a browser, navigate the given url and asserts the page title.
25
+ #
26
+ # @param [String,Symbol] driver the web driver name to be used.
27
+ # @param [String] url the url to navigate.
28
+ # @param [String] text the expected title name (or partial name).
29
+ def browser(driver, url, text)
30
+ navigator = Henry::Navigator.new(driver)
31
+
32
+ title = navigator.navigate(url).title
33
+
34
+ navigator.close
35
+
36
+ raise BrowserException::TitleMismatch if !title.include?(text)
37
+ end
38
+
39
+ # Produces CPU usage fot the given amount of time.
40
+ #
41
+ # @param [Integer] seconds how long the CPU will be used.
42
+ # @param [Integer] interval amount of CPU cycles before slowing down.
43
+ def cpu(seconds, interval=nil)
44
+ Timeout::timeout(seconds) do
45
+ loop do
46
+ slow_down(interval) if interval
47
+ end
48
+ end
49
+
50
+ rescue Timeout::Error
51
+ end
52
+
53
+ # Creates a file (and its path) adn writes the given content.
54
+ #
55
+ # @param [String] name the file name.
56
+ # @param [String] path the target file path.
57
+ # @param [String] content the content to be written in the file content the content to be written in the file.
58
+ def file(name, path, content)
59
+ FileUtils.mkpath(path)
60
+
61
+ File.open("#{path}/#{name}", 'w') do |file|
62
+ file.write(content)
63
+ end
64
+ end
65
+
66
+ # Overwrites the execution message with the give value.
67
+ #
68
+ # @param [String] message the message to set into the execution.
69
+ def message(message)
70
+ @task.execution.message = message
71
+ end
72
+
73
+ # Overwrites the execution code with the given value.
74
+ #
75
+ # @param [String] code the code to set into the execution.
76
+ def return_code(code)
77
+ @task.execution.code = code
78
+ end
79
+
80
+ # Raises an exception
81
+ def runtime_error
82
+ raise Exception
83
+ end
84
+
85
+ # Sleeps the process for the given amount for seconds.
86
+ #
87
+ # @param [Integer] seconds how long the process will sleep.
88
+ def sleep(seconds)
89
+ Kernel.sleep(seconds)
90
+ end
91
+
92
+ private
93
+
94
+ # Sleeps the process every interva CPU cycles.
95
+ #
96
+ # @param [Integer] interval amount of CPU cycles before sleep should be called.
97
+ def slow_down(interval)
98
+ interval.times {}
99
+ Kernel.sleep(0.99)
100
+ end
101
+
102
+ end
103
+
104
+ end
@@ -0,0 +1,45 @@
1
+ require 'watir-webdriver'
2
+
3
+ module Henry
4
+
5
+ # Defines a common interface for managing bowsers.
6
+ class Navigator
7
+
8
+ def initialize(driver)
9
+ @driver = driver
10
+ end
11
+
12
+ # Closes the curretn browser
13
+ def close
14
+ browser.close
15
+ end
16
+
17
+ # Navigates the given URL
18
+ #
19
+ # @param [String] ulr the target URL.
20
+ # @return [Henry::Navigator] enabling chaining methods.
21
+ def navigate(url)
22
+ browser.goto(url)
23
+
24
+ return self
25
+ end
26
+
27
+ # Returns the curretn browser title.
28
+ #
29
+ # @return [String] the browser title.
30
+ def title
31
+ browser.title
32
+ end
33
+
34
+ private
35
+
36
+ # Initialze and returns a browser instance.
37
+ #
38
+ # @return [Watir::Browser] the browser instance.
39
+ def browser
40
+ @browser ||= Watir::Browser.new(@driver)
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,46 @@
1
+ module Henry
2
+
3
+ class Task
4
+
5
+ class DummyTask < Task
6
+
7
+ # Configures the Task.
8
+ #
9
+ # @param [Hash] params the task params.
10
+ # @param [Hash] extended_context task extended context.
11
+ def configure(params, extended_context={})
12
+ @actions = (params['actions'] || []).collect do |action|
13
+ OpenStruct.new({
14
+ command: action['type'].downcase.to_sym,
15
+ params: action['arguments']
16
+ })
17
+ end
18
+ end
19
+
20
+ # Process the params and seets the execution params based on them.
21
+ def execute
22
+ abort 'You must configure the task before execution.' if @actions.nil?
23
+
24
+ dummy = Henry::Dummy.new(self)
25
+
26
+ @actions.each do |action|
27
+ dummy.send(action.command, *action.params)
28
+ end
29
+
30
+ self.execution.code ||= 'OK'
31
+ self.execution.message ||= 'OK'
32
+ self.execution.log ||= []
33
+ self.execution.output ||= 'OK'
34
+ rescue Exception => e
35
+ self.execution.code ||= 'ERROR'
36
+ self.execution.message ||= e.message
37
+ self.execution.log ||= []
38
+ self.execution.backtrace ||= e.backtrace
39
+ self.execution.output ||= 'ERROR'
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: henry-dummy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Roberto Decurnex
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: henry-container
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: watir-webdriver
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description:
70
+ email: decurnex.roberto@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - Gemfile
76
+ - Gemfile.lock
77
+ - henry-context.yml
78
+ - lib/henry.rb
79
+ - lib/henry/dummy.rb
80
+ - lib/henry/navigator.rb
81
+ - lib/henry/task/dummy_task.rb
82
+ - henry-dummy.gemspec
83
+ homepage: http://gitorious.despegar.it/henry-self-test/ruby-crash-dummy
84
+ licenses: []
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.0.3
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: Henry library to recreate testing scenarios.
106
+ test_files: []
107
+ has_rdoc: