page-object 0.0.3 → 0.0.4
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/ChangeLog +10 -1
- data/Gemfile +3 -0
- data/README.md +2 -2
- data/cucumber.yml +2 -0
- data/features/element.feature +81 -8
- data/features/form.feature +28 -0
- data/features/hidden_field.feature +32 -0
- data/features/html/static_elements.html +26 -0
- data/features/list_item.feature +36 -0
- data/features/ordered_list.feature +39 -0
- data/features/step_definitions/accessor_steps.rb +71 -0
- data/features/step_definitions/element_steps.rb +23 -0
- data/features/support/page.rb +43 -0
- data/features/text_area.feature +32 -0
- data/features/text_field.feature +1 -2
- data/features/unordered_list.feature +39 -0
- data/lib/page-object.rb +48 -3
- data/lib/page-object/accessors.rb +282 -111
- data/lib/page-object/elements.rb +6 -0
- data/lib/page-object/elements/element.rb +5 -1
- data/lib/page-object/elements/form.rb +25 -0
- data/lib/page-object/elements/hidden_field.rb +28 -0
- data/lib/page-object/elements/list_item.rb +7 -0
- data/lib/page-object/elements/ordered_list.rb +31 -0
- data/lib/page-object/elements/text_area.rb +24 -0
- data/lib/page-object/elements/text_field.rb +1 -1
- data/lib/page-object/elements/unordered_list.rb +31 -0
- data/lib/page-object/platforms/selenium_button.rb +1 -1
- data/lib/page-object/platforms/selenium_element.rb +3 -0
- data/lib/page-object/platforms/selenium_form.rb +14 -0
- data/lib/page-object/platforms/selenium_image.rb +6 -2
- data/lib/page-object/platforms/selenium_ordered_list.rb +18 -0
- data/lib/page-object/platforms/selenium_unordered_list.rb +18 -0
- data/lib/page-object/platforms/watir_element.rb +3 -0
- data/lib/page-object/platforms/watir_form.rb +14 -0
- data/lib/page-object/platforms/watir_ordered_list.rb +18 -0
- data/lib/page-object/platforms/watir_unordered_list.rb +18 -0
- data/lib/page-object/selenium_page_object.rb +101 -0
- data/lib/page-object/version.rb +2 -1
- data/lib/page-object/watir_page_object.rb +103 -2
- data/spec/page-object/accessors_spec.rb +203 -2
- data/spec/page-object/elements/form_spec.rb +24 -0
- data/spec/page-object/elements/hidden_field_spec.rb +32 -0
- data/spec/page-object/elements/list_item_spec.rb +22 -0
- data/spec/page-object/elements/ordered_list_spec.rb +43 -0
- data/spec/page-object/elements/text_area_spec.rb +32 -0
- data/spec/page-object/elements/text_field_spec.rb +1 -1
- data/spec/page-object/elements/unordered_list_spec.rb +43 -0
- metadata +39 -5
data/lib/page-object/version.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'page-object/elements'
|
2
2
|
|
3
3
|
module PageObject
|
4
|
+
#
|
5
|
+
# Watir implementation of the page object platform driver. You should not use the
|
6
|
+
# class directly. Instead you should include the PageObject module in your page object
|
7
|
+
# and use the methods dynamically added from the PageObject::Accessors module.
|
8
|
+
#
|
4
9
|
class WatirPageObject
|
5
10
|
def initialize(browser)
|
6
11
|
@browser = browser
|
@@ -66,6 +71,53 @@ module PageObject
|
|
66
71
|
Elements::TextField.new(element, :platform => :watir)
|
67
72
|
end
|
68
73
|
|
74
|
+
#
|
75
|
+
# platform method to get the value stored in a hidden field
|
76
|
+
# See PageObject::Accessors#hidden_field
|
77
|
+
#
|
78
|
+
def hidden_field_value_for(identifier)
|
79
|
+
identifier = Elements::HiddenField.watir_identifier_for identifier
|
80
|
+
@browser.hidden(identifier).value
|
81
|
+
end
|
82
|
+
|
83
|
+
#
|
84
|
+
# platform method to retrieve a hidden field element
|
85
|
+
# See PageObject::Accessors#hidden_field
|
86
|
+
#
|
87
|
+
def hidden_field_for(identifier)
|
88
|
+
identifier = Elements::HiddenField.watir_identifier_for identifier
|
89
|
+
element = @browser.hidden(identifier)
|
90
|
+
Elements::HiddenField.new(element, :platform => :watir)
|
91
|
+
end
|
92
|
+
|
93
|
+
#
|
94
|
+
# platform method to set text in a textarea
|
95
|
+
# See PageObject::Accessors#text_area
|
96
|
+
#
|
97
|
+
def text_area_value_set(identifier, value)
|
98
|
+
identifier = Elements::TextArea.watir_identifier_for identifier
|
99
|
+
@browser.textarea(identifier).send_keys(value)
|
100
|
+
end
|
101
|
+
|
102
|
+
#
|
103
|
+
# platform method to get the text from a textarea
|
104
|
+
# See PageObject::Accessors#text_area
|
105
|
+
#
|
106
|
+
def text_area_value_for(identifier)
|
107
|
+
identifier = Elements::TextArea.watir_identifier_for identifier
|
108
|
+
@browser.textarea(identifier).value
|
109
|
+
end
|
110
|
+
|
111
|
+
#
|
112
|
+
# platform method to get the text area element
|
113
|
+
# See PageObject::Accessors#text_area
|
114
|
+
#
|
115
|
+
def text_area_for(identifier)
|
116
|
+
identifier = Elements::TextArea.watir_identifier_for identifier
|
117
|
+
element = @browser.textarea(identifier)
|
118
|
+
Elements::TextArea.new(element, :platform => :watir)
|
119
|
+
end
|
120
|
+
|
69
121
|
#
|
70
122
|
# platform method to get the currently selected value from a select list
|
71
123
|
# See PageObject::Accessors#select_list
|
@@ -259,7 +311,7 @@ module PageObject
|
|
259
311
|
# See PageObject::Accessors#cell
|
260
312
|
#
|
261
313
|
def cell_text_for(identifier)
|
262
|
-
identifier = Elements::
|
314
|
+
identifier = Elements::TableCell.watir_identifier_for identifier
|
263
315
|
@browser.td(identifier).text
|
264
316
|
end
|
265
317
|
|
@@ -268,7 +320,7 @@ module PageObject
|
|
268
320
|
# See PageObject::Accessors#cell
|
269
321
|
#
|
270
322
|
def cell_for(identifier)
|
271
|
-
identifier = Elements::
|
323
|
+
identifier = Elements::TableCell.watir_identifier_for identifier
|
272
324
|
element = @browser.td(identifier)
|
273
325
|
PageObject::Elements::TableCell.new(element, :platform => :watir)
|
274
326
|
end
|
@@ -282,5 +334,54 @@ module PageObject
|
|
282
334
|
element = @browser.image(identifier)
|
283
335
|
PageObject::Elements::Image.new(element, :platform => :watir)
|
284
336
|
end
|
337
|
+
|
338
|
+
#
|
339
|
+
# platform method to retrieve a form element
|
340
|
+
# See PageObject::Accessors#form
|
341
|
+
#
|
342
|
+
def form_for(identifier)
|
343
|
+
identifier = Elements::Form.watir_identifier_for identifier
|
344
|
+
element = @browser.form(identifier)
|
345
|
+
PageObject::Elements::Form.new(element, :platform => :watir)
|
346
|
+
end
|
347
|
+
|
348
|
+
#
|
349
|
+
# platform method to retrieve the text from a list item
|
350
|
+
# See PageObject::Accessors#list_item
|
351
|
+
#
|
352
|
+
def list_item_text_for(identifier)
|
353
|
+
identifier = Elements::ListItem.watir_identifier_for identifier
|
354
|
+
@browser.li(identifier).text
|
355
|
+
end
|
356
|
+
|
357
|
+
#
|
358
|
+
# platform method to retrieve a list item element
|
359
|
+
# See PageObject::Accessors#list_item
|
360
|
+
#
|
361
|
+
def list_item_for(identifier)
|
362
|
+
identifier = Elements::ListItem.watir_identifier_for identifier
|
363
|
+
element = @browser.li(identifier)
|
364
|
+
PageObject::Elements::ListItem.new(element, :platform => :watir)
|
365
|
+
end
|
366
|
+
|
367
|
+
#
|
368
|
+
# platform method to retrieve an unordered list element
|
369
|
+
# See PageObject::Accessors#unordered_list
|
370
|
+
#
|
371
|
+
def unordered_list_for(identifier)
|
372
|
+
identifier = Elements::UnorderedList.watir_identifier_for identifier
|
373
|
+
element = @browser.ul(identifier)
|
374
|
+
PageObject::Elements::UnorderedList.new(element, :platform => :watir)
|
375
|
+
end
|
376
|
+
|
377
|
+
#
|
378
|
+
# platform method to retrieve an ordered list element
|
379
|
+
# See PageObject::Accessors#ordered_list
|
380
|
+
#
|
381
|
+
def ordered_list_for(identifier)
|
382
|
+
identifier = Elements::OrderedList.watir_identifier_for identifier
|
383
|
+
element = @browser.ol(identifier)
|
384
|
+
PageObject::Elements::OrderedList.new(element, :platform => :watir)
|
385
|
+
end
|
285
386
|
end
|
286
387
|
end
|
@@ -5,6 +5,8 @@ class TestPageObject
|
|
5
5
|
|
6
6
|
link(:google_search, :link => 'Google Search')
|
7
7
|
text_field(:first_name, :id => 'first_name')
|
8
|
+
hidden_field(:social_security_number, :id => 'ssn')
|
9
|
+
text_area(:address, :id => 'address')
|
8
10
|
select_list(:state, :id => 'state')
|
9
11
|
checkbox(:active, :id => 'is_active_id')
|
10
12
|
radio_button(:first, :id => 'first_choice')
|
@@ -14,6 +16,10 @@ class TestPageObject
|
|
14
16
|
cell(:total, :id => 'total')
|
15
17
|
span(:alert, :id => 'alert_id')
|
16
18
|
image(:logo, :id => 'logo')
|
19
|
+
form(:login, :id => 'login')
|
20
|
+
list_item(:item_one, :id => 'one')
|
21
|
+
unordered_list(:menu, :id => 'main_menu')
|
22
|
+
ordered_list(:top_five, :id => 'top')
|
17
23
|
end
|
18
24
|
|
19
25
|
describe PageObject::Accessors do
|
@@ -100,7 +106,7 @@ describe PageObject::Accessors do
|
|
100
106
|
selenium_page_object.first_name = 'Katie'
|
101
107
|
end
|
102
108
|
|
103
|
-
it "should
|
109
|
+
it "should retrieve a text field element" do
|
104
110
|
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
105
111
|
element = selenium_page_object.first_name_text_field
|
106
112
|
element.should be_instance_of PageObject::Elements::TextField
|
@@ -109,6 +115,93 @@ describe PageObject::Accessors do
|
|
109
115
|
end
|
110
116
|
|
111
117
|
|
118
|
+
describe "hidden field accessors" do
|
119
|
+
context "when called on a page object" do
|
120
|
+
it "should generate accessor methods" do
|
121
|
+
watir_page_object.should respond_to(:social_security_number)
|
122
|
+
watir_page_object.should respond_to(:social_security_number_hidden_field)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
context "watir implementation" do
|
127
|
+
it "should get the text from a hidden field" do
|
128
|
+
watir_browser.should_receive(:hidden).and_return(watir_browser)
|
129
|
+
watir_browser.should_receive(:value).and_return("value")
|
130
|
+
watir_page_object.social_security_number.should == "value"
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should retrieve a hidden field element" do
|
134
|
+
watir_browser.should_receive(:hidden).and_return(watir_browser)
|
135
|
+
element = watir_page_object.social_security_number_hidden_field
|
136
|
+
element.should be_instance_of(PageObject::Elements::HiddenField)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
context "selenium implementation" do
|
141
|
+
it "should get the text from a hidden field" do
|
142
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
143
|
+
selenium_browser.should_receive(:attribute).with('value').and_return("12345")
|
144
|
+
selenium_page_object.social_security_number.should == "12345"
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should retrieve a hidden field element" do
|
148
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
149
|
+
element = selenium_page_object.social_security_number_hidden_field
|
150
|
+
element.should be_instance_of PageObject::Elements::HiddenField
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "text area accessors" do
|
156
|
+
context "when called on a page object" do
|
157
|
+
it "should generate accessor methods" do
|
158
|
+
watir_page_object.should respond_to(:address)
|
159
|
+
watir_page_object.should respond_to(:address=)
|
160
|
+
watir_page_object.should respond_to(:address_text_area)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
context "watir implementation" do
|
165
|
+
it "should set some text on the text area" do
|
166
|
+
watir_browser.should_receive(:textarea).and_return(watir_browser)
|
167
|
+
watir_browser.should_receive(:send_keys).with("123 main street")
|
168
|
+
watir_page_object.address = "123 main street"
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should get the text from the text area" do
|
172
|
+
watir_browser.should_receive(:textarea).and_return(watir_browser)
|
173
|
+
watir_browser.should_receive(:value).and_return("123 main street")
|
174
|
+
watir_page_object.address.should == "123 main street"
|
175
|
+
end
|
176
|
+
|
177
|
+
it "should retrieve a text area element" do
|
178
|
+
watir_browser.should_receive(:textarea).and_return(watir_browser)
|
179
|
+
element = watir_page_object.address_text_area
|
180
|
+
element.should be_instance_of PageObject::Elements::TextArea
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context "selenium implementation" do
|
185
|
+
it "should set some text on the text area" do
|
186
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
187
|
+
selenium_browser.should_receive(:send_keys).with("123 main street")
|
188
|
+
selenium_page_object.address = "123 main street"
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should get the text from the text area" do
|
192
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
193
|
+
selenium_browser.should_receive(:attribute).with('value').and_return("123 main street")
|
194
|
+
selenium_page_object.address.should == "123 main street"
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should retrieve a text area element" do
|
198
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
199
|
+
element = selenium_page_object.address_text_area
|
200
|
+
element.should be_instance_of PageObject::Elements::TextArea
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
112
205
|
describe "select_list accessors" do
|
113
206
|
context "when called on a page object" do
|
114
207
|
it "should generate accessor methods" do
|
@@ -426,7 +519,6 @@ describe PageObject::Accessors do
|
|
426
519
|
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
427
520
|
element = selenium_page_object.cart_table
|
428
521
|
element.should be_instance_of(PageObject::Elements::Table)
|
429
|
-
|
430
522
|
end
|
431
523
|
end
|
432
524
|
end
|
@@ -485,4 +577,113 @@ describe PageObject::Accessors do
|
|
485
577
|
end
|
486
578
|
end
|
487
579
|
end
|
580
|
+
|
581
|
+
describe "form accessors" do
|
582
|
+
context "when called on a page object" do
|
583
|
+
it "should generate accessor methods" do
|
584
|
+
watir_page_object.should respond_to(:login_form)
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
588
|
+
context "watir implementation" do
|
589
|
+
it "should retrieve the form element from the page" do
|
590
|
+
watir_browser.should_receive(:form).and_return(watir_browser)
|
591
|
+
element = watir_page_object.login_form
|
592
|
+
element.should be_instance_of PageObject::Elements::Form
|
593
|
+
end
|
594
|
+
end
|
595
|
+
|
596
|
+
context "selenium implementation" do
|
597
|
+
it "should retrieve the form element from the page" do
|
598
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
599
|
+
element = selenium_page_object.login_form
|
600
|
+
element.should be_instance_of PageObject::Elements::Form
|
601
|
+
end
|
602
|
+
end
|
603
|
+
end
|
604
|
+
|
605
|
+
describe "list item accessors" do
|
606
|
+
context "when called on a page object" do
|
607
|
+
it "should generate accessor methods" do
|
608
|
+
watir_page_object.should respond_to(:item_one)
|
609
|
+
watir_page_object.should respond_to(:item_one_list_item)
|
610
|
+
end
|
611
|
+
end
|
612
|
+
|
613
|
+
context "watir implementation" do
|
614
|
+
it "should retrieve the text from the list item" do
|
615
|
+
watir_browser.should_receive(:li).and_return(watir_browser)
|
616
|
+
watir_browser.should_receive(:text).and_return("value")
|
617
|
+
watir_page_object.item_one.should == "value"
|
618
|
+
end
|
619
|
+
|
620
|
+
it "should retrieve the list item element from the page" do
|
621
|
+
watir_browser.should_receive(:li).and_return(watir_browser)
|
622
|
+
element = watir_page_object.item_one_list_item
|
623
|
+
element.should be_instance_of PageObject::Elements::ListItem
|
624
|
+
end
|
625
|
+
end
|
626
|
+
|
627
|
+
context "selenium implementation" do
|
628
|
+
it "should retrieve the text from the list item" do
|
629
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
630
|
+
selenium_browser.should_receive(:text).and_return("value")
|
631
|
+
selenium_page_object.item_one.should == "value"
|
632
|
+
end
|
633
|
+
|
634
|
+
it "should retrieve the list item from the page" do
|
635
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
636
|
+
element = selenium_page_object.item_one_list_item
|
637
|
+
element.should be_instance_of PageObject::Elements::ListItem
|
638
|
+
end
|
639
|
+
end
|
640
|
+
end
|
641
|
+
|
642
|
+
describe "unordered list accessors" do
|
643
|
+
context "when called on a page object" do
|
644
|
+
it "should generate accessor methods" do
|
645
|
+
watir_page_object.should respond_to(:menu_unordered_list)
|
646
|
+
end
|
647
|
+
end
|
648
|
+
|
649
|
+
context "watir implementation" do
|
650
|
+
it "should retrieve the element from the page" do
|
651
|
+
watir_browser.should_receive(:ul).and_return(watir_browser)
|
652
|
+
element = watir_page_object.menu_unordered_list
|
653
|
+
element.should be_instance_of PageObject::Elements::UnorderedList
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
657
|
+
context "selenium implementation" do
|
658
|
+
it "should retrieve the element from the page" do
|
659
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
660
|
+
element = selenium_page_object.menu_unordered_list
|
661
|
+
element.should be_instance_of PageObject::Elements::UnorderedList
|
662
|
+
end
|
663
|
+
end
|
664
|
+
end
|
665
|
+
|
666
|
+
describe "ordered list accessors" do
|
667
|
+
context "when called on a page object" do
|
668
|
+
it "should generate accessor methods" do
|
669
|
+
watir_page_object.should respond_to(:top_five_ordered_list)
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
context "watir implementation" do
|
674
|
+
it "should retrieve the element from the page" do
|
675
|
+
watir_browser.should_receive(:ol).and_return(watir_browser)
|
676
|
+
element = watir_page_object.top_five_ordered_list
|
677
|
+
element.should be_instance_of PageObject::Elements::OrderedList
|
678
|
+
end
|
679
|
+
end
|
680
|
+
|
681
|
+
context "selenium implementation" do
|
682
|
+
it "should retrieve the element from the page" do
|
683
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
684
|
+
element = selenium_page_object.top_five_ordered_list
|
685
|
+
element.should be_instance_of PageObject::Elements::OrderedList
|
686
|
+
end
|
687
|
+
end
|
688
|
+
end
|
488
689
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'page-object/elements'
|
3
|
+
|
4
|
+
describe PageObject::Elements::Form do
|
5
|
+
describe "interface" do
|
6
|
+
let(:form_element) { double('form_element') }
|
7
|
+
|
8
|
+
context "for watir" do
|
9
|
+
it "should submit a form" do
|
10
|
+
form = PageObject::Elements::Form.new(form_element, :platform => :watir)
|
11
|
+
form_element.should_receive(:submit)
|
12
|
+
form.submit
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "for selenium" do
|
17
|
+
it "should submit a form" do
|
18
|
+
form = PageObject::Elements::Form.new(form_element, :platform => :selenium)
|
19
|
+
form_element.should_receive(:submit)
|
20
|
+
form.submit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'page-object/elements'
|
3
|
+
|
4
|
+
describe PageObject::Elements::HiddenField do
|
5
|
+
let(:hiddenfield) { PageObject::Elements::HiddenField }
|
6
|
+
|
7
|
+
describe "when mapping how to find an element" do
|
8
|
+
it "should map watir types to same" do
|
9
|
+
[:class, :id, :index, :name, :tag_name, :text, :xpath].each do |t|
|
10
|
+
identifier = hiddenfield.watir_identifier_for t => 'value'
|
11
|
+
identifier.keys.first.should == t
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should map selenium types to watir" do
|
16
|
+
identifier = hiddenfield.watir_identifier_for :css => 'value'
|
17
|
+
identifier.keys.first.should == :tag_name
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should map selenium types to same" do
|
21
|
+
[:class, :css, :id, :name, :xpath].each do |t|
|
22
|
+
key, value = hiddenfield.selenium_identifier_for t => 'value'
|
23
|
+
key.should == t
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should map watir types to selenium" do
|
28
|
+
key, value = hiddenfield.selenium_identifier_for :tag_name => 'value'
|
29
|
+
key.should == :css
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'page-object/elements'
|
3
|
+
|
4
|
+
describe PageObject::Elements::ListItem do
|
5
|
+
let(:list_item) { PageObject::Elements::ListItem }
|
6
|
+
|
7
|
+
describe "when mapping how to find an element" do
|
8
|
+
it "should map watir types to same" do
|
9
|
+
[:class, :id, :index, :xpath].each do |t|
|
10
|
+
identifier = list_item.watir_identifier_for t => 'value'
|
11
|
+
identifier.keys.first.should == t
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should map selenium types to same" do
|
16
|
+
[:class, :id, :name, :xpath].each do |t|
|
17
|
+
key, value = list_item.selenium_identifier_for t => 'value'
|
18
|
+
key.should == t
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|