watirsome 0.1.6 → 0.1.7

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.
@@ -1,7 +1,3 @@
1
1
  module Watirsome
2
- module Errors
3
-
4
- class CannotPluralizeError < StandardError; end
5
-
6
- end # Errors
2
+ CannotPluralizeError = Class.new(StandardError)
7
3
  end # Watirsome
@@ -1,11 +1,43 @@
1
1
  module Watirsome
2
+ #
3
+ # Initializes page class.
4
+ # Allows to define "#initialize_page" which will be called as page constructor.
5
+ # After page is initialized, iterates through region and initialize each of them.
6
+ #
7
+ # @example Page Initializer
8
+ # class Page
9
+ # include Watirsome
10
+ #
11
+ # attr_accessor :page_loaded
12
+ #
13
+ # def initialize_page
14
+ # self.page_loaded = true
15
+ # end
16
+ # end
17
+ #
18
+ # page = Page.new(browser)
19
+ # page.page_loaded
20
+ # #=> true
21
+ #
22
+ # @example Region Initializer
23
+ # module HeaderRegion
24
+ # def initialize_region
25
+ # self.page_loaded = true
26
+ # end
27
+ # end
28
+ #
29
+ # class Page
30
+ # include Watirsome
31
+ # include HeaderRegion
32
+ #
33
+ # attr_accessor :page_loaded
34
+ # end
35
+ #
36
+ # page = Page.new(browser)
37
+ # page.page_loaded
38
+ # #=> true
39
+ #
2
40
  module Initializers
3
-
4
- #
5
- # Initializes page class.
6
- # Allows to define "#initialize_page" which will be called as page constructor.
7
- # After page is initialized, iterates through region and initialize each of them.
8
- #
9
41
  def initialize(browser)
10
42
  @browser = browser
11
43
  initialize_page if respond_to?(:initialize_page)
@@ -16,9 +48,6 @@ module Watirsome
16
48
  # Iterates through definitions of "#initialize_region", thus implementing
17
49
  # polymorphic Ruby modules (i.e. page regions).
18
50
  #
19
- # Only works with modules matching "Watirsome.region_matcher" regexp.
20
- # @see Watirsome.region_matcher
21
- #
22
51
  def initialize_regions
23
52
  # regions cacher
24
53
  @initialized_regions ||= []
@@ -28,13 +57,12 @@ module Watirsome
28
57
  # initialize each module
29
58
  modules.each do |m|
30
59
  # check that constructor is defined and we haven't called it before
31
- if !@initialized_regions.include?(m) && m.instance_methods.include?(:initialize_region)
32
- m.instance_method(:initialize_region).bind(self).call
33
- # cache region
34
- @initialized_regions << m
35
- end
60
+ next if @initialized_regions.include?(m) || !m.instance_methods.include?(:initialize_region)
61
+
62
+ m.instance_method(:initialize_region).bind(self).call
63
+ # cache region
64
+ @initialized_regions << m
36
65
  end
37
66
  end
38
-
39
67
  end # Initializers
40
68
  end # Watirsome
@@ -1,3 +1,3 @@
1
1
  module Watirsome
2
- VERSION = '0.1.6'
2
+ VERSION = '0.1.7'.freeze
3
3
  end # Watirsome
@@ -0,0 +1,16 @@
1
+ <html>
2
+ <body>
3
+ <div class="container">Container</div>
4
+ <a href="http://www.google.com">Open Google</a>
5
+ <div>
6
+ <input type="text" placeholder="Enter your name" />
7
+ <select name="Country">
8
+ <option value="USA">USA</option>
9
+ <option value="Russia">Russia</option>
10
+ </select>
11
+ <input type="checkbox" name="I Agree" />
12
+ <input type="radio" name="sex" value="Male">
13
+ <input type="radio" name="sex" value="Female">
14
+ </div>
15
+ </body>
16
+ </html>
data/watirsome.gemspec CHANGED
@@ -1,4 +1,4 @@
1
- $:.push File.expand_path('../lib', __FILE__)
1
+ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
2
  require 'watirsome/version'
3
3
 
4
4
  Gem::Specification.new do |s|
@@ -13,14 +13,11 @@ Gem::Specification.new do |s|
13
13
 
14
14
  s.files = `git ls-files`.split("\n")
15
15
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
- s.require_paths = %w(lib)
16
+ s.require_paths = %w[lib]
18
17
 
19
18
  s.add_dependency 'watir-webdriver', '>= 0.6.9'
