domino 0.5.0 → 0.6.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: 3b2fc62eeaf1ab1a2ff6246839d6d312ef845b38
4
- data.tar.gz: 395182dd48dba139cde162499d33918274019e84
3
+ metadata.gz: 554cc2cc550cceacec189b1fcab208a2f530c3b4
4
+ data.tar.gz: 65dd95a5af9bfa19e04e38e3821cb016e01c8594
5
5
  SHA512:
6
- metadata.gz: 7aefa91bbd7757aec8b80dbe9466fd26b6c9fe676b82e6da9e48b20a38d43a1488246a95b3d5f5998a2d5a3a54f564efe2ac83f4db77d42effd35a19b25cf174
7
- data.tar.gz: 766c1df5a282ac53e4e26fd6137fcd396c0fe1aab39be5e9dc434ed30dd2ecb848308290733e29d0b76f8b73cd933c1de9b93fd5cd2c3eda8c79280db1b75e55
6
+ metadata.gz: 98a53738194cc39ab9734ceeb69209735f84bb7bec6c06f672b6243556bc4d18fa272b7d5a682ac3fc6264b086eb4b2f09dbc9fd0473b46c09575f0096e0f8e0
7
+ data.tar.gz: a65293c01ae787bc2df87372ad30b88d7f4b50a20156993e6d501493715e8ffd588e7f366ecec01d646eabdf76ea64466008a4cf8e8c610174e173c76ee7cd6a
@@ -2,5 +2,6 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
- - jruby-19mode
6
- - rbx-19mode
5
+ - 2.1.2
6
+ - jruby
7
+ - ruby
data/README.md CHANGED
@@ -11,6 +11,7 @@ define a selector and attributes:
11
11
  class Post < Domino
12
12
  selector '#posts .post'
13
13
  attribute :title # selector defaults to .title
14
+ attribute :author_name # selector defaults to .author-name
14
15
  attribute :body, '.post-body' # example of selector override
15
16
 
16
17
  # pass a block if you want to modify the value
@@ -61,6 +62,24 @@ access to the capybara node.
61
62
 
62
63
  For more information about using Capybara nodes, check [Capybara Documentation](https://github.com/jnicklas/capybara/blob/master/README.rdoc).
63
64
 
65
+ ## Dealing with Asynchronous Behavior
66
+
67
+ When working with Capybara drivers that support JavaScript, it may be
68
+ necessary to wait for elements to appear. Note that the following code
69
+ simply collects all `Account` dominos currently on the page and
70
+ returns the first:
71
+
72
+ Dom::Account.first # returns nil if account is displayed asynchronously
73
+
74
+ When you are waiting for a unique domino to appear, you can instead
75
+ use the `find!` method:
76
+
77
+ Dom::Account.find! # waits for matching element to appear
78
+
79
+ If no matching element appears, Capybara will raise an error telling
80
+ you about the expected selector. Depending on the
81
+ [`Capybara.match` option](https://github.com/jnicklas/capybara#strategy),
82
+ this will also raise an error if the selector matches multiple nodes.
64
83
 
65
84
  ## Integration with Cucumber
66
85
 
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "domino"
4
- gem.version = "0.5.0"
4
+ gem.version = "0.6.0"
5
5
  gem.platform = Gem::Platform::RUBY
6
6
  gem.authors = ["Nick Gauthier"]
7
7
  gem.email = ["ngauthier@gmail.com"]
@@ -59,6 +59,18 @@ class Domino
59
59
  map{|node| node}
60
60
  end
61
61
 
62
+ # Returns Domino for capybara node matching selector.
63
+ #
64
+ # Raises an error if no matching node is found. For drivers that
65
+ # support asynchronous behavior, this method waits for a matching
66
+ # node to appear.
67
+ def find!
68
+ if @selector.nil?
69
+ raise Domino::Error.new("You must define a selector")
70
+ end
71
+ new(Capybara.current_session.find(@selector))
72
+ end
73
+
62
74
  # Define the selector for this Domino
63
75
  #
64
76
  # module Dom
@@ -143,4 +143,20 @@ class DominoTest < MiniTest::Unit::TestCase
143
143
  def test_callback
144
144
  assert_equal 23, Dom::Person.find_by_name("Alice").age
145
145
  end
146
+
147
+ def test_find_bang
148
+ assert_equal '#receipt-72', Dom::Receipt.find!.id
149
+ end
150
+
151
+ def test_find_bang_without_match
152
+ assert_raises Capybara::ElementNotFound do
153
+ Dom::Animal.find!
154
+ end
155
+ end
156
+
157
+ def test_find_bang_without_selector
158
+ assert_raises Domino::Error do
159
+ Dom::NoSelector.find!
160
+ end
161
+ end
146
162
  end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: domino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Gauthier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-20 00:00:00.000000000 Z
11
+ date: 2014-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.4.0
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
26
  version: 0.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
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
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
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
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
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
68
  version: '0'
69
69
  description: "\n Make it easier to deal with UI elements by providing an\n interface
@@ -75,8 +75,8 @@ extensions: []
75
75
  extra_rdoc_files:
76
76
  - README.md
77
77
  files:
78
- - .gitignore
79
- - .travis.yml
78
+ - ".gitignore"
79
+ - ".travis.yml"
80
80
  - Gemfile
81
81
  - LICENSE.txt
82
82
  - README.md
@@ -94,17 +94,17 @@ require_paths:
94
94
  - lib
95
95
  required_ruby_version: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - '>='
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  requirements: []
106
106
  rubyforge_project:
107
- rubygems_version: 2.0.2
107
+ rubygems_version: 2.4.1
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: View abstraction for integration testing