domino 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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