20
19
 
21
- s.add_development_dependency 'rspec'
20
+ s.add_development_dependency 'yard-doctest', '>= 0.1.5'
22
21
  s.add_development_dependency 'rake'
23
- s.add_development_dependency 'fuubar'
24
- s.add_development_dependency 'simplecov'
25
- s.add_development_dependency 'coveralls'
22
+ s.add_development_dependency 'rubocop'
26
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watirsome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-25 00:00:00.000000000 Z
11
+ date: 2016-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: watir-webdriver
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.6.9
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: yard-doctest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.1.5
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.1.5
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -53,35 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: fuubar
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
- - !ruby/object:Gem::Dependency
70
- name: simplecov
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: coveralls
56
+ name: rubocop
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - ">="
@@ -100,29 +72,20 @@ executables: []
100
72
  extensions: []
101
73
  extra_rdoc_files: []
102
74
  files:
103
- - ".coveralls.yml"
75
+ - ".rubocop.yml"
104
76
  - ".travis.yml"
105
77
  - CHANGELOG.md
106
78
  - Gemfile
107
79
  - LICENSE.md
108
80
  - README.md
109
81
  - Rakefile
82
+ - doctest_helper.rb
110
83
  - lib/watirsome.rb
111
84
  - lib/watirsome/accessors.rb
112
85
  - lib/watirsome/errors.rb
113
86
  - lib/watirsome/initializers.rb
114
87
  - lib/watirsome/version.rb
115
- - spec/lib/watirsome/accessors_spec.rb
116
- - spec/lib/watirsome/errors_spec.rb
117
- - spec/lib/watirsome/initializers_spec.rb
118
- - spec/lib/watirsome_spec.rb
119
- - spec/spec_helper.rb
120
- - spec/support/page.rb
121
- - spec/support/shared_examples/click_accessor.rb
122
- - spec/support/shared_examples/element_accessor.rb
123
- - spec/support/shared_examples/read_accessor.rb
124
- - spec/support/shared_examples/select_accessor.rb
125
- - spec/support/shared_examples/set_accessor.rb
88
+ - support/doctest.html
126
89
  - watirsome.gemspec
127
90
  homepage: http://github.com/p0deje/watirsome
128
91
  licenses: []
@@ -143,19 +106,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
106
  version: '0'
144
107
  requirements: []
145
108
  rubyforge_project:
146
- rubygems_version: 2.2.0
109
+ rubygems_version: 2.4.5.1
147
110
  signing_key:
148
111
  specification_version: 4
149
112
  summary: Awesome page objects with Watir
