capybara-pompom 0.0.2 → 0.1.0

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 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: