fluent 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY.md +9 -0
  3. data/lib/fluent/errors.rb +1 -0
  4. data/lib/fluent/factory.rb +9 -0
  5. data/lib/fluent/generators.rb +65 -4
  6. data/lib/fluent/platform_watir/platform_object.rb +92 -3
  7. data/lib/fluent/platform_watir/platform_web_elements/ordered_list.rb +26 -0
  8. data/lib/fluent/platform_watir/platform_web_elements/table.rb +25 -0
  9. data/lib/fluent/platform_watir/platform_web_elements/table_row.rb +27 -0
  10. data/lib/fluent/platform_watir/platform_web_elements/text_area.rb +21 -0
  11. data/lib/fluent/platform_watir/platform_web_elements/text_field.rb +4 -0
  12. data/lib/fluent/platform_watir/platform_web_elements/unordered_list.rb +26 -0
  13. data/lib/fluent/platform_watir/platform_web_elements/web_element.rb +7 -0
  14. data/lib/fluent/version.rb +1 -1
  15. data/lib/fluent/web_elements.rb +20 -0
  16. data/lib/fluent/web_elements/button.rb +6 -1
  17. data/lib/fluent/web_elements/cell.rb +3 -0
  18. data/lib/fluent/web_elements/checkbox.rb +3 -1
  19. data/lib/fluent/web_elements/div.rb +2 -0
  20. data/lib/fluent/web_elements/form.rb +18 -0
  21. data/lib/fluent/web_elements/heading.rb +23 -0
  22. data/lib/fluent/web_elements/hidden.rb +18 -0
  23. data/lib/fluent/web_elements/image.rb +18 -0
  24. data/lib/fluent/web_elements/label.rb +18 -0
  25. data/lib/fluent/web_elements/link.rb +2 -0
  26. data/lib/fluent/web_elements/list_item.rb +2 -0
  27. data/lib/fluent/web_elements/option.rb +2 -0
  28. data/lib/fluent/web_elements/ordered_list.rb +19 -1
  29. data/lib/fluent/web_elements/paragraph.rb +2 -0
  30. data/lib/fluent/web_elements/radio.rb +3 -1
  31. data/lib/fluent/web_elements/select_list.rb +2 -0
  32. data/lib/fluent/web_elements/span.rb +3 -0
  33. data/lib/fluent/web_elements/table.rb +32 -0
  34. data/lib/fluent/web_elements/table_row.rb +38 -0
  35. data/lib/fluent/web_elements/text_area.rb +6 -0
  36. data/lib/fluent/web_elements/text_field.rb +3 -0
  37. data/lib/fluent/web_elements/unordered_list.rb +20 -1
  38. data/spec/factory_spec.rb +7 -0
  39. data/spec/generators/form_generators_spec.rb +42 -0
  40. data/spec/generators/heading_generators_spec.rb +87 -0
  41. data/spec/generators/hidden_generators_spec.rb +49 -0
  42. data/spec/generators/image_generators_spec.rb +42 -0
  43. data/spec/generators/label_generators_spec.rb +49 -0
  44. data/spec/generators/text_area_generators_spec.rb +3 -3
  45. data/spec/generators_spec.rb +5 -0
  46. data/spec/spec_helper.rb +2 -0
  47. data/spec/web_element_watir_spec.rb +6 -0
  48. data/spec/web_elements/button_spec.rb +21 -0
  49. data/spec/web_elements/cell_spec.rb +13 -0
  50. data/spec/web_elements/checkbox_spec.rb +4 -0
  51. data/spec/web_elements/div_spec.rb +9 -0
  52. data/spec/web_elements/form_spec.rb +9 -0
  53. data/spec/web_elements/heading_spec.rb +28 -0
  54. data/spec/web_elements/hidden_spec.rb +9 -0
  55. data/spec/web_elements/image_spec.rb +9 -0
  56. data/spec/web_elements/label_spec.rb +9 -0
  57. data/spec/web_elements/link_spec.rb +9 -0
  58. data/spec/web_elements/list_item_spec.rb +9 -0
  59. data/spec/web_elements/option_spec.rb +9 -0
  60. data/spec/web_elements/ordered_list_spec.rb +42 -0
  61. data/spec/web_elements/paragraph_spec.rb +9 -0
  62. data/spec/web_elements/radio_spec.rb +4 -0
  63. data/spec/web_elements/select_list_spec.rb +4 -0
  64. data/spec/web_elements/span_spec.rb +9 -0
  65. data/spec/web_elements/table_row_spec.rb +47 -0
  66. data/spec/web_elements/table_spec.rb +54 -0
  67. data/spec/web_elements/text_area_spec.rb +27 -0
  68. data/spec/web_elements/text_field_spec.rb +13 -0
  69. data/spec/web_elements/unordered_list_spec.rb +42 -0
  70. metadata +61 -2
