page_record 1.0.1 → 1.0.3
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.
- data/CHANGES.md +27 -16
- data/Gemfile.lock +11 -11
- data/lib/page_record/attributes.rb +5 -1
- data/lib/page_record/base.rb +17 -2
- data/lib/page_record/inspector.rb +6 -3
- data/lib/page_record/version.rb +1 -1
- data/spec/attributes_spec.rb +10 -0
- data/spec/base_spec.rb +17 -0
- data/spec/inspector_spec.rb +1 -0
- data/spec/support/shared_examples.rb +1 -1
- metadata +4 -4
data/CHANGES.md
CHANGED
@@ -1,28 +1,39 @@
|
|
1
1
|
#Changes
|
2
2
|
|
3
|
-
##
|
4
|
-
*
|
5
|
-
*
|
6
|
-
* Added `host_class` class method. Now you are able to set any class as a host class instead of beeing glued to xxxxPage`
|
3
|
+
##V1.0.3
|
4
|
+
* Added support for getting the Capybara element of a record.
|
5
|
+
* #id now returns an integer
|
7
6
|
|
8
|
-
##
|
9
|
-
*
|
7
|
+
##V1.0.2
|
8
|
+
* Added the id of the record to the inspector.
|
9
|
+
* inspecting uses the Array variant of Capybara and doesn't wait.
|
10
10
|
|
11
|
-
##
|
12
|
-
*
|
13
|
-
* Added other helpers to mke it easy to add `actions` and `attribute` tags
|
11
|
+
##V1.0.1
|
12
|
+
* Fixed a bug in action handling that causes page actions aoutside of a record te be noticed. Refactored the action handling.
|
14
13
|
|
15
|
-
##
|
16
|
-
|
17
|
-
* Added spec's for rails helpers
|
14
|
+
##V1.0.0
|
15
|
+
Released to production
|
18
16
|
|
19
17
|
##V0.5.0
|
20
18
|
* Added a rails project containing some cucumber features to demonstrate how it works. The example also shows how to use the rails and Formtastic helpers.
|
21
19
|
* Added support for form validations. Both in formtastic and in reading the errors
|
22
20
|
* added a `inspect` for both the class and for the instances. This is __very__ helpfull when dubugging.
|
23
21
|
|
24
|
-
##
|
25
|
-
|
22
|
+
##V0.4.0
|
23
|
+
* Added support for Formtasic
|
24
|
+
* Added spec's for rails helpers
|
25
|
+
|
26
|
+
##V0.3.0
|
27
|
+
* Added rails helpers to make it easy in rails to have a form, recognised by PageRecord
|
28
|
+
* Added other helpers to mke it easy to add `actions` and `attribute` tags
|
29
|
+
|
30
|
+
##V0.2.1
|
31
|
+
* Fixed a bug. PageRecord stack dumped when the class contained the name `Page`
|
32
|
+
|
33
|
+
##V0.2.0
|
34
|
+
* __BREAKING CHANGE__ Changed class name `PageRecord::PageRecord` to `PageRecord::Base`. Just a rename should be enough.
|
35
|
+
* Added `add_attributes` class method. This allows you to just add extra attributes instead of specifying them all
|
36
|
+
* Added `host_class` class method. Now you are able to set any class as a host class instead of beeing glued to xxxxPage`
|
37
|
+
|
38
|
+
|
26
39
|
|
27
|
-
##V1.0.1
|
28
|
-
Fixed a bug in action handling that causes page actions aoutside of a record te be noticed. Refactored the action handling.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
page_record (1.0.
|
4
|
+
page_record (1.0.3)
|
5
5
|
activemodel
|
6
6
|
activesupport
|
7
7
|
capybara (~> 2.1.0)
|
@@ -31,7 +31,7 @@ GEM
|
|
31
31
|
thread_safe (~> 0.1)
|
32
32
|
tzinfo (~> 0.3.37)
|
33
33
|
arel (4.0.0)
|
34
|
-
atomic (1.1.
|
34
|
+
atomic (1.1.13)
|
35
35
|
builder (3.1.4)
|
36
36
|
capybara (2.1.0)
|
37
37
|
mime-types (>= 1.16)
|
@@ -51,7 +51,7 @@ GEM
|
|
51
51
|
erubis (2.7.0)
|
52
52
|
ffi (1.9.0)
|
53
53
|
formatador (0.2.4)
|
54
|
-
guard (1.8.
|
54
|
+
guard (1.8.2)
|
55
55
|
formatador (>= 0.2.4)
|
56
56
|
listen (>= 1.0.0)
|
57
57
|
lumberjack (>= 1.0.2)
|
@@ -60,17 +60,17 @@ GEM
|
|
60
60
|
guard-rspec (3.0.2)
|
61
61
|
guard (>= 1.8)
|
62
62
|
rspec (~> 2.13)
|
63
|
-
i18n (0.6.
|
64
|
-
listen (1.
|
63
|
+
i18n (0.6.5)
|
64
|
+
listen (1.3.0)
|
65
65
|
rb-fsevent (>= 0.9.3)
|
66
66
|
rb-inotify (>= 0.9)
|
67
67
|
rb-kqueue (>= 0.2)
|
68
68
|
lumberjack (1.0.4)
|
69
69
|
method_source (0.8.2)
|
70
|
-
mime-types (1.
|
70
|
+
mime-types (1.24)
|
71
71
|
mini_portile (0.5.1)
|
72
72
|
minitest (4.7.5)
|
73
|
-
multi_json (1.7.
|
73
|
+
multi_json (1.7.9)
|
74
74
|
nokogiri (1.6.0)
|
75
75
|
mini_portile (~> 0.5.0)
|
76
76
|
pry (0.9.12.2)
|
@@ -89,7 +89,7 @@ GEM
|
|
89
89
|
thor (>= 0.18.1, < 2.0)
|
90
90
|
rake (10.1.0)
|
91
91
|
rb-fsevent (0.9.3)
|
92
|
-
rb-inotify (0.9.
|
92
|
+
rb-inotify (0.9.1)
|
93
93
|
ffi (>= 0.5.0)
|
94
94
|
rb-kqueue (0.2.0)
|
95
95
|
ffi (>= 0.5.0)
|
@@ -99,10 +99,10 @@ GEM
|
|
99
99
|
rspec-core (~> 2.14.0)
|
100
100
|
rspec-expectations (~> 2.14.0)
|
101
101
|
rspec-mocks (~> 2.14.0)
|
102
|
-
rspec-core (2.14.
|
103
|
-
rspec-expectations (2.14.
|
102
|
+
rspec-core (2.14.5)
|
103
|
+
rspec-expectations (2.14.2)
|
104
104
|
diff-lcs (>= 1.1.3, < 2.0)
|
105
|
-
rspec-mocks (2.14.
|
105
|
+
rspec-mocks (2.14.3)
|
106
106
|
rspec-rails (2.14.0)
|
107
107
|
actionpack (>= 3.0)
|
108
108
|
activesupport (>= 3.0)
|
@@ -25,7 +25,11 @@ module PageRecord
|
|
25
25
|
# @raise [AttributeNotFound] when the attribute is not found in the record
|
26
26
|
#
|
27
27
|
def read_attribute(attribute)
|
28
|
-
|
28
|
+
if block_given?
|
29
|
+
element = yield
|
30
|
+
else
|
31
|
+
element = send("#{attribute}?")
|
32
|
+
end
|
29
33
|
tag = element.tag_name
|
30
34
|
input_field?(tag) ? element.value : element.text
|
31
35
|
end
|
data/lib/page_record/base.rb
CHANGED
@@ -13,10 +13,25 @@ module PageRecord
|
|
13
13
|
def initialize(id = nil, selector = nil, filter = nil)
|
14
14
|
@page = self.class.page
|
15
15
|
@type = self.class.instance_variable_get('@type')
|
16
|
-
@id = id.
|
16
|
+
@id = id.to_i if id
|
17
17
|
find_record(selector, filter)
|
18
18
|
end
|
19
19
|
|
20
|
+
##
|
21
|
+
# Return the Capybara element containg the record
|
22
|
+
#
|
23
|
+
# Example:
|
24
|
+
#
|
25
|
+
# ```ruby
|
26
|
+
# team_1 = TeamPage.find(1) # Get the first team
|
27
|
+
# team_1.element? # access the Capybara context
|
28
|
+
# end
|
29
|
+
# ```
|
30
|
+
#
|
31
|
+
def element?
|
32
|
+
@record
|
33
|
+
end
|
34
|
+
|
20
35
|
##
|
21
36
|
# Set's the default selector for this class
|
22
37
|
#
|
@@ -274,7 +289,7 @@ module PageRecord
|
|
274
289
|
begin
|
275
290
|
context = self.class.context_for_selector(selector)
|
276
291
|
@record = context.find("[data-#{@type}-id#{id_text}]#{filter}")
|
277
|
-
@id = @record["data-#{@type}-id"] if @id.blank?
|
292
|
+
@id = @record["data-#{@type}-id"].to_i if @id.blank?
|
278
293
|
rescue Capybara::Ambiguous
|
279
294
|
raise MultipleRecords, "Found multiple #{@type} record with id #{@id} on page"
|
280
295
|
rescue Capybara::ElementNotFound
|
@@ -20,12 +20,15 @@ module PageRecord
|
|
20
20
|
attributes = {}
|
21
21
|
self.class.attributes.each do | attribute|
|
22
22
|
begin
|
23
|
-
attributes[attribute] =
|
24
|
-
|
23
|
+
attributes[attribute] = read_attribute(attribute) do
|
24
|
+
@record.all("[data-attribute-for='#{attribute}']").first
|
25
|
+
end
|
26
|
+
rescue NoMethodError
|
25
27
|
attributes[attribute] = '--not found on page--'
|
26
28
|
end
|
27
29
|
end
|
28
|
-
|
30
|
+
attributes['id'] = id
|
31
|
+
attributes
|
29
32
|
end
|
30
33
|
|
31
34
|
module ClassMethods
|
data/lib/page_record/version.rb
CHANGED
data/spec/attributes_spec.rb
CHANGED
@@ -4,6 +4,16 @@ describe PageRecord::Attributes do
|
|
4
4
|
|
5
5
|
include_context "default context"
|
6
6
|
|
7
|
+
describe "#id" do
|
8
|
+
|
9
|
+
subject { TeamPage.find(1) }
|
10
|
+
include_context "page with single table with 3 records"
|
11
|
+
|
12
|
+
it "returns the id as an integer" do
|
13
|
+
expect(subject.id).to eq 1
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
7
17
|
describe "#... valid attribute getter" do
|
8
18
|
|
9
19
|
subject { TeamPage.find(1) }
|
data/spec/base_spec.rb
CHANGED
@@ -207,6 +207,23 @@ describe PageRecord::Base do
|
|
207
207
|
|
208
208
|
end
|
209
209
|
|
210
|
+
describe "record.element?" do
|
211
|
+
|
212
|
+
subject { TeamPage.find().element? }
|
213
|
+
|
214
|
+
context "record on the page" do
|
215
|
+
before do
|
216
|
+
visit '/page-one-record'
|
217
|
+
end
|
218
|
+
|
219
|
+
it "returns the capybara element containing the record" do
|
220
|
+
expect(subject.class).to eq Capybara::Node::Element
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
|
210
227
|
describe "found bugs" do
|
211
228
|
|
212
229
|
describe "class name contains word page but doens't exist" do
|
data/spec/inspector_spec.rb
CHANGED
@@ -61,6 +61,7 @@ describe PageRecord::Inspector do
|
|
61
61
|
subject { TeamPage.find(1).inspect }
|
62
62
|
|
63
63
|
it 'returns all attributes' do
|
64
|
+
expect(subject[:attributes]['id']).to eq 1
|
64
65
|
expect(subject[:attributes]['ranking']).to eq '1'
|
65
66
|
expect(subject[:attributes]['name']).to eq 'Ajax'
|
66
67
|
expect(subject[:attributes]['points']).to eq '10'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -293,7 +293,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
293
293
|
version: '0'
|
294
294
|
segments:
|
295
295
|
- 0
|
296
|
-
hash:
|
296
|
+
hash: 1953905507343366230
|
297
297
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
298
|
none: false
|
299
299
|
requirements:
|
@@ -302,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
302
302
|
version: '0'
|
303
303
|
segments:
|
304
304
|
- 0
|
305
|
-
hash:
|
305
|
+
hash: 1953905507343366230
|
306
306
|
requirements: []
|
307
307
|
rubyforge_project:
|
308
308
|
rubygems_version: 1.8.24
|