150
- test_files:
151
- - spec/lib/watirsome/accessors_spec.rb
152
- - spec/lib/watirsome/errors_spec.rb
153
- - spec/lib/watirsome/initializers_spec.rb
154
- - spec/lib/watirsome_spec.rb
155
- - spec/spec_helper.rb
156
- - spec/support/page.rb
157
- - spec/support/shared_examples/click_accessor.rb
158
- - spec/support/shared_examples/element_accessor.rb
159
- - spec/support/shared_examples/read_accessor.rb
160
- - spec/support/shared_examples/select_accessor.rb
161
- - spec/support/shared_examples/set_accessor.rb
113
+ test_files: []
114
+ has_rdoc:
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: 'travis-ci'
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Watirsome::Accessors do
4
- include_context :page
5
- include_context :element
6
-
7
- it_defines :element_accessor, %w(div a text_field select_list)
8
- it_defines :read_accessor, %w(div text_field select_list)
9
- it_defines :click_accessor, %w(a)
10
- it_defines :set_accessor, %w(text_field checkbox)
11
- it_defines :select_accessor, %w(select_list)
12
-
13
- it 'supports subtype custom locators' do
14
- element2 = double('element')
15
- expect(watir).to receive(:select_lists).with(id: 'select_list').and_return([element, element2])
16
- expect(element).to receive(:selected?).with('Test').and_return(true)
17
- expect(element2).to receive(:selected?).with('Test').and_return(false)
18
- expect(page.select_list8_select_list).to eq(element)
19
- end
20
- end
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Watirsome::Errors::CannotPluralizeError do
4
- it { should be_a(StandardError) }
5
- end
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Watirsome::Initializers do
4
- include_context :page
5
-
6
- describe '#initialze' do
7
- it 'does not initalize page if there is no constructor defined' do
8
- page = Page.dup
9
- page.class_eval { remove_method :initialize_page }
10
- expect(page).not_to receive(:initialize_page)
11
- page.new(watir)
12
- end
13
-
14
- it 'initializes page if there is constructor defined' do
15
- expect(page.instance_variable_get(:@initialized)).to eq(true)
16
- end
17
-
18
- it 'initalizes regions' do
19
- expect_any_instance_of(Page).to receive(:initialize_regions)
20
- Page.new(watir)
21
- end
22
- end
23
-
24
- describe '#initialize_regions' do
25
- it 'initalizes included regions' do
26
- expect(page.instance_variable_get(:@included_initialized)).to eq(1)
27
- end
28
-
29
- it 'initalizes extended regions' do
30
- expect(page.instance_variable_get(:@extended_initialized)).to eq(1)
31
- end
32
-
33
- it 'caches initalized regions' do
34
- page.initialize_regions
35
- expect(page.instance_variable_get(:@included_initialized)).to eq(1)
36
- end
37
- end
38
- end
@@ -1,109 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Watirsome do
4
- %w(readable clickable settable selectable).each do |method|
5
- describe ".#{method}" do
6
- it 'returns array of accessors' do
7
- accessors = described_class.send(method)
8
- expect(accessors).to be_an(Array)
9
- accessors.each do |accessor|
10
- expect(accessor).to be_a(Symbol)
11
- end
12
- end
13
-
14
- it 'allows to add custom accessors' do
15
- described_class.send(method) << :custom
16
- expect(described_class.send(method)).to include(:custom)
17
- end
18
- end
19
-
20
- describe ".#{method}?" do
21
- let(:tag) do
22
- case method
23
- when 'readable' then :div
24
- when 'clickable' then :button
25
- when 'settable' then :text_field
26
- when 'selectable' then :select_list
27
- end
28
- end
29
-
30
- it "returns true if element is #{method}" do
31
- expect(described_class.send(:"#{method}?", tag)).to eq(true)
32
- end
33
-
34
- it "returns false if element is not #{method}" do
35
- expect(described_class.send(:"#{method}?", :foo)).to eq(false)
36
- end
37
- end
38
- end
39
-
40
- describe '.watir_methods' do
41
- it 'returns array of watir container methods' do
42
- described_class.watir_methods.each do |method|
43
- expect(Watir::Container.instance_methods).to include(method)
44
- end
45
- end
46
- end
47
-
48
- describe '.watirsome?' do
49
- it 'returns true if method is watir-contained' do
50
- expect(described_class.watirsome?(:div)).to eq(true)
51
- end
52
-
53
- it 'returns false if method is not watir-contained' do
54
- expect(described_class.watirsome?(:foo)).to eq(false)
55
- end
56
- end
57
-
58
- describe '.plural?' do
59
- it 'returns true if watir-contained method is plural with "s" ending' do
60
- expect(described_class.plural?(:divs)).to eq(true)
61
- end
62
-
63
- it 'returns true if watir-contained method is plural with "es" ending' do
64
- expect(described_class.plural?(:checkboxes)).to eq(true)
65
- end
66
-
67
- it 'returns false if watir-contained method is singular' do
68
- expect(described_class.plural?(:div)).to eq(false)
69
- end
70
-
71
- it 'returns false if method is not watir-contained' do
72
- expect(described_class.plural?(:foo)).to eq(false)
73
- end
74
- end
75
-
76
- describe '.pluralize' do
77
- it 'pluralizes method name with "s"' do
78
- expect(described_class.pluralize(:div)).to eq(:divs)
79
- end
80
-
81
- it 'pluralizes method name with "es"' do
82
- expect(described_class.pluralize(:checkbox)).to eq(:checkboxes)
83
- end
84
-
85
- it 'raises error when cannot pluralizes method' do
86
- expect { described_class.pluralize(:foo) }.to raise_error(Watirsome::Errors::CannotPluralizeError)
87
- end
88
- end
89
-
90
- context 'when included' do
91
- include_context :page
92
-
93
- it 'adds accessor class methods' do
94
- expect(page.class).to respond_to(:div)
95
- end
96
-
97
- it 'does not add #extract_selector' do
98
- expect(page.class).not_to respond_to(:extract_selector)
99
- end
100
-
101
- it 'adds accessor instance methods' do
102
- expect(page.private_methods).to include(:grab_elements)
103
- end
104
-
105
- it 'adds regions initializer' do
106
- expect(page).to respond_to(:initialize_regions)
107
- end
108
- end
109
- end