@@ -0,0 +1,42 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class FormGenerators
4
+ include Fluent
5
+
6
+ form :group, id: 'group'
7
+ end
8
+
9
+ describe Fluent::Generators do
10
+ let(:watir_browser) { mock_browser_for_watir }
11
+ let(:watir_definition) { FormGenerators.new(watir_browser) }
12
+
13
+ describe 'form generators' do
14
+ context 'when declared on a page definition' do
15
+ it 'should generate methods for referencing the form' do
16
+ watir_definition.should respond_to(:group_object)
17
+ watir_definition.should respond_to(:group_element)
18
+ watir_definition.should respond_to(:group_form)
19
+ end
20
+
21
+ it 'should generate methods for interacting with the form' do
22
+ watir_definition.should respond_to(:group_exists?)
23
+ watir_definition.should respond_to(:group_visible?)
24
+ watir_definition.should respond_to(:group?)
25
+ watir_definition.should respond_to(:group_?)
26
+ watir_definition.should respond_to(:group_form_exists?)
27
+ watir_definition.should respond_to(:group_form_visible?)
28
+ watir_definition.should respond_to(:group_form?)
29
+ watir_definition.should respond_to(:group_form_?)
30
+ end
31
+ end
32
+
33
+ context 'when used by the watir platform' do
34
+ it 'should locate the form' do
35
+ watir_browser.should_receive(:form).and_return(watir_browser)
36
+ web_element = watir_definition.group_object
37
+ web_element.should_not be_nil
38
+ web_element.should be_instance_of Fluent::WebElements::Form
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,87 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class HeadingGenerators
4
+ include Fluent
5
+
6
+ h1 :headingOne, id: 'headingOne'
7
+ h2 :headingTwo, id: 'headingTwo'
8
+ h3 :headingThree, id: 'headingThree'
9
+ h4 :headingFour, id: 'headingFour'
10
+ h5 :headingFive, id: 'headingFive'
11
+ h6 :headingSix, id: 'headingSix'
12
+ end
13
+
14
+ describe Fluent::Generators do
15
+ let(:watir_browser) { mock_browser_for_watir }
16
+ let(:watir_definition) { HeadingGenerators.new(watir_browser) }
17
+
18
+ describe 'heading generators' do
19
+ context 'when declared on a page definition' do
20
+ it 'should generate methods for referencing the heading' do
21
+ watir_definition.should respond_to(:headingOne_object)
22
+ watir_definition.should respond_to(:headingTwo_object)
23
+ end
24
+
25
+ it 'should generate methods for interacting with the heading' do
26
+ watir_definition.should respond_to(:headingOne)
27
+ watir_definition.should respond_to(:headingTwo)
28
+ end
29
+ end
30
+
31
+ context 'when used by the watir platform' do
32
+ it 'should locate the heading' do
33
+ watir_browser.should_receive(:h1).and_return(watir_browser)
34
+ web_element = watir_definition.headingOne_h1
35
+ web_element.should_not be_nil
36
+ web_element.should be_instance_of Fluent::WebElements::Heading
37
+
38
+ watir_browser.should_receive(:h2).and_return(watir_browser)
39
+ web_element = watir_definition.headingTwo_h2
40
+ web_element.should be_instance_of Fluent::WebElements::Heading
41
+
42
+ watir_browser.should_receive(:h3).and_return(watir_browser)
43
+ web_element = watir_definition.headingThree_h3
44
+ web_element.should be_instance_of Fluent::WebElements::Heading
45
+
46
+ watir_browser.should_receive(:h4).and_return(watir_browser)
47
+ web_element = watir_definition.headingFour_h4
48
+ web_element.should be_instance_of Fluent::WebElements::Heading
49
+
50
+ watir_browser.should_receive(:h5).and_return(watir_browser)
51
+ web_element = watir_definition.headingFive_h5
52
+ web_element.should be_instance_of Fluent::WebElements::Heading
53
+
54
+ watir_browser.should_receive(:h6).and_return(watir_browser)
55
+ web_element = watir_definition.headingSix_h6
56
+ web_element.should be_instance_of Fluent::WebElements::Heading
57
+ end
58
+
59
+ it 'should return the text of a heading' do
60
+ watir_browser.should_receive(:h1).and_return(watir_browser)
61
+ watir_browser.should_receive(:text).and_return('testing')
62
+ watir_definition.headingOne.should == 'testing'
63
+
64
+ watir_browser.should_receive(:h2).and_return(watir_browser)
65
+ watir_browser.should_receive(:text).and_return('testing')
66
+ watir_definition.headingTwo.should == 'testing'
67
+
68
+ watir_browser.should_receive(:h3).and_return(watir_browser)
69
+ watir_browser.should_receive(:text).and_return('testing')
70
+ watir_definition.headingThree.should == 'testing'
71
+
72
+ watir_browser.should_receive(:h4).and_return(watir_browser)
73
+ watir_browser.should_receive(:text).and_return('testing')
74
+ watir_definition.headingFour.should == 'testing'
75
+
76
+ watir_browser.should_receive(:h5).and_return(watir_browser)
77
+ watir_browser.should_receive(:text).and_return('testing')
78
+ watir_definition.headingFive.should == 'testing'
79
+
80
+ watir_browser.should_receive(:h6).and_return(watir_browser)
81
+ watir_browser.should_receive(:text).and_return('testing')
82
+ watir_definition.headingSix.should == 'testing'
83
+ end
84
+ end
85
+ end
86
+
87
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class HiddenGenerators
4
+ include Fluent
5
+
6
+ hidden :ssn, id: 'ssn'
7
+ end
8
+
9
+ describe Fluent::Generators do
10
+ let(:watir_browser) { mock_browser_for_watir }
11
+ let(:watir_definition) { HiddenGenerators.new(watir_browser) }
12
+
13
+ describe 'hidden generators' do
14
+ context 'when declared on a page definition' do
15
+ it 'should generate methods for referencing the hidden' do
16
+ watir_definition.should respond_to(:ssn_object)
17
+ watir_definition.should respond_to(:ssn_element)
18
+ watir_definition.should respond_to(:ssn_hidden)
19
+ end
20
+
21
+ it 'should generate methods for interacting with the text area' do
22
+ watir_definition.should respond_to(:ssn)
23
+ watir_definition.should respond_to(:ssn_exists?)
24
+ watir_definition.should respond_to(:ssn_visible?)
25
+ watir_definition.should respond_to(:ssn?)
26
+ watir_definition.should respond_to(:ssn_?)
27
+ watir_definition.should respond_to(:ssn_hidden_exists?)
28
+ watir_definition.should respond_to(:ssn_hidden_visible?)
29
+ watir_definition.should respond_to(:ssn_hidden?)
30
+ watir_definition.should respond_to(:ssn_hidden_?)
31
+ end
32
+ end
33
+
34
+ context 'when used by the watir platform' do
35
+ it 'should locate the hidden' do
36
+ watir_browser.should_receive(:hidden).and_return(watir_browser)
37
+ web_element = watir_definition.ssn_object
38
+ web_element.should_not be_nil
39
+ web_element.should be_instance_of Fluent::WebElements::Hidden
40
+ end
41
+
42
+ it 'should retrieve text from the hidden' do
43
+ watir_browser.should_receive(:hidden).and_return(watir_browser)
44
+ watir_browser.should_receive(:value).and_return('testing')
45
+ watir_definition.ssn.should == 'testing'
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class ImageGenerators
4
+ include Fluent
5
+
6
+ image :logo, id: 'logo'
7
+ end
8
+
9
+ describe Fluent::Generators do
10
+ let(:watir_browser) { mock_browser_for_watir }
11
+ let(:watir_definition) { ImageGenerators.new(watir_browser) }
12
+
13
+ describe 'image generators' do
14
+ context 'when declared on a page definition' do
15
+ it 'should generate methods for referencing the image' do
16
+ watir_definition.should respond_to(:logo_object)
17
+ watir_definition.should respond_to(:logo_element)
18
+ watir_definition.should respond_to(:logo_image)
19
+ end
20
+
21
+ it 'should generate methods for interacting with the image' do
22
+ watir_definition.should respond_to(:logo_exists?)
23
+ watir_definition.should respond_to(:logo_visible?)
24
+ watir_definition.should respond_to(:logo?)
25
+ watir_definition.should respond_to(:logo_?)
26
+ watir_definition.should respond_to(:logo_image_exists?)
27
+ watir_definition.should respond_to(:logo_image_visible?)
28
+ watir_definition.should respond_to(:logo_image?)
29
+ watir_definition.should respond_to(:logo_image_?)
30
+ end
31
+ end
32
+
33
+ context 'when used by the watir platform' do
34
+ it 'should locate the image' do
35
+ watir_browser.should_receive(:image).and_return(watir_browser)
36
+ web_element = watir_definition.logo_object
37
+ web_element.should_not be_nil
38
+ web_element.should be_instance_of Fluent::WebElements::Image
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class LabelGenerators
4
+ include Fluent
5
+
6
+ label :topic, id: 'topic'
7
+ end
8
+
9
+ describe Fluent::Generators do
10
+ let(:watir_browser) { mock_browser_for_watir }
11
+ let(:watir_definition) { LabelGenerators.new(watir_browser) }
12
+
13
+ describe 'label generators' do
14
+ context 'when declared on a page definition' do
15
+ it 'should generate methods for referencing the label' do
16
+ watir_definition.should respond_to(:topic_object)
17
+ watir_definition.should respond_to(:topic_element)
18
+ watir_definition.should respond_to(:topic_label)
19
+ end
20
+
21
+ it 'should generate methods for interacting with the label' do
22
+ watir_definition.should respond_to(:topic)
23
+ watir_definition.should respond_to(:topic_exists?)
24
+ watir_definition.should respond_to(:topic_visible?)
25
+ watir_definition.should respond_to(:topic?)
26
+ watir_definition.should respond_to(:topic_?)
27
+ watir_definition.should respond_to(:topic_label_exists?)
28
+ watir_definition.should respond_to(:topic_label_visible?)
29
+ watir_definition.should respond_to(:topic_label?)
30
+ watir_definition.should respond_to(:topic_label_?)
31
+ end
32
+ end
33
+
34
+ context 'when used by the watir platform' do
35
+ it 'should locate the label' do
36
+ watir_browser.should_receive(:label).and_return(watir_browser)
37
+ web_element = watir_definition.topic_object
38
+ web_element.should_not be_nil
39
+ web_element.should be_instance_of Fluent::WebElements::Label
40
+ end
41
+
42
+ it 'should retrieve text from the label' do
43
+ watir_browser.should_receive(:label).and_return(watir_browser)
44
+ watir_browser.should_receive(:text).and_return('testing')
45
+ watir_definition.topic.should == 'testing'
46
+ end
47
+ end
48
+ end
49
+ end
@@ -33,20 +33,20 @@ describe Fluent::Generators do
33
33
 
