domino 0.5.0 → 0.6.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: 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