domino 0.3.1 → 0.4.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 +7 -0
- data/.travis.yml +1 -4
- data/README.md +10 -1
- data/domino.gemspec +1 -1
- data/lib/domino.rb +18 -3
- data/test/domino_test.rb +10 -1
- metadata +16 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e43e2a3c57d275789d53690b47d655b8c00a1a8b
|
4
|
+
data.tar.gz: 33c195eeed332b154c3170d73218050e7b14fa10
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 51e71979470739a788bfc99ade82b49fec57a9a180f7e250f08ab9c663d767b8f31ff7228f2965bfec4732a8cfa40eb85a5d22de7f9e7a2b12917f336d479cb8
|
7
|
+
data.tar.gz: 88a129ced9ae19bd15126eeec11e17c91671e9c8398241962d99e7e909b03bd941a9bab589695c682d90c55d382c10d51e9109ac703bd10dfdcfc51b73274ac7
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Domino [](https://travis-ci.org/ngauthier/domino)
|
2
2
|
|
3
3
|
View abstraction for integration testing
|
4
4
|
|
@@ -12,6 +12,15 @@ define a selector and attributes:
|
|
12
12
|
selector '#posts .post'
|
13
13
|
attribute :title # selector defaults to .title
|
14
14
|
attribute :body, '.post-body' # example of selector override
|
15
|
+
|
16
|
+
# pass a block if you want to modify the value
|
17
|
+
attribute :comments do |text|
|
18
|
+
text.to_i
|
19
|
+
end
|
20
|
+
|
21
|
+
attribute :posted_at do |text|
|
22
|
+
Date.parse(text)
|
23
|
+
end
|
15
24
|
end
|
16
25
|
end
|
17
26
|
|
data/domino.gemspec
CHANGED
data/lib/domino.rb
CHANGED
@@ -7,6 +7,11 @@ require 'capybara/dsl'
|
|
7
7
|
# selector '#posts .post'
|
8
8
|
# attribute :title # selector defaults to .title
|
9
9
|
# attribute :body, '.post-body' # example of selector override
|
10
|
+
#
|
11
|
+
# # accepts blocks as callbacks these are run only if attribute exists
|
12
|
+
# attribute :comments do |text|
|
13
|
+
# text.to_i
|
14
|
+
# end
|
10
15
|
# end
|
11
16
|
# end
|
12
17
|
#
|
@@ -69,6 +74,10 @@ class Domino
|
|
69
74
|
@attributes ||= []
|
70
75
|
end
|
71
76
|
|
77
|
+
def callbacks
|
78
|
+
@callbacks ||= {}
|
79
|
+
end
|
80
|
+
|
72
81
|
# Define an attribute for this Domino
|
73
82
|
#
|
74
83
|
# module Dom
|
@@ -84,14 +93,20 @@ class Domino
|
|
84
93
|
# Dom::Post.all.first.title
|
85
94
|
# Dom::Post.find_by_title("First Post")
|
86
95
|
# Dom::Post.find_by_title(/^First/)
|
87
|
-
def attribute(attribute, selector = nil)
|
88
|
-
attributes << attribute
|
96
|
+
def attribute(attribute, selector = nil, &callback)
|
97
|
+
attributes << attribute
|
98
|
+
callbacks[attribute] = callback
|
89
99
|
|
90
100
|
selector ||= %{.#{attribute.to_s}}
|
91
101
|
|
92
102
|
class_eval %{
|
93
103
|
def #{attribute}
|
94
|
-
attribute(%{#{selector}})
|
104
|
+
value = attribute(%{#{selector}})
|
105
|
+
if value && self.class.callbacks[:#{attribute}].is_a?(Proc)
|
106
|
+
self.class.callbacks[:#{attribute}].call(value)
|
107
|
+
else
|
108
|
+
value
|
109
|
+
end
|
95
110
|
end
|
96
111
|
def self.find_by_#{attribute}(value)
|
97
112
|
find_by_attribute(%{#{selector}}, value)
|
data/test/domino_test.rb
CHANGED
@@ -18,11 +18,13 @@ class TestApplication
|
|
18
18
|
<h2 class='name'>Alice</h2>
|
19
19
|
<p class='bio'>Alice is fun</p>
|
20
20
|
<p class='fav-color'>Blue</p>
|
21
|
+
<p class='age'>23</p>
|
21
22
|
</div>
|
22
23
|
<div class='person'>
|
23
24
|
<h2 class='name'>Bob</h2>
|
24
25
|
<p class='bio'>Bob is smart</p>
|
25
26
|
<p class='fav-color'>Red</p>
|
27
|
+
<p class='age'>52</p>
|
26
28
|
</div>
|
27
29
|
<div class='person'>
|
28
30
|
<h2 class='name'>Charlie</h2>
|
@@ -55,6 +57,9 @@ class DominoTest < MiniTest::Unit::TestCase
|
|
55
57
|
attribute :name
|
56
58
|
attribute :biography, '.bio'
|
57
59
|
attribute :favorite_color, '.fav-color'
|
60
|
+
attribute :age do |text|
|
61
|
+
text.to_i
|
62
|
+
end
|
58
63
|
end
|
59
64
|
|
60
65
|
class Animal < Domino
|
@@ -123,6 +128,10 @@ class DominoTest < MiniTest::Unit::TestCase
|
|
123
128
|
end
|
124
129
|
|
125
130
|
def test_attributes
|
126
|
-
assert_equal({:
|
131
|
+
assert_equal({name: 'Alice', biography: 'Alice is fun', favorite_color: 'Blue', age: 23}, Dom::Person.first.attributes)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_callback
|
135
|
+
assert_equal 23, Dom::Person.find_by_name("Alice").age
|
127
136
|
end
|
128
137
|
end
|
metadata
CHANGED
@@ -1,81 +1,72 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: domino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Nick Gauthier
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-03-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: capybara
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.4.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 0.4.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: minitest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: simplecov
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
|
-
description:
|
69
|
+
description: "\n Make it easier to deal with UI elements by providing an\n interface
|
79
70
|
that decouples your tests from your views.\n "
|
80
71
|
email:
|
81
72
|
- ngauthier@gmail.com
|
@@ -97,33 +88,26 @@ files:
|
|
97
88
|
homepage: http://github.com/ngauthier/domino
|
98
89
|
licenses:
|
99
90
|
- MIT
|
91
|
+
metadata: {}
|
100
92
|
post_install_message:
|
101
93
|
rdoc_options: []
|
102
94
|
require_paths:
|
103
95
|
- lib
|
104
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
97
|
requirements:
|
107
|
-
- -
|
98
|
+
- - '>='
|
108
99
|
- !ruby/object:Gem::Version
|
109
100
|
version: '0'
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
hash: 2315885640870791480
|
113
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
102
|
requirements:
|
116
|
-
- -
|
103
|
+
- - '>='
|
117
104
|
- !ruby/object:Gem::Version
|
118
105
|
version: '0'
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
hash: 2315885640870791480
|
122
106
|
requirements: []
|
123
107
|
rubyforge_project:
|
124
|
-
rubygems_version:
|
108
|
+
rubygems_version: 2.0.0
|
125
109
|
signing_key:
|
126
|
-
specification_version:
|
110
|
+
specification_version: 4
|
127
111
|
summary: View abstraction for integration testing
|
128
112
|
test_files:
|
129
113
|
- test/domino_test.rb
|