34
34
  context 'when used by the watir platform' do
35
35
  it 'should locate the text area' do
36
- watir_browser.should_receive(:text_area).and_return(watir_browser)
36
+ watir_browser.should_receive(:textarea).and_return(watir_browser)
37
37
  web_element = watir_definition.summary_object
38
38
  web_element.should_not be_nil
39
39
  web_element.should be_instance_of Fluent::WebElements::TextArea
40
40
  end
41
41
 
42
42
  it 'should retrieve text from the text area' do
43
- watir_browser.should_receive(:text_area).and_return(watir_browser)
43
+ watir_browser.should_receive(:textarea).and_return(watir_browser)
44
44
  watir_browser.should_receive(:value).and_return('testing')
45
45
  watir_definition.summary.should == 'testing'
46
46
  end
47
47
 
48
48
  it 'should enter text into a text area' do
49
- watir_browser.should_receive(:text_area).and_return(watir_browser)
49
+ watir_browser.should_receive(:textarea).and_return(watir_browser)
50
50
  watir_browser.should_receive(:set).with('testing')
51
51
  watir_definition.summary = 'testing'
52
52
  end
@@ -18,6 +18,11 @@ describe Fluent::Generators do
18
18
  selenium_definition.check_title
19
19
  end
20
20
 
21
+ it 'should specify and verify the page url' do
22
+ watir_browser.should_receive(:url).twice.and_return('http://localhost:4567')
23
+ watir_definition.check_url
24
+ end
25
+
21
26
  it 'should raise an error if the page title is not verified' do
22
27
  msg = "Expected title: 'Test App'; Actual title: 'Testing'"
23
28
  watir_browser.should_receive(:title).twice.and_return('Testing')
@@ -3,6 +3,8 @@ require 'coveralls'
3
3
 
4
4
  Coveralls.wear!
5
5
 
6
+ SimpleCov.add_filter '/spec'
7
+
6
8
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
9
  SimpleCov::Formatter::HTMLFormatter,
8
10
  Coveralls::SimpleCov::Formatter
@@ -147,4 +147,10 @@ describe 'Web Elements for Watir' do
147
147
  Object::Watir::Wait.stub(:until).with(5, 'Condition occurred.')
148
148
  watir_definition.wait_until(5, 'Condition occurred.') { true }
149
149
  end
150
+
151
+ it 'should find the parent for a web element' do
152
+ watir_browser.should_receive(:tag_name).twice.and_return(:p)
153
+ watir_browser.should_receive(:parent).and_return(watir_definition)
154
+ watir_definition.parent
155
+ end
150
156
  end
@@ -0,0 +1,21 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Button' do
4
+
5
+ it 'should register with a submit tag' do
6
+ ::Fluent::WebElements.get_class_for(:input, :submit).should == ::Fluent::WebElements::Button
7
+ end
8
+
9
+ it 'should register with a button tag' do
10
+ ::Fluent::WebElements.get_class_for(:input, :button).should == ::Fluent::WebElements::Button
11
+ end
12
+
13
+ it 'should register with a image tag' do
14
+ ::Fluent::WebElements.get_class_for(:input, :image).should == ::Fluent::WebElements::Button
15
+ end
16
+
17
+ it 'should register with a reset tag' do
18
+ ::Fluent::WebElements.get_class_for(:input, :reset).should == ::Fluent::WebElements::Button
19
+ end
20
+
21
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Cell' do
4
+
5
+ it 'should register with a table definition tag' do
6
+ ::Fluent::WebElements.get_class_for(:td).should == ::Fluent::WebElements::Cell
7
+ end
8
+
9
+ it 'should register with a table header tag' do
10
+ ::Fluent::WebElements.get_class_for(:th).should == ::Fluent::WebElements::Cell
11
+ end
12
+
13
+ end
@@ -18,4 +18,8 @@ describe 'WebElements::CheckBox' do
18
18
  checkbox_object.should_receive(:clear)
19
19
  checkbox_definition.uncheck
20
20
  end
21
+
22
+ it 'should register with a checkbox tag' do
23
+ ::Fluent::WebElements.get_class_for(:input, :checkbox).should == ::Fluent::WebElements::CheckBox
24
+ end
21
25
  end
@@ -0,0 +1,9 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Div' do
4
+
5
+ it 'should register with a div tag' do
6
+ ::Fluent::WebElements.get_class_for(:div).should == ::Fluent::WebElements::Div
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Form' do
4
+
5
+ it 'should register with a form tag' do
6
+ ::Fluent::WebElements.get_class_for(:form).should == ::Fluent::WebElements::Form
7
+ end
8
+
9
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Heading' do
4
+
5
+ it 'should register with a h1 tag' do
6
+ ::Fluent::WebElements.get_class_for(:h1).should == ::Fluent::WebElements::Heading
7
+ end
8
+
9
+ it 'should register with a h2 tag' do
10
+ ::Fluent::WebElements.get_class_for(:h2).should == ::Fluent::WebElements::Heading
11
+ end
12
+
13
+ it 'should register with a h3 tag' do
14
+ ::Fluent::WebElements.get_class_for(:h3).should == ::Fluent::WebElements::Heading
15
+ end
16
+
17
+ it 'should register with a h4 tag' do
18
+ ::Fluent::WebElements.get_class_for(:h4).should == ::Fluent::WebElements::Heading
19
+ end
20
+
21
+ it 'should register with a h5 tag' do
22
+ ::Fluent::WebElements.get_class_for(:h5).should == ::Fluent::WebElements::Heading
23
+ end
24
+
25
+ it 'should register with a h6 tag' do
26
+ ::Fluent::WebElements.get_class_for(:h6).should == ::Fluent::WebElements::Heading
27
+ end
28
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Div' do
4
+
5
+ it 'should register with a hidden tag' do
6
+ ::Fluent::WebElements.get_class_for(:hidden).should == ::Fluent::WebElements::Hidden
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe 'Fluent::WebElements::Image' do
4
+
5
+ it 'should register with a image tag' do
6
+ ::Fluent::WebElements.get_class_for(:img).should == ::Fluent::WebElements::Image
7
+ end
8
+
9
+ end