capybara-pompom 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94329e33a56f53a58aba9b2719ef4c15d5d0d862
4
- data.tar.gz: be05af7eb91bef9c2641950394d4df9c6a206fb8
3
+ metadata.gz: 384f1f13e9f8d37d7b6b35ee8f0958f3255d4b00
4
+ data.tar.gz: 6e4fd9bc648ddac7eaaf47c1eb7e274354f01643
5
5
  SHA512:
6
- metadata.gz: cb08c206ba4ad599368b9f5af03cbe4b7807f4333c264e07228b9ecbdf9ecb4336e66fbbdf31fc9f81d3071a3a4b27b6ae2451a796625e643541c37519cc9c23
7
- data.tar.gz: b5efeb018b579c6a3043062bb2603db7ae4e3eccf71ff3d810d76299df3815a2428585dd8f5ac43889dc80c4a51633c88ae7df26c8b6ea8ef11899dce45cd6fd
6
+ metadata.gz: 29677fe97e6dfdca498c256c520417649ea491668c90937311574c2c00dd945c746349ad2b3bf2025e796da504ec5047d7ad13952307540e28cfd74c53d43550
7
+ data.tar.gz: 32da401256d15376978e9e984e4ce7fe7e3f1a67250546557d9c90ac6d4eddf6a7ad9205579bd5648fc485e8ad8011b76c9efd30705c1dab6c6f608dcef754be
data/.travis.yml CHANGED
@@ -1,3 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.0
3
+ - 2.3.0
4
+ script: xvfb-run bundle exec rake
5
+ after_success: bundle exec codeclimate-test-reporter
data/Gemfile CHANGED
@@ -2,3 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in capybara-pompom.gemspec
4
4
  gemspec
