page_record 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.
- data/CHANGES.md +5 -3
- data/Gemfile.lock +34 -1
- data/lib/page_record/base.rb +1 -1
- data/lib/page_record/formtastic.rb +69 -0
- data/lib/page_record/helpers.rb +4 -2
- data/lib/page_record/version.rb +1 -1
- data/lib/page_record.rb +8 -5
- data/page_record.gemspec +3 -0
- data/spec/helpers_spec.rb +149 -0
- data/spec/spec_helper.rb +7 -0
- metadata +55 -4
data/CHANGES.md
CHANGED
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
##V0.2.1
|
|
9
9
|
* Fixed a bug. PageRecord stack dumped when the class contained the name `Page`
|
|
10
10
|
|
|
11
|
-
|
|
12
11
|
##V0.3.0
|
|
13
|
-
* Fixed a bug. PageRecord stack dumped when the class contained the name `Page`
|
|
14
12
|
* Added rails helpers to make it easy in rails to have a form, recognised by PageRecord
|
|
15
|
-
* Added other helpers to mke it easy to add `actions` and `attribute` tags
|
|
13
|
+
* Added other helpers to mke it easy to add `actions` and `attribute` tags
|
|
14
|
+
|
|
15
|
+
##V0.4.0
|
|
16
|
+
* Added support for Formtasic
|
|
17
|
+
* Added spec's for rails helpers
|
data/Gemfile.lock
CHANGED
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
page_record (0.
|
|
4
|
+
page_record (0.4.0)
|
|
5
5
|
activesupport
|
|
6
6
|
capybara (~> 2.1.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
+
actionpack (4.0.0)
|
|
12
|
+
activesupport (= 4.0.0)
|
|
13
|
+
builder (~> 3.1.0)
|
|
14
|
+
erubis (~> 2.7.0)
|
|
15
|
+
rack (~> 1.5.2)
|
|
16
|
+
rack-test (~> 0.6.2)
|
|
17
|
+
activemodel (4.0.0)
|
|
18
|
+
activesupport (= 4.0.0)
|
|
19
|
+
builder (~> 3.1.0)
|
|
20
|
+
activerecord (4.0.0)
|
|
21
|
+
activemodel (= 4.0.0)
|
|
22
|
+
activerecord-deprecated_finders (~> 1.0.2)
|
|
23
|
+
activesupport (= 4.0.0)
|
|
24
|
+
arel (~> 4.0.0)
|
|
25
|
+
activerecord-deprecated_finders (1.0.3)
|
|
11
26
|
activesupport (4.0.0)
|
|
12
27
|
i18n (~> 0.6, >= 0.6.4)
|
|
13
28
|
minitest (~> 4.2)
|
|
14
29
|
multi_json (~> 1.3)
|
|
15
30
|
thread_safe (~> 0.1)
|
|
16
31
|
tzinfo (~> 0.3.37)
|
|
32
|
+
arel (4.0.0)
|
|
17
33
|
atomic (1.1.10)
|
|
34
|
+
builder (3.1.4)
|
|
18
35
|
capybara (2.1.0)
|
|
19
36
|
mime-types (>= 1.16)
|
|
20
37
|
nokogiri (>= 1.3.3)
|
|
@@ -29,6 +46,7 @@ GEM
|
|
|
29
46
|
simplecov (>= 0.7)
|
|
30
47
|
thor
|
|
31
48
|
diff-lcs (1.2.4)
|
|
49
|
+
erubis (2.7.0)
|
|
32
50
|
i18n (0.6.4)
|
|
33
51
|
mime-types (1.23)
|
|
34
52
|
mini_portile (0.5.0)
|
|
@@ -41,6 +59,11 @@ GEM
|
|
|
41
59
|
rack
|
|
42
60
|
rack-test (0.6.2)
|
|
43
61
|
rack (>= 1.0)
|
|
62
|
+
railties (4.0.0)
|
|
63
|
+
actionpack (= 4.0.0)
|
|
64
|
+
activesupport (= 4.0.0)
|
|
65
|
+
rake (>= 0.8.7)
|
|
66
|
+
thor (>= 0.18.1, < 2.0)
|
|
44
67
|
rake (10.1.0)
|
|
45
68
|
rest-client (1.6.7)
|
|
46
69
|
mime-types (>= 1.16)
|
|
@@ -52,6 +75,13 @@ GEM
|
|
|
52
75
|
rspec-expectations (2.13.0)
|
|
53
76
|
diff-lcs (>= 1.1.3, < 2.0)
|
|
54
77
|
rspec-mocks (2.13.1)
|
|
78
|
+
rspec-rails (2.13.2)
|
|
79
|
+
actionpack (>= 3.0)
|
|
80
|
+
activesupport (>= 3.0)
|
|
81
|
+
railties (>= 3.0)
|
|
82
|
+
rspec-core (~> 2.13.0)
|
|
83
|
+
rspec-expectations (~> 2.13.0)
|
|
84
|
+
rspec-mocks (~> 2.13.0)
|
|
55
85
|
simplecov (0.7.1)
|
|
56
86
|
multi_json (~> 1.0)
|
|
57
87
|
simplecov-html (~> 0.7.1)
|
|
@@ -72,9 +102,12 @@ PLATFORMS
|
|
|
72
102
|
ruby
|
|
73
103
|
|
|
74
104
|
DEPENDENCIES
|
|
105
|
+
actionpack
|
|
106
|
+
activerecord
|
|
75
107
|
bundler (~> 1.3)
|
|
76
108
|
coveralls
|
|
77
109
|
page_record!
|
|
78
110
|
rake
|
|
79
111
|
rspec
|
|
112
|
+
rspec-rails
|
|
80
113
|
sinatra
|
data/lib/page_record/base.rb
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
module Formtastic
|
|
2
|
+
|
|
3
|
+
module Inputs
|
|
4
|
+
module Base
|
|
5
|
+
module Html
|
|
6
|
+
|
|
7
|
+
alias_method :input_html_options_org, :input_html_options
|
|
8
|
+
|
|
9
|
+
#
|
|
10
|
+
# This is a replacement method for the original `input_html_options` method from `Formtastic`
|
|
11
|
+
# The only thing it does, is merge the `attribute_for` into the output. The `input_html_options` is called
|
|
12
|
+
# for all input methods
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
def input_html_options
|
|
16
|
+
self.extend(PageRecord::Helpers)
|
|
17
|
+
input_html_options_org.merge(attribute_for(@method))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
module Actions
|
|
25
|
+
module Buttonish
|
|
26
|
+
|
|
27
|
+
alias_method :extra_button_html_options_org, :extra_button_html_options
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# This is a replacement method for the original `extra_button_html_options` method from `Formtastic`
|
|
31
|
+
# The only thing it does, is merge the `action_for` into the output. The `extra_button_html_options` is called
|
|
32
|
+
# for all action methods
|
|
33
|
+
#
|
|
34
|
+
def extra_button_html_options
|
|
35
|
+
self.extend(PageRecord::Helpers)
|
|
36
|
+
extra_button_html_options_org.merge(action_for(@method))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
module Helpers
|
|
43
|
+
module FormHelper
|
|
44
|
+
|
|
45
|
+
alias_method :semantic_form_for_org, :semantic_form_for
|
|
46
|
+
|
|
47
|
+
#
|
|
48
|
+
# This is a replacement method for the original `semantic_form_for` method from `Formtastic`.
|
|
49
|
+
# The only thing it does, is merge the `form_record_for` into the output.
|
|
50
|
+
#
|
|
51
|
+
def semantic_form_for(record_or_name_or_array, *args, &proc)
|
|
52
|
+
self.extend(PageRecord::Helpers)
|
|
53
|
+
options = args.extract_options!
|
|
54
|
+
options||= {}
|
|
55
|
+
case record_or_name_or_array
|
|
56
|
+
when String, Symbol
|
|
57
|
+
object_name = record_or_name_or_array
|
|
58
|
+
else
|
|
59
|
+
object = record_or_name_or_array.is_a?(Array) ? record_or_name_or_array.last : record_or_name_or_array
|
|
60
|
+
raise ArgumentError, "First argument in form cannot contain nil or be empty" unless object
|
|
61
|
+
object_name = options[:as] || model_name_from_record_or_class(object).param_key
|
|
62
|
+
end
|
|
63
|
+
options = options.merge(html:form_record_for(object_name))
|
|
64
|
+
args << options
|
|
65
|
+
semantic_form_for_org(record_or_name_or_array, *args, &proc)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/lib/page_record/helpers.rb
CHANGED
|
@@ -33,7 +33,6 @@ module PageRecord
|
|
|
33
33
|
id = instance_eval("@#{type}.id")
|
|
34
34
|
end
|
|
35
35
|
id ||= 'new'
|
|
36
|
-
@type = type
|
|
37
36
|
Hash["data-#{type}-id",id]
|
|
38
37
|
end
|
|
39
38
|
|
|
@@ -172,4 +171,7 @@ module PageRecord
|
|
|
172
171
|
|
|
173
172
|
end
|
|
174
173
|
|
|
175
|
-
|
|
174
|
+
begin
|
|
175
|
+
ActionView::Base.send :include, PageRecord::Helpers
|
|
176
|
+
rescue NameError
|
|
177
|
+
end
|
data/lib/page_record/version.rb
CHANGED
data/lib/page_record.rb
CHANGED
|
@@ -7,10 +7,13 @@ require "page_record/attribute_accessors"
|
|
|
7
7
|
require "page_record/class_actions"
|
|
8
8
|
require "page_record/class_methods"
|
|
9
9
|
require "page_record/errors"
|
|
10
|
-
|
|
10
|
+
if defined?(ActionView::Base)
|
|
11
11
|
require "page_record/helpers"
|
|
12
12
|
require "page_record/form_builder"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
end
|
|
13
|
+
end
|
|
14
|
+
if defined?(Formtastic::Helpers::FormHelper)
|
|
15
|
+
require "page_record/formtastic"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
data/page_record.gemspec
CHANGED
|
@@ -21,7 +21,10 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
22
22
|
spec.add_development_dependency "rake"
|
|
23
23
|
spec.add_development_dependency "rspec"
|
|
24
|
+
spec.add_development_dependency "rspec-rails"
|
|
24
25
|
spec.add_development_dependency "sinatra"
|
|
26
|
+
spec.add_development_dependency "actionpack"
|
|
27
|
+
spec.add_development_dependency "activerecord"
|
|
25
28
|
# spec.add_development_dependency "debugger"
|
|
26
29
|
|
|
27
30
|
spec.add_dependency "capybara" , '~>2.1.0'
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
require 'action_view'
|
|
2
|
+
require_relative './spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "Rails helpers" do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
self.extend PageRecord::Helpers
|
|
8
|
+
self.extend ActionView::Helpers
|
|
9
|
+
self.extend ActionView::Helpers::FormHelper
|
|
10
|
+
self.extend ActionView::Helpers::FormTagHelper
|
|
11
|
+
self.extend ActionView::Helpers::UrlHelper
|
|
12
|
+
self.extend ActionView::Context
|
|
13
|
+
class Car; end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe '#form_record_for' do
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
context "without a variable argument" do
|
|
21
|
+
|
|
22
|
+
subject { form_record_for(:car)}
|
|
23
|
+
|
|
24
|
+
context "with a new record" do
|
|
25
|
+
|
|
26
|
+
before do
|
|
27
|
+
@car = stub_model(Car, :id => nil)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "returns a Hash with data-`type`-name=`new`" do
|
|
31
|
+
expect(subject).to eq( {'data-car-id' => 'new' })
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "with a saved record" do
|
|
36
|
+
|
|
37
|
+
before do
|
|
38
|
+
@car = stub_model(Car, :id => 10)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "returns a Hash with data-`type`-name=id" do
|
|
42
|
+
expect(subject).to eq( {'data-car-id' => 10 })
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context "with a variable argument" do
|
|
49
|
+
|
|
50
|
+
subject { form_record_for(:car, other_car)}
|
|
51
|
+
let(:other_car) { @other_car = stub_model(Car, :id => nil) }
|
|
52
|
+
|
|
53
|
+
context "with a new record" do
|
|
54
|
+
|
|
55
|
+
it "returns a Hash with data-`type`-name=`new`" do
|
|
56
|
+
expect(subject).to eq( {'data-car-id' => 'new' })
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context "with a saved record" do
|
|
61
|
+
|
|
62
|
+
let(:other_car) { @other_car = stub_model(Car, :id => 10) }
|
|
63
|
+
|
|
64
|
+
it "returns a Hash with data-`type`-name=id" do
|
|
65
|
+
expect(subject).to eq( {'data-car-id' => 10 })
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe '#attribute_for' do
|
|
74
|
+
subject { attribute_for('name')}
|
|
75
|
+
|
|
76
|
+
it "returns a Hash with data-attribute-for => 'attribute' " do
|
|
77
|
+
expect(subject).to eq({'data-attribute-for' => 'name'})
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe "#action_for" do
|
|
83
|
+
subject { action_for('submit')}
|
|
84
|
+
|
|
85
|
+
it "returns a Hash with data-action-for => 'attribute' " do
|
|
86
|
+
expect(subject).to eq({'data-action-for' => 'submit'})
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe "#attribute_tag_for" do
|
|
92
|
+
subject { attribute_tag_for(:td, :name)}
|
|
93
|
+
|
|
94
|
+
it "returns a tag with data-attribute-for='name' set" do
|
|
95
|
+
expect(subject).to eq "<td data-attribute-for=\"name\"></td>"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "#record_form_for" do
|
|
100
|
+
|
|
101
|
+
before do
|
|
102
|
+
@car = stub_model(Car, :id => 20)
|
|
103
|
+
def protect_against_forgery?; end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
subject {record_form_for(@car, :as => :car, :url => "/") {}}
|
|
107
|
+
|
|
108
|
+
it "returns a PageRecordFormBuilder" do
|
|
109
|
+
expect(subject).to include " data-car-id=\"20\" "
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
describe PageRecord::FormBuilder do
|
|
115
|
+
|
|
116
|
+
before do
|
|
117
|
+
@car = stub_model(Car, :id => 20, :name => 'Piet')
|
|
118
|
+
def protect_against_forgery?; end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
describe "#text_field" do
|
|
123
|
+
subject do
|
|
124
|
+
record_form_for(@car, :as => :car, :url => "/") do |f|
|
|
125
|
+
f.text_field :name
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "automaticaly renders the data-attribute-for='name' html-tag" do
|
|
130
|
+
expect(subject).to include " data-attribute-for=\"name\" "
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
describe "#submit" do
|
|
136
|
+
subject do
|
|
137
|
+
record_form_for(@car, :as => :car, :url => "/") do |f|
|
|
138
|
+
f.submit "Save"
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "automaticaly renders the data-action-for='submit' html-tag" do
|
|
143
|
+
expect(subject).to include " data-action-for=\"save\" "
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
end
|
data/spec/spec_helper.rb
CHANGED
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: 0.
|
|
4
|
+
version: 0.4.0
|
|
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-07-
|
|
12
|
+
date: 2013-07-06 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -59,6 +59,22 @@ dependencies:
|
|
|
59
59
|
- - ! '>='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '0'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: rspec-rails
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ! '>='
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
70
|
+
type: :development
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
62
78
|
- !ruby/object:Gem::Dependency
|
|
63
79
|
name: sinatra
|
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -75,6 +91,38 @@ dependencies:
|
|
|
75
91
|
- - ! '>='
|
|
76
92
|
- !ruby/object:Gem::Version
|
|
77
93
|
version: '0'
|
|
94
|
+
- !ruby/object:Gem::Dependency
|
|
95
|
+
name: actionpack
|
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
none: false
|
|
98
|
+
requirements:
|
|
99
|
+
- - ! '>='
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '0'
|
|
102
|
+
type: :development
|
|
103
|
+
prerelease: false
|
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
+
none: false
|
|
106
|
+
requirements:
|
|
107
|
+
- - ! '>='
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: activerecord
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
none: false
|
|
114
|
+
requirements:
|
|
115
|
+
- - ! '>='
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
none: false
|
|
122
|
+
requirements:
|
|
123
|
+
- - ! '>='
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: '0'
|
|
78
126
|
- !ruby/object:Gem::Dependency
|
|
79
127
|
name: capybara
|
|
80
128
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -136,11 +184,13 @@ files:
|
|
|
136
184
|
- lib/page_record/errors.rb
|
|
137
185
|
- lib/page_record/finders.rb
|
|
138
186
|
- lib/page_record/form_builder.rb
|
|
187
|
+
- lib/page_record/formtastic.rb
|
|
139
188
|
- lib/page_record/helpers.rb
|
|
140
189
|
- lib/page_record/instance_actions.rb
|
|
141
190
|
- lib/page_record/rspec.rb
|
|
142
191
|
- lib/page_record/version.rb
|
|
143
192
|
- page_record.gemspec
|
|
193
|
+
- spec/helpers_spec.rb
|
|
144
194
|
- spec/page_record_spec.rb
|
|
145
195
|
- spec/spec_helper.rb
|
|
146
196
|
- spec/support/shared_contexts.rb
|
|
@@ -168,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
168
218
|
version: '0'
|
|
169
219
|
segments:
|
|
170
220
|
- 0
|
|
171
|
-
hash:
|
|
221
|
+
hash: 3628440066479554934
|
|
172
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
223
|
none: false
|
|
174
224
|
requirements:
|
|
@@ -177,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
177
227
|
version: '0'
|
|
178
228
|
segments:
|
|
179
229
|
- 0
|
|
180
|
-
hash:
|
|
230
|
+
hash: 3628440066479554934
|
|
181
231
|
requirements: []
|
|
182
232
|
rubyforge_project:
|
|
183
233
|
rubygems_version: 1.8.24
|
|
@@ -186,6 +236,7 @@ specification_version: 3
|
|
|
186
236
|
summary: Page Object implementation. Using some specialy formatted 'data-...' tags
|
|
187
237
|
you can read records from HTML pages like an ActiveRecord page
|
|
188
238
|
test_files:
|
|
239
|
+
- spec/helpers_spec.rb
|
|
189
240
|
- spec/page_record_spec.rb
|
|
190
241
|
- spec/spec_helper.rb
|
|
191
242
|
- spec/support/shared_contexts.rb
|