capybara-pompom 0.0.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b892e92e2d72e313c5b27b00a3473362441ef7d
4
- data.tar.gz: 01a58659817db60ef5b3a858497ed2412ba26a38
3
+ metadata.gz: 94329e33a56f53a58aba9b2719ef4c15d5d0d862
4
+ data.tar.gz: be05af7eb91bef9c2641950394d4df9c6a206fb8
5
5
  SHA512:
6
- metadata.gz: 14ae30da091a3c5d08e16af7c655446dd90d56d7706195bd4b3562f340765d25788ea131b11d8f880c097d69251a5403313f3638380d73e7f91033f67a5a245e
7
- data.tar.gz: 75a6ffb99ab6c978c13a4a83d9f23063edaf1c8c83f925ad392b807ed7bda9a3349f6458e9da442963139c00e8e0238b7a23d6dd27d135b54164c26e995d46ac
6
+ metadata.gz: cb08c206ba4ad599368b9f5af03cbe4b7807f4333c264e07228b9ecbdf9ecb4336e66fbbdf31fc9f81d3071a3a4b27b6ae2451a796625e643541c37519cc9c23
7
+ data.tar.gz: b5efeb018b579c6a3043062bb2603db7ae4e3eccf71ff3d810d76299df3815a2428585dd8f5ac43889dc80c4a51633c88ae7df26c8b6ea8ef11899dce45cd6fd
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Capybara::PomPom
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/capybara-pompom.svg)](http://badge.fury.io/rb/capybara-pompom)
4
+
3
5
  The goal of this gem is to create a DSL for the [Page Object
4
6
  Model][page_object_model].
5
7
 
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Tables Page</title>
5
+
6
+ </head>
7
+ <body>
8
+
9
+ <div class="container">
10
+ <h1>Tables Page</h1>
11
+
12
+ <table id="example-table-1">
13
+ <thead>
14
+ <tr>
15
+ <th>Column 1 Header</th>
16
+ <th>Column 2 Header</th>
17
+ <th>Column 3 Header</th>
18
+ </tr>
19
+ </thead>
20
+ <tbody>
21
+ <tr>
22
+ <td>(row 1) column 1</td>
23
+ <td>(row 1) column 2</td>
24
+ <td>(row 1) column 3</td>
25
+ </tr>
26
+ <tr>
27
+ <td>(row 2) column 1</td>
28
+ <td>(row 2) column 2</td>
29
+ <td>(row 2) column 3</td>
30
+ </tr>
31
+ <tr>
32
+ <td>(row 3) column 1</td>
33
+ <td>(row 3) column 2</td>
34
+ <td>(row 3) column 3</td>
35
+ </tr>
36
+ </tbody>
37
+ </table>
38
+ </div>
39
+
40
+ </body>
41
+ </html>
42
+
43
+
@@ -21,8 +21,9 @@ module Capybara::PomPom
21
21
  end
22
22
 
23
23
  # Returns the Capybara::Element or +wrapper+ if defined.
24
- def get
25
- element = send(type, locator)
24
+ def get(scope = nil)
25
+ scope ||= self
26
+ element = scope.send(type, locator)
26
27
 
27
28
  unless wrapper.nil?
28
29
  element = wrapper.new(element)
@@ -57,5 +57,14 @@ module Capybara::PomPom
57
57
  self.finders[name] = ElementFinder.new(:find_button, locator)
58
58
  end
59
59
 
60
+ # Finds a table through +find+
61
+ #
62
+ # table :products_table, "#products", TableRowWrapper
63
+ #
64
+ # Returns a Table
65
+ def table(name, locator, row_wrapper = nil)
66
+ self.finders[name] = TableFinder.new(:find, locator, row_wrapper)
67
+ end
68
+
60
69
  end
61
70
  end
@@ -0,0 +1,20 @@
1
+ module Capybara::PomPom
2
+ class TableRowNotFound < Capybara::ElementNotFound; end
3
+
4
+ class Table
5
+ attr_reader :table, :row_wrapper
6
+
7
+ def initialize(table, row_wrapper = nil)
8
+ @table = table
9
+ @row_wrapper = row_wrapper || TableRow
10
+ end
11
+
12
+ def get_row(index)
13
+ row = table.find("tbody tr:nth-child(#{index})")
14
+ row_wrapper.new(row)
15
+ rescue Capybara::ElementNotFound => e
16
+ raise TableRowNotFound.new(e)
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ module Capybara::PomPom
2
+ # == Capybara::PomPom::TableFinder
3
+ #
4
+ # Wraps the Capybara::Node::Element in a Table
5
+ class TableFinder < ElementFinder
6
+
7
+ # Returns the found table with Table
8
+ def get
9
+ element = send(type, locator)
10
+ Table.new(element, wrapper)
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ module Capybara::PomPom
2
+ class TableRow < Struct.new(:row)
3
+ include Finder
4
+
5
+ def method_missing(name, *args)
6
+ if self.finders.has_key?(name)
7
+ return self.finders[name].get(row)
8
+ end
9
+
10
+ super
11
+ end
12
+
13
+ def self.column(name, options)
14
+ self.finders[name] = ElementFinder.new(:find, "td:nth-child(#{options.fetch(:at_index)})")
15
+ end
16
+
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module PomPom
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -7,5 +7,11 @@ 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 :TableRow, "capybara/pompom/table_row"
11
+ autoload :TableFinder, "capybara/pompom/table_finder"
12
+ autoload :Table, "capybara/pompom/table"
13
+
14
+ # exceptions
15
+ autoload :TableRowNotFound, "capybara/pompom/table"
10
16
  end
11
17
  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.1
4
+ version: 0.0.2
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-08-31 00:00:00.000000000 Z
11
+ date: 2015-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -128,10 +128,14 @@ files:
128
128
  - cucumber.yml
129
129
  - fixtures/html/form.html
130
130
  - fixtures/html/links.html
131
+ - fixtures/html/tables.html
131
132
  - lib/capybara/pompom.rb
132
133
  - lib/capybara/pompom/element_finder.rb
133
134
  - lib/capybara/pompom/finder.rb
134
135
  - lib/capybara/pompom/page.rb
136
+ - lib/capybara/pompom/table.rb
137
+ - lib/capybara/pompom/table_finder.rb
138
+ - lib/capybara/pompom/table_row.rb
135
139
  - lib/capybara/pompom/version.rb
136
140
  homepage: https://github.com/baylorrae/capybara-pompom
137
141
  licenses: