capybara-pompom 0.0.1 → 0.0.2

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