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 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
@@ -1,9 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.8.7
4
3
  - 1.9.3
5
- - jruby-18mode
4
+ - 2.0.0
6
5
  - jruby-19mode
7
- - rbx-18mode
8
6
  - rbx-19mode
9
-
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Domino [![Build Status](http://travis-ci.org/ngauthier/domino.png)](http://travis-ci.org/ngauthier/domino)
1
+ # Domino [![Build Status](https://travis-ci.org/ngauthier/domino.png?branch=master)](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
@@ -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.3.1"
4
+ gem.version = "0.4.0"
5
5
  gem.platform = Gem::Platform::RUBY
6
6
  gem.authors = ["Nick Gauthier"]
7
7
  gem.email = ["ngauthier@gmail.com"]
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.to_sym
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({:name => 'Alice', :biography => 'Alice is fun', :favorite_color => 'Blue'}, Dom::Person.first.attributes)
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.3.1
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: 2012-12-19 00:00:00.000000000 Z
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: ! "\n Make it easier to deal with UI elements by providing an\n interface
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: 1.8.23
108
+ rubygems_version: 2.0.0
125
109
  signing_key:
126
- specification_version: 3
110
+ specification_version: 4
127
111
  summary: View abstraction for integration testing
128
112
  test_files:
129
113
  - test/domino_test.rb