jqueryui_widgets 0.3 → 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/.rvmrc +1 -1
- data/ChangeLog +6 -0
- data/Gemfile +1 -0
- data/Guardfile +1 -1
- data/features/html/menus.html +63 -0
- data/features/menus.feature +20 -0
- data/features/step_definitions/menu_steps.rb +30 -0
- data/features/support/pages/menu_page.rb +11 -0
- data/lib/jqueryui_widgets/basic_dialog.rb +17 -0
- data/lib/jqueryui_widgets/menus.rb +68 -0
- data/lib/jqueryui_widgets/progress_bar.rb +22 -0
- data/lib/jqueryui_widgets/version.rb +1 -1
- data/lib/jqueryui_widgets.rb +2 -0
- metadata +14 -5
data/.rvmrc
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
rvm --create use 1.9.3-
|
1
|
+
rvm --create use 1.9.3-p392@page-object
|
2
2
|
|
data/ChangeLog
CHANGED
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
guard 'cucumber', :notification =>
|
1
|
+
guard 'cucumber', :notification => true, :all_after_pass => false, :cli => '--profile focus' do
|
2
2
|
watch(%r{^features/.+\.feature$})
|
3
3
|
watch(%r{^features/support/.+$}) { 'features' }
|
4
4
|
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { 'features' }
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
|
3
|
+
<html lang="en">
|
4
|
+
<head>
|
5
|
+
<meta charset="utf-8" />
|
6
|
+
<title>jQuery UI Menu - Default functionality</title>
|
7
|
+
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
|
8
|
+
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
|
9
|
+
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
|
10
|
+
<link rel="stylesheet" href="/resources/demos/style.css" />
|
11
|
+
<script>
|
12
|
+
$(function() {
|
13
|
+
$( "#menu" ).menu();
|
14
|
+
});
|
15
|
+
</script>
|
16
|
+
<style>
|
17
|
+
.ui-menu { width: 150px; }
|
18
|
+
</style>
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
|
22
|
+
<ul id="menu">
|
23
|
+
<li class="ui-state-disabled"><a href="#">Aberdeen</a></li>
|
24
|
+
<li><a href="#">Ada</a></li>
|
25
|
+
<li><a href="#">Adamsville</a></li>
|
26
|
+
<li><a href="#">Addyston</a></li>
|
27
|
+
<li>
|
28
|
+
<a href="#">Delphi</a>
|
29
|
+
<ul>
|
30
|
+
<li class="ui-state-disabled"><a href="#">Ada</a></li>
|
31
|
+
<li><a href="#">Saarland</a></li>
|
32
|
+
<li><a href="#">Salzburg</a></li>
|
33
|
+
</ul>
|
34
|
+
</li>
|
35
|
+
<li><a href="#">Saarland</a></li>
|
36
|
+
<li>
|
37
|
+
<a href="#">Salzburg</a>
|
38
|
+
<ul>
|
39
|
+
<li>
|
40
|
+
<a href="#">Delphi</a>
|
41
|
+
<ul>
|
42
|
+
<li><a href="#">Ada</a></li>
|
43
|
+
<li><a href="#">Saarland</a></li>
|
44
|
+
<li><a href="#">Salzburg</a></li>
|
45
|
+
</ul>
|
46
|
+
</li>
|
47
|
+
<li>
|
48
|
+
<a href="#">Delphi</a>
|
49
|
+
<ul>
|
50
|
+
<li><a href="#">Ada</a></li>
|
51
|
+
<li><a href="#">Saarland</a></li>
|
52
|
+
<li><a href="#">Salzburg</a></li>
|
53
|
+
</ul>
|
54
|
+
</li>
|
55
|
+
<li><a href="#">Perch</a></li>
|
56
|
+
</ul>
|
57
|
+
</li>
|
58
|
+
<li class="ui-state-disabled"><a href="#">Amesville</a></li>
|
59
|
+
</ul>
|
60
|
+
|
61
|
+
|
62
|
+
</body>
|
63
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: Using the menus widget
|
2
|
+
|
3
|
+
This feature will test the ability to interact with menus and submenus.
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am on the menus page
|
7
|
+
|
8
|
+
|
9
|
+
Scenario: Using the menu widget
|
10
|
+
When I select the "Delphi" menu option
|
11
|
+
Then I should see the inactive option "Delphi", "Ada"
|
12
|
+
And I should see the "Delphi", "Saarland" option
|
13
|
+
|
14
|
+
Scenario: Selecting submenu items
|
15
|
+
When I select "Salzburg" and "Delphi" and "Ada"
|
16
|
+
Then I should see the "Salzburg", "Delphi", "Ada" option
|
17
|
+
|
18
|
+
@focus
|
19
|
+
Scenario: Should raise error when non-existing menu item is given
|
20
|
+
Then I should have an error when I search for menu item "Taco"
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Given /^I am on the menus page$/ do
|
2
|
+
visit MenuPage
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I select the "(.+)" menu option$/ do |item|
|
6
|
+
on(MenuPage).menus.select item
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should see the inactive option "(.+)", "(.+)"$/ do |item1, item2|
|
10
|
+
item = on(MenuPage).menus.search_for(item1, item2)
|
11
|
+
item.attribute('class').should include 'ui-state-disabled'
|
12
|
+
end
|
13
|
+
|
14
|
+
When /^I should see the "(.+)", "(.+)", "(.+)" option$/ do |item1, item2, item3|
|
15
|
+
item = on(MenuPage).menus.search_for(item1, item2, item3)
|
16
|
+
item.should_not be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
When /^I select "(.+)" and "(.+)" and "(.+)"$/ do |item1, item2, item3|
|
20
|
+
on(MenuPage).menus.select item1, item2, item3
|
21
|
+
end
|
22
|
+
|
23
|
+
Then /^I should have an error when I search for menu item "([^"]*)"$/ do |item|
|
24
|
+
expect {on(MenuPage).menus.search_for(item)}.to raise_error("Unable to find menu item #{item}")
|
25
|
+
end
|
26
|
+
|
27
|
+
When /^I should see the "([^"]*)", "([^"]*)" option$/ do |item1, item2|
|
28
|
+
item = on(MenuPage).menus.search_for(item1, item2)
|
29
|
+
item.should_not be_nil
|
30
|
+
end
|
@@ -1,13 +1,30 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# Basic Dialog allows JQuery UI Widgets to interact
|
4
|
+
# with the basic dialogs that JQueryUI pops up.
|
5
|
+
#
|
1
6
|
class JQueryUIWidgets::BasicDialog < PageObject::Elements::Div
|
2
7
|
|
8
|
+
#
|
9
|
+
# The title function grabs the span element of the title
|
10
|
+
# bar in the UI dialog and returns the text.
|
11
|
+
#
|
3
12
|
def title
|
4
13
|
div_element(:class => 'ui-dialog-titlebar').span_element.text
|
5
14
|
end
|
6
15
|
|
16
|
+
#
|
17
|
+
# Content function will return the entire text of
|
18
|
+
# the JQuery UI dialog box.
|
19
|
+
#
|
7
20
|
def content
|
8
21
|
div_element(:class => 'ui-dialog-content').text
|
9
22
|
end
|
10
23
|
|
24
|
+
#
|
25
|
+
# Close function will, of course, click the button
|
26
|
+
# labeled close.
|
27
|
+
#
|
11
28
|
def close
|
12
29
|
button_element(:class => 'ui-dialog-titlebar-close').click
|
13
30
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# Class that wraps the jQueryUI menu.
|
4
|
+
#
|
5
|
+
class JQueryUIWidgets::Menus < PageObject::Elements::UnorderedList
|
6
|
+
|
7
|
+
#
|
8
|
+
# The select method allows you to pass in a theoretically
|
9
|
+
# infinite number of variables from the base source through the
|
10
|
+
# step definitions and into page to iterate through the top
|
11
|
+
# menu and into any submenus you encounter.
|
12
|
+
#
|
13
|
+
# @params [Array] the menu items to find. Items will be found
|
14
|
+
# in the order in which they were provided.
|
15
|
+
#
|
16
|
+
# @example
|
17
|
+
# select('Salzburg', 'Delphi', 'Ada')
|
18
|
+
# will click through the menu 'Salzburg'
|
19
|
+
# the sub menu 'Delphi'
|
20
|
+
# and click on 'Ada' in the final submenu
|
21
|
+
#
|
22
|
+
def select(*labels)
|
23
|
+
loop_through_menu_items(labels) do |list_item|
|
24
|
+
list_item.fire_event('onclick')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# Search_for allows the user to supplement the select method
|
30
|
+
# and search for a specific element within a menu or sub-menu.
|
31
|
+
#
|
32
|
+
# @params [Array] the menu items to search for. Items will
|
33
|
+
# be found in the order they are given.
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# search_for('Delphi', 'Ada')
|
37
|
+
# will find 'Ada' in the sub-menu.
|
38
|
+
#
|
39
|
+
def search_for(*labels)
|
40
|
+
the_list_item = nil
|
41
|
+
loop_through_menu_items(labels) do |list_item|
|
42
|
+
the_list_item = list_item
|
43
|
+
end
|
44
|
+
the_list_item
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def loop_through_menu_items(labels)
|
50
|
+
menu_container = self
|
51
|
+
labels.each do |label|
|
52
|
+
item_found = false
|
53
|
+
menu_items_for(menu_container).each do |list_item|
|
54
|
+
if list_item.text.slice!(label) == label
|
55
|
+
yield list_item
|
56
|
+
menu_container = list_item.unordered_list_element
|
57
|
+
item_found = true
|
58
|
+
break
|
59
|
+
end
|
60
|
+
end
|
61
|
+
raise("Unable to find menu item #{label}") unless item_found
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def menu_items_for(menu)
|
66
|
+
menu.list_item_elements
|
67
|
+
end
|
68
|
+
end
|
@@ -1,13 +1,35 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# The progress bar class will interact with the
|
4
|
+
# JQuery UI Widget Progress Bar and allow for
|
5
|
+
# returning the Minimum value, Maximum Value and
|
6
|
+
# Current progress.
|
7
|
+
#
|
1
8
|
class JQueryUIWidgets::ProgressBar < PageObject::Elements::Div
|
2
9
|
|
10
|
+
#
|
11
|
+
# The minimum function returns the minimum
|
12
|
+
# possible value of the progress bar by
|
13
|
+
# returning the 'aria-valuemin' attribute's
|
14
|
+
# value.
|
15
|
+
#
|
3
16
|
def minimum
|
4
17
|
convert_to_number attribute('aria-valuemin')
|
5
18
|
end
|
6
19
|
|
20
|
+
#
|
21
|
+
# The maximum function returns the maximum
|
22
|
+
# value of the progress bar by returning
|
23
|
+
# the 'aria-valuemax' attribute's value.
|
7
24
|
def maximum
|
8
25
|
convert_to_number attribute('aria-valuemax')
|
9
26
|
end
|
10
27
|
|
28
|
+
#
|
29
|
+
# The Current function returns the current
|
30
|
+
# value of the progress bar by returning the
|
31
|
+
# 'aria-valuenow' attribute's value.
|
32
|
+
#
|
11
33
|
def current
|
12
34
|
convert_to_number attribute('aria-valuenow')
|
13
35
|
end
|
data/lib/jqueryui_widgets.rb
CHANGED
@@ -3,11 +3,13 @@ require "jqueryui_widgets/version"
|
|
3
3
|
require 'jqueryui_widgets/basic_dialog'
|
4
4
|
require 'jqueryui_widgets/tabs'
|
5
5
|
require 'jqueryui_widgets/progress_bar'
|
6
|
+
require 'jqueryui_widgets/menus'
|
6
7
|
|
7
8
|
module JQueryUIWidgets
|
8
9
|
|
9
10
|
PageObject.register_widget(:jqueryui_basic_dialog, JQueryUIWidgets::BasicDialog, 'div')
|
10
11
|
PageObject.register_widget(:jqueryui_tabs, JQueryUIWidgets::Tabs, 'ul')
|
11
12
|
PageObject.register_widget(:jqueryui_progress_bar, JQueryUIWidgets::ProgressBar, 'div')
|
13
|
+
PageObject.register_widget(:jqueryui_menus, JQueryUIWidgets::Menus, 'ul')
|
12
14
|
|
13
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jqueryui_widgets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-03-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: page-object
|
@@ -82,23 +82,28 @@ files:
|
|
82
82
|
- features/html/jquery-1.9.1.js
|
83
83
|
- features/html/jquery-ui.css
|
84
84
|
- features/html/jquery-ui.js
|
85
|
+
- features/html/menus.html
|
85
86
|
- features/html/progress_bar.html
|
86
87
|
- features/html/style.css
|
87
88
|
- features/html/tabs.html
|
89
|
+
- features/menus.feature
|
88
90
|
- features/progress_bar.feature
|
89
91
|
- features/step_definitions/basic_dialog_steps.rb
|
90
92
|
- features/step_definitions/common_steps.rb
|
93
|
+
- features/step_definitions/menu_steps.rb
|
91
94
|
- features/step_definitions/progress_bar_steps.rb
|
92
95
|
- features/step_definitions/tab_steps.rb
|
93
96
|
- features/support/env.rb
|
94
97
|
- features/support/hooks.rb
|
95
98
|
- features/support/pages/basic_dialog_page.rb
|
99
|
+
- features/support/pages/menu_page.rb
|
96
100
|
- features/support/pages/progress_bar_page.rb
|
97
101
|
- features/support/pages/tabs_page.rb
|
98
102
|
- features/tabs.feature
|
99
103
|
- jqueryui_widgets.gemspec
|
100
104
|
- lib/jqueryui_widgets.rb
|
101
105
|
- lib/jqueryui_widgets/basic_dialog.rb
|
106
|
+
- lib/jqueryui_widgets/menus.rb
|
102
107
|
- lib/jqueryui_widgets/progress_bar.rb
|
103
108
|
- lib/jqueryui_widgets/tabs.rb
|
104
109
|
- lib/jqueryui_widgets/version.rb
|
@@ -116,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
121
|
version: '0'
|
117
122
|
segments:
|
118
123
|
- 0
|
119
|
-
hash: -
|
124
|
+
hash: -2992611760453298873
|
120
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
126
|
none: false
|
122
127
|
requirements:
|
@@ -125,10 +130,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
130
|
version: '0'
|
126
131
|
segments:
|
127
132
|
- 0
|
128
|
-
hash: -
|
133
|
+
hash: -2992611760453298873
|
129
134
|
requirements: []
|
130
135
|
rubyforge_project:
|
131
|
-
rubygems_version: 1.8.
|
136
|
+
rubygems_version: 1.8.25
|
132
137
|
signing_key:
|
133
138
|
specification_version: 3
|
134
139
|
summary: Wrapper around jQueryUI controls for use with page-object gem
|
@@ -138,17 +143,21 @@ test_files:
|
|
138
143
|
- features/html/jquery-1.9.1.js
|
139
144
|
- features/html/jquery-ui.css
|
140
145
|
- features/html/jquery-ui.js
|
146
|
+
- features/html/menus.html
|
141
147
|
- features/html/progress_bar.html
|
142
148
|
- features/html/style.css
|
143
149
|
- features/html/tabs.html
|
150
|
+
- features/menus.feature
|
144
151
|
- features/progress_bar.feature
|
145
152
|
- features/step_definitions/basic_dialog_steps.rb
|
146
153
|
- features/step_definitions/common_steps.rb
|
154
|
+
- features/step_definitions/menu_steps.rb
|
147
155
|
- features/step_definitions/progress_bar_steps.rb
|
148
156
|
- features/step_definitions/tab_steps.rb
|
149
157
|
- features/support/env.rb
|
150
158
|
- features/support/hooks.rb
|
151
159
|
- features/support/pages/basic_dialog_page.rb
|
160
|
+
- features/support/pages/menu_page.rb
|
152
161
|
- features/support/pages/progress_bar_page.rb
|
153
162
|
- features/support/pages/tabs_page.rb
|
154
163
|
- features/tabs.feature
|