5
+
6
+ gem "simplecov", "~> 0.12.0", require: false
7
+ gem "codeclimate-test-reporter", "~> 1.0.3", require: false
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Capybara::PomPom
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/capybara-pompom.svg)](http://badge.fury.io/rb/capybara-pompom)
3
+ [![Build Status](https://travis-ci.org/BaylorRae/capybara-pompom.svg?branch=master)](https://travis-ci.org/BaylorRae/capybara-pompom) [![Code Climate](https://codeclimate.com/github/BaylorRae/capybara-pompom/badges/gpa.svg)](https://codeclimate.com/github/BaylorRae/capybara-pompom) [![Test Coverage](https://codeclimate.com/github/BaylorRae/capybara-pompom/badges/coverage.svg)](https://codeclimate.com/github/BaylorRae/capybara-pompom/coverage)
4
4
 
5
5
  The goal of this gem is to create a DSL for the [Page Object
6
6
  Model][page_object_model].
@@ -44,7 +44,7 @@ class LoginPage < Capybara::PomPom::Page
44
44
  # login as a user
45
45
  def login_as(login, pass)
46
46
  username.set(login)
47
- password.set(password)
47
+ password.set(pass)
48
48
  login_button.click
49
49
  end
50
50
 
data/Rakefile CHANGED
@@ -1 +1,13 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require 'cucumber/rake/task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec) do |t|
6
+ t.verbose = false
7
+ t.ruby_opts = "-I./spec -rspec_helper"
8
+ t.rspec_opts = %w[--format progress]
9
+ end
10
+
11
+ Cucumber::Rake::Task.new
12
+
13
+ task default: [:spec, :cucumber]
@@ -19,13 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "capybara", "~> 2.5"
22
+ spec.add_dependency "capybara", "~> 2.3"
23
23
  spec.add_dependency "activesupport", "~> 4.2"
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.9"
26
- spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "bundler", "~> 1.11"
26
+ spec.add_development_dependency "rake", "~> 11.3"
27
27
 
28
28
  spec.add_development_dependency "rspec", "~> 3.3"
29
29
  spec.add_development_dependency "cucumber", "~> 2.0"
30
- spec.add_development_dependency "selenium-webdriver", "~> 2.46"
30
+ spec.add_development_dependency "capybara-webkit", "~> 1.11"
31
31
  end
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Components Page</title>
5
+
6
+ </head>
7
+ <body>
8
+
9
+ <div class="container">
10
+ <h1>Components Page</h1>
11
+
12
+ <h3 class="overview-title">Overview outside component</h3>
13
+ <p class="overview-description">Overview description outside component</p>
14
+
15
+ <div class="overview">
16
+ <h3 class="overview-title">An Overview</h3>
17
+ <p class="overview-description">This section is a single component</p>
18
+ </div>
19
+
20
+ <div class="online-status">
21
+ <div class="online-status-user">
22
+ <h4 class="name">Bob Wiley</h4>
23
+ <span class="status">Online</span>
24
+ </div>
25
+
26
+ <div class="online-status-user">
27
+ <h4 class="name">Alice</h4>
28
+ <span class="status">Offline</span>
29
+ </div>
30
+
31
+ <div class="online-status-user">
32
+ <h4 class="name">Leo Marvin</h4>
33
+ <span class="status">Online</span>
34
+ </div>
35
+ </div>
36
+ </div>
37
+
38
+ </body>
39
+ </html>
40
+
41
+
42
+
@@ -1,4 +1,4 @@
1
- require "capybara"
1
+ require "capybara/dsl"
2
2
  require "capybara/pompom/version"
3
3
  require "active_support/core_ext/class/attribute"
4
4
 
@@ -7,6 +7,7 @@ module Capybara
7
7
  autoload :Page, "capybara/pompom/page"
8
8
  autoload :Finder, "capybara/pompom/finder"
9
9
  autoload :ElementFinder, "capybara/pompom/element_finder"
10
+ autoload :Component, "capybara/pompom/component"
10
11
  autoload :TableRow, "capybara/pompom/table_row"
11
12
  autoload :TableFinder, "capybara/pompom/table_finder"
12
13
  autoload :Table, "capybara/pompom/table"
@@ -0,0 +1,20 @@
1
+ module Capybara::PomPom
2
+ class Component
3
+ include Finder
4
+
5
+ attr_reader :component
6
+
7
+ def method_missing(name, *args)
8
+ if self.finders.has_key?(name)
9
+ return self.finders[name].get(component)
10
+ end
11
+
12
+ super
13
+ end
14
+
15
+ def initialize(component)
16
+ @component = component
17
+ end
18
+
19
+ end
20
+ end
@@ -11,10 +11,10 @@ module Capybara::PomPom
11
11
  # Initializes a new ElementFinder
12
12
  #
13
13
  # === Parameters
14
- # - +type+: the capybara finder. E.g. +find_css+, +find_link+, etc...
14
+ # - +type+: the capybara finder. E.g. +find+, +find_link+, etc...
15
15
  # - +locator+: the locator used by capybara to find element.
16
16
  # - +wrapper+ (optional): an instance to wrap the found element in.
17
- def initialize(type, locator, wrapper = nil)
17
+ def initialize(type, locator, wrapper: nil)
18
18
  @type = type
19
19
  @locator = locator
20
20
  @wrapper = wrapper
@@ -23,13 +23,19 @@ module Capybara::PomPom
23
23
  # Returns the Capybara::Element or +wrapper+ if defined.
24
24
  def get(scope = nil)
25
25
  scope ||= self
26
- element = scope.send(type, locator)
26
+ wrap_result(scope.send(type, locator))
27
+ end
28
+
29
+ private
30
+
31
+ def wrap_result(result)
32
+ return result if wrapper.nil?
27
33
 
28
- unless wrapper.nil?
29
- element = wrapper.new(element)
34
+ if result.is_a?(Capybara::Result)
35
+ return result.map { |r| wrapper.new(r) }
30
36
  end
31
37
 
32
- element
38
+ wrapper.new(result)
33
39
  end
34
40
 
35
41
  end
@@ -30,6 +30,15 @@ module Capybara::PomPom
30
30
  mod.extend Finder
31
31
  end
32
32
 
33
+ # Finds a node with +find+
34
+ #
35
+ # css :title, ".title"
36
+ #
37
+ # Returns a +Capybara::Node::Element+
38
+ def css(name, locator)
39
+ self.finders[name] = ElementFinder.new(:find, locator)
40
+ end
41
+
33
42
  # Finds a link through +find_link+
34
43
  #
35
44
  # link :login_link, "Log In"
@@ -59,11 +68,29 @@ module Capybara::PomPom
59
68
 
60
69
  # Finds a table through +find+
61
70
  #
62
- # table :products_table, "#products", TableRowWrapper
71
+ # table :products_table, "#products", row_wrapper: TableRowWrapper
63
72
  #
64
73
  # Returns a Table
65
- def table(name, locator, row_wrapper = nil)
66
- self.finders[name] = TableFinder.new(:find, locator, row_wrapper)
74
+ def table(name, locator, row_wrapper: nil)
75
+ self.finders[name] = TableFinder.new(:find, locator, wrapper: row_wrapper)
76
+ end
77
+
78
+ # Finds a component through +find+
79
+ #
80
+ # component :overview_component, "#overview"
81
+ #
82
+ # Returns a Component
83
+ def component(name, locator)
84
+ self.finders[name] = ElementFinder.new(:find, locator, wrapper: Component)
85
+ end
86
+
87
+ # Finds components through +all+
88
+ #
89
+ # components :statuses, ".status"
90
+ #
91
+ # Returns a Component
92
+ def components(name, locator, wrapper: nil)
93
+ self.finders[name] = ElementFinder.new(:all, locator, wrapper: wrapper)
67
94
  end
68
95
 
69
96
  end
@@ -19,8 +19,6 @@ module Capybara::PomPom
19
19
  def self.method_missing(name, *args) # :nodoc:
20
20
  page = new
21
21
  page.send(name, *args)
22
- page
23
22
  end
24
-
25
23
  end
26
24
  end
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module PomPom
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-pompom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Baylor Rae'
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-10 00:00:00.000000000 Z
11
+ date: 2017-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.5'
19
+ version: '2.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.5'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.9'
47
+ version: '1.11'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.9'
54
+ version: '1.11'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '11.3'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '11.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -95,19 +95,19 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: selenium-webdriver
98
+ name: capybara-webkit
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.46'
103
+ version: '1.11'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.46'
110
+ version: '1.11'
111
111
  description: A Capybara inspired DSL for page object models.
112
112
  email:
113
113
  - baylor@fastmail.com
@@ -126,10 +126,12 @@ files:
126
126
  - bin/setup
127
127
  - capybara-pompom.gemspec
128
128
  - cucumber.yml
129
+ - fixtures/html/components.html
129
130
  - fixtures/html/form.html
130
131
  - fixtures/html/links.html
131
132
  - fixtures/html/tables.html
132
133
  - lib/capybara/pompom.rb
134
+ - lib/capybara/pompom/component.rb
133
135
  - lib/capybara/pompom/element_finder.rb
134
136
  - lib/capybara/pompom/finder.rb
135
137
  - lib/capybara/pompom/page.rb
@@ -157,9 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
159
  version: '0'
158
160
  requirements: []
159
161
  rubyforge_project:
160
- rubygems_version: 2.2.2
162
+ rubygems_version: 2.5.1
161
163
  signing_key:
162
164
  specification_version: 4
163
165
  summary: A Capybara inspired DSL for page object models.
164
166
  test_files: []
165
- has_rdoc: