druid-ts 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +27 -0
  3. data/features/async.feature +6 -0
  4. data/features/div.feature +1 -0
  5. data/features/element.feature +4 -0
  6. data/features/hidden_field.feature +0 -2
  7. data/features/html/async.html +13 -0
  8. data/features/html/multi_elements.html +4 -0
  9. data/features/html/static_elements.html +10 -3
  10. data/features/link.feature +1 -0
  11. data/features/multi_elements.feature +135 -25
  12. data/features/select_list.feature +8 -0
  13. data/features/span.feature +2 -0
  14. data/features/step_definations/async_steps.rb +17 -0
  15. data/features/step_definations/element_steps.rb +6 -0
  16. data/features/step_definations/multi_elements_steps.rb +96 -0
  17. data/features/step_definations/select_list_steps.rb +12 -0
  18. data/features/step_definations/table_steps.rb +20 -3
  19. data/features/support/ajax_test_environment.rb +1 -1
  20. data/features/support/page.rb +7 -2
  21. data/features/table.feature +35 -0
  22. data/features/text_area.feature +0 -2
  23. data/features/text_field.feature +1 -2
  24. data/lib/druid.rb +31 -3
  25. data/lib/druid/accessors.rb +184 -146
  26. data/lib/druid/assist.rb +10 -2
  27. data/lib/druid/element_locators.rb +186 -102
  28. data/lib/druid/elements/div.rb +1 -1
  29. data/lib/druid/elements/element.rb +131 -96
  30. data/lib/druid/elements/hidden_field.rb +1 -5
  31. data/lib/druid/elements/link.rb +1 -1
  32. data/lib/druid/elements/select_list.rb +8 -0
  33. data/lib/druid/elements/span.rb +1 -1
  34. data/lib/druid/elements/table.rb +14 -3
  35. data/lib/druid/elements/table_row.rb +17 -2
  36. data/lib/druid/elements/text_area.rb +0 -8
  37. data/lib/druid/elements/text_field.rb +1 -1
  38. data/lib/druid/javascript/yui.rb +19 -0
  39. data/lib/druid/javascript_framework_facade.rb +3 -1
  40. data/lib/druid/nested_elements.rb +1 -1
  41. data/lib/druid/page_factory.rb +25 -0
  42. data/lib/druid/page_populator.rb +1 -0
  43. data/lib/druid/version.rb +1 -1
  44. data/spec/druid/accessors_spec.rb +189 -1
  45. data/spec/druid/druid_spec.rb +6 -0
  46. data/spec/druid/element_locators_spec.rb +276 -0
  47. data/spec/druid/elements/div_spec.rb +1 -1
  48. data/spec/druid/elements/element_spec.rb +11 -0
  49. data/spec/druid/elements/hidden_field_spec.rb +0 -5
  50. data/spec/druid/elements/link_spec.rb +1 -1
  51. data/spec/druid/elements/span_spec.rb +1 -1
  52. data/spec/druid/elements/text_area_spec.rb +0 -5
  53. data/spec/druid/elements/text_field_spec.rb +1 -1
  54. data/spec/druid/page_factory_spec.rb +20 -0
  55. data/spec/druid/page_populator_spec.rb +8 -4
  56. metadata +2 -1
@@ -4,7 +4,7 @@ require 'druid/elements'
4
4
  describe Druid::Elements::Div do
5
5
  describe "when mapping how to find an element" do
6
6
  it "should map watir types to same" do
7
- [:class, :id, :text, :index, :xpath].each do |t|
7
+ [:class, :id, :text, :index, :xpath, :title].each do |t|
8
8
  identifier = Druid::Elements::Div.identifier_for t => 'value'
9
9
  expect(identifier.keys.first).to eql t
10
10
  end
@@ -82,6 +82,12 @@ describe Druid::Elements::Element do
82
82
  expect(element.when_present(10)).to eq element
83
83
  end
84
84
 
85
+ it "should use the overriden wait when set" do
86
+ Druid.default_element_wait = 20
87
+ expect(we).to receive(:wait_until_present).with(20)
88
+ element.when_present
89
+ end
90
+
85
91
  it "should be able to block until it is visible" do
86
92
  expect(Watir::Wait).to receive(:until).with(10, "Element was not visible in 10 seconds")
87
93
  element.when_visible(10)
@@ -151,5 +157,10 @@ describe Druid::Elements::Element do
151
157
  expect(we).to receive(:enabled?).and_return(false)
152
158
  expect(element).to be_disabled
153
159
  end
160
+
161
+ it "should be able to flash element" do
162
+ expect(we).to receive(:flash)
163
+ element.flash
164
+ end
154
165
  end
155
166
  end
@@ -9,11 +9,6 @@ describe Druid::Elements::HiddenField do
9
9
  expect(identifier.keys.first).to eql t
10
10
  end
11
11
  end
12
-
13
- it "should map selenium types to watir" do
14
- identifier = Druid::Elements::HiddenField.identifier_for :css => 'value'
15
- expect(identifier.keys.first).to eql :tag_name
16
- end
17
12
  end
18
13
 
19
14
  describe "interface" do
@@ -4,7 +4,7 @@ require 'druid/elements'
4
4
  describe Druid::Elements::Link do
5
5
  describe "when mapping how to find an element" do
6
6
  it "should map watir types to same" do
7
- [:class, :href, :id, :name, :text, :xpath, :css].each do |t|
7
+ [:class, :href, :id, :name, :text, :xpath, :css, :title].each do |t|
8
8
  identifier = Druid::Elements::Link.identifier_for t => 'value'
9
9
  expect(identifier.keys.first).to eql t
10
10
  end
@@ -4,7 +4,7 @@ require 'druid/elements'
4
4
  describe Druid::Elements::Span do
5
5
  describe "when mapping how to find an element" do
6
6
  it "should map watir types to same" do
7
- [:class, :id, :index, :xpath, :text].each do |t|
7
+ [:class, :id, :index, :title, :xpath, :text].each do |t|
8
8
  identifier = Druid::Elements::Span.identifier_for t => 'value'
9
9
  expect(identifier.keys.first).to eql t
10
10
  end
@@ -9,11 +9,6 @@ describe Druid::Elements::TextArea do
9
9
  expect(identifier.keys.first).to eql t
10
10
  end
11
11
  end
12
-
13
- it "should map selenium types to watir" do
14
- identifier = Druid::Elements::TextArea.identifier_for :css => 'value'
15
- expect(identifier.keys.first).to eql :tag_name
16
- end
17
12
  end
18
13
 
19
14
  describe "interface" do
@@ -4,7 +4,7 @@ require 'druid/elements'
4
4
  describe Druid::Elements::TextField do
5
5
  describe "when mapping how to find an element" do
6
6
  it "should map watir types to same" do
7
- [:class, :id, :index, :name, :tag_name, :text, :css, :xpath, :title].each do |t|
7
+ [:class, :id, :index, :name, :text, :xpath, :title, :label].each do |t|
8
8
  identifier = Druid::Elements::TextField.identifier_for t => 'value'
9
9
  expect(identifier.keys.first).to eql t
10
10
  end
@@ -77,6 +77,26 @@ describe Druid::PageFactory do
77
77
  expect(current_page).to be page
78
78
  end
79
79
 
80
+ it "should not execute block if page is not @current_page" do
81
+ world.instance_variable_set "@current_page", TestPageWithDirectUrl.new(driver)
82
+ world.if_page(FactoryTestDruid) do |page|
83
+ fail
84
+ end
85
+ end
86
+
87
+ it "should return the @current_page if asking for another page" do
88
+ expected = TestPageWithDirectUrl.new(driver)
89
+ world.instance_variable_set "@current_page", expected
90
+ expect(world.if_page(FactoryTestDruid)).to be expected
91
+ end
92
+
93
+ # it "should execute the block when we ask if it is the correct page" do
94
+ # world.instance_variable_set "@current_page", FactoryTestDruid.new(driver)
95
+ # world.if_page(FactoryTestDruid) do |page|
96
+ # expect(page).to be_instance_of FactoryTestDruid
97
+ # end
98
+ # end
99
+
80
100
  it "should raise an error when you do not provide a default route" do
81
101
  expect { Druid::PageFactory.routes = {:another => []} }.to raise_error 'You must provide a :default route for PageFactory routes'
82
102
  end
@@ -28,7 +28,8 @@ describe Druid::PagePopulator do
28
28
 
29
29
  it "should set a value in a text area" do
30
30
  expect(druid).to receive(:ta=).with('value')
31
- expect(druid).to receive(:is_enabled?).and_return(true)
31
+ expect(druid).to receive(:ta_element).and_return(driver)
32
+ expect(driver).to receive(:tag_name).and_return('textarea')
32
33
  druid.populate_page_with('ta' => 'value')
33
34
  end
34
35
 
@@ -70,22 +71,25 @@ describe Druid::PagePopulator do
70
71
 
71
72
  it "should not populate a checkbox if it is disabled" do
72
73
  expect(druid).not_to receive(:check_cb)
73
- expect(druid).to receive(:cb_element).and_return(driver)
74
+ expect(druid).to receive(:cb_element).twice.and_return(driver)
74
75
  expect(driver).to receive(:enabled?).and_return(false)
76
+ expect(driver).to receive(:tag_name).and_return('input')
75
77
  druid.populate_page_with('cb' => true)
76
78
  end
77
79
 
78
80
  it "should not populate a radio button when it is disabled" do
79
81
  expect(druid).not_to receive(:select_rb)
80
- expect(druid).to receive(:rb_element).and_return(driver)
82
+ expect(druid).to receive(:rb_element).twice.and_return(driver)
81
83
  expect(driver).to receive(:enabled?).and_return(false)
84
+ expect(driver).to receive(:tag_name).and_return('input')
82
85
  druid.populate_page_with('rb' => true)
83
86
  end
84
87
 
85
88
  it "should not populate a text field when it is disabled" do
86
89
  expect(druid).not_to receive(:tf=)
87
- expect(druid).to receive(:tf_element).and_return(driver)
90
+ expect(druid).to receive(:tf_element).twice.and_return(driver)
88
91
  expect(driver).to receive(:enabled?).and_return(false)
92
+ expect(driver).to receive(:tag_name).and_return("input")
89
93
  druid.populate_page_with('tf' => 'test')
90
94
  end
91
95
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: druid-ts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Sheng
@@ -205,6 +205,7 @@ files:
205
205
  - lib/druid/elements/unordered_list.rb
206
206
  - lib/druid/javascript/jquery.rb
207
207
  - lib/druid/javascript/prototype.rb
208
+ - lib/druid/javascript/yui.rb
208
209
  - lib/druid/javascript_framework_facade.rb
209
210
  - lib/druid/nested_elements.rb
210
211
  - lib/druid/page_factory.rb