funfx 0.2.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.
Files changed (88) hide show
  1. data/History.txt +18 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +87 -0
  4. data/README.txt +48 -0
  5. data/Rakefile +5 -0
  6. data/config/hoe.rb +67 -0
  7. data/config/requirements.rb +15 -0
  8. data/ext/FunFX.swc +0 -0
  9. data/lib/funfx.rb +34 -0
  10. data/lib/funfx/browser/firewatir.rb +47 -0
  11. data/lib/funfx/browser/flex_app_lookup.rb +22 -0
  12. data/lib/funfx/browser/safariwatir.rb +47 -0
  13. data/lib/funfx/browser/watir.rb +41 -0
  14. data/lib/funfx/decoder.rb +67 -0
  15. data/lib/funfx/flex/element.rb +161 -0
  16. data/lib/funfx/flex/elements.rb +2712 -0
  17. data/lib/funfx/flex/flex_app_id.rb +15 -0
  18. data/lib/funfx/flex/tabular_data.rb +22 -0
  19. data/lib/funfx/meta/class_dot.erb +24 -0
  20. data/lib/funfx/meta/code.erb +33 -0
  21. data/lib/funfx/meta/generator.rb +18 -0
  22. data/lib/funfx/meta/parser.rb +190 -0
  23. data/lib/funfx/version.rb +9 -0
  24. data/rake_tasks/deployment.rake +34 -0
  25. data/rake_tasks/environment.rake +7 -0
  26. data/rake_tasks/generation.rake +37 -0
  27. data/rake_tasks/hoe_ext.rake +11 -0
  28. data/rake_tasks/rspec.rake +28 -0
  29. data/script/console +10 -0
  30. data/script/console.cmd +1 -0
  31. data/script/destroy +14 -0
  32. data/script/destroy.cmd +1 -0
  33. data/script/generate +14 -0
  34. data/script/generate.cmd +1 -0
  35. data/script/txt2html +82 -0
  36. data/script/txt2html.cmd +1 -0
  37. data/setup.rb +1585 -0
  38. data/spec/funfx/demo_app/accordion_spec.rb +38 -0
  39. data/spec/funfx/demo_app/advanced_data_grid_spec.rb +74 -0
  40. data/spec/funfx/demo_app/alert_spec.rb +33 -0
  41. data/spec/funfx/demo_app/button_bar_spec.rb +21 -0
  42. data/spec/funfx/demo_app/button_spec.rb +68 -0
  43. data/spec/funfx/demo_app/check_box_spec.rb +62 -0
  44. data/spec/funfx/demo_app/control_bar_spec.rb +19 -0
  45. data/spec/funfx/demo_app/controls_with_same_id_spec.rb +37 -0
  46. data/spec/funfx/demo_app/data_grid_editable_spec.rb +78 -0
  47. data/spec/funfx/demo_app/data_grid_spec.rb +65 -0
  48. data/spec/funfx/demo_app/date_chooser_spec.rb +67 -0
  49. data/spec/funfx/demo_app/date_field_spec.rb +36 -0
  50. data/spec/funfx/demo_app/form_spec.rb +22 -0
  51. data/spec/funfx/demo_app/grid_layout_spec.rb +23 -0
  52. data/spec/funfx/demo_app/h_scrollbar_spec.rb +25 -0
  53. data/spec/funfx/demo_app/h_slider_spec.rb +21 -0
  54. data/spec/funfx/demo_app/horizontal_list_spec.rb +24 -0
  55. data/spec/funfx/demo_app/label_spec.rb +18 -0
  56. data/spec/funfx/demo_app/link_bar_spec.rb +57 -0
  57. data/spec/funfx/demo_app/link_button_spec.rb +21 -0
  58. data/spec/funfx/demo_app/list_spec.rb +23 -0
  59. data/spec/funfx/demo_app/menu_bar_spec.rb +33 -0
  60. data/spec/funfx/demo_app/menu_spec.rb +27 -0
  61. data/spec/funfx/demo_app/numeric_stepper_spec.rb +37 -0
  62. data/spec/funfx/demo_app/popup_button_spec.rb +36 -0
  63. data/spec/funfx/demo_app/popup_menu_bar_spec.rb +42 -0
  64. data/spec/funfx/demo_app/progress_bar_spec.rb +24 -0
  65. data/spec/funfx/demo_app/radio_button_group_spec.rb +50 -0
  66. data/spec/funfx/demo_app/radio_button_spec.rb +26 -0
  67. data/spec/funfx/demo_app/record_test_spec.rb +20 -0
  68. data/spec/funfx/demo_app/repeater_control_spec.rb +65 -0
  69. data/spec/funfx/demo_app/tab_bar_spec.rb +19 -0
  70. data/spec/funfx/demo_app/tab_navigator_spec.rb +19 -0
  71. data/spec/funfx/demo_app/test_spec.rb +19 -0
  72. data/spec/funfx/demo_app/text_area_spec.rb +28 -0
  73. data/spec/funfx/demo_app/text_input_spec.rb +28 -0
  74. data/spec/funfx/demo_app/text_spec.rb +18 -0
  75. data/spec/funfx/demo_app/tile_button_spec.rb +20 -0
  76. data/spec/funfx/demo_app/tile_list_spec.rb +25 -0
  77. data/spec/funfx/demo_app/title_window_spec.rb +40 -0
  78. data/spec/funfx/demo_app/toggle_button_spec.rb +19 -0
  79. data/spec/funfx/demo_app/tree_drag_and_drop_spec.rb +39 -0
  80. data/spec/funfx/demo_app/tree_spec.rb +24 -0
  81. data/spec/funfx/demo_app/view_stack_spec.rb +27 -0
  82. data/spec/funfx/flex/element_spec.rb +115 -0
  83. data/spec/funfx/flex/flex_app_id_spec.rb +40 -0
  84. data/spec/funfx/meta/generator_spec.rb +16 -0
  85. data/spec/funfx/meta/parser_spec.rb +88 -0
  86. data/spec/spec.opts +1 -0
  87. data/spec/spec_helper.rb +41 -0
  88. metadata +166 -0
@@ -0,0 +1,38 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DemoApp" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+ end
8
+
9
+ it "should raise error when click non existent" do
10
+ tree = @flex.tree({:id => 'objectTree'})
11
+ tree.open('Container controls')
12
+ tree.select('Container controls>Accordion1')
13
+
14
+ accordion = @flex.accordion({:id => 'accordion'})
15
+
16
+ lambda do
17
+ accordion.box({:automationName => 'Accordion Button for Panel 5'}).click
18
+ end.should raise_error("Error: Unable to resolve child with locator: {:automationName => 'Accordion Button for Panel 5'}, and parent: {:id => 'accordion'}")
19
+ end
20
+
21
+ it "should click toggle button" do
22
+ tree = @flex.tree({:id => 'objectTree'})
23
+ tree.open('Container controls')
24
+ tree.select('Container controls>Accordion1')
25
+
26
+ accordion = @flex.accordion({:id => 'accordion'})
27
+
28
+ accordion.box({:automationName => 'Accordion Button for Panel 1'}).visible?.should == true
29
+ accordion.box({:automationName => 'Accordion Button for Panel 2'}).visible?.should == false
30
+ accordion.box({:automationName => 'Accordion Button for Panel 3'}).visible?.should == false
31
+
32
+ accordion.change("Accordion Button for Panel 3")
33
+
34
+ accordion.box({:automationName => 'Accordion Button for Panel 1'}).visible?.should == false
35
+ accordion.box({:automationName => 'Accordion Button for Panel 2'}).visible?.should == false
36
+ accordion.box({:automationName => 'Accordion Button for Panel 3'}).visible?.should == true
37
+ end
38
+ end
@@ -0,0 +1,74 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DemoApp" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+
8
+ tree = @flex.tree({:id => 'objectTree'})
9
+ tree.open('General controls')
10
+ tree.select('General controls>AdvancedDataGrid1')
11
+
12
+ @advanced_data_grid = @flex.advanced_data_grid({:id => 'myADG'})
13
+ end
14
+
15
+ it "should get data from an advanceddatagrid" do
16
+ @advanced_data_grid.column_names.should == ['Region', 'Territory']
17
+
18
+ @advanced_data_grid.values(0,1).should == [
19
+ ["Southwest", " "]
20
+ ]
21
+ end
22
+
23
+ it "should get data from an open advanceddatagrid" do
24
+ @advanced_data_grid.item_open("*Southwest* | ")
25
+ @advanced_data_grid.item_open("*Nevada* | ")
26
+
27
+ @advanced_data_grid.column_names.should == ['Region', 'Territory']
28
+
29
+ @advanced_data_grid.values(0,4).should == [
30
+ ["Southwest", " "],
31
+ ["Arizona", " "],
32
+ ["Central California", " "],
33
+ ["Nevada", " "],
34
+ ["Southwest", "Nevada"]
35
+ ]
36
+ end
37
+
38
+ it "should get data with commas" do
39
+ @advanced_data_grid.item_open("*Southwest* | ")
40
+
41
+ @advanced_data_grid.values(0,8).last.should == ["Territory With,Comma", " "]
42
+ end
43
+
44
+ it "should get the number of columns in the advanceddatagrid" do
45
+ @advanced_data_grid.num_columns.should == 2
46
+ end
47
+
48
+ it "should get the number of rows with data in a closed advanceddatagrid" do
49
+ @advanced_data_grid.num_rows.should == 1
50
+ end
51
+
52
+ it "should get the number of rows with data in an open advanceddatagrid" do
53
+ @advanced_data_grid.item_open("*Southwest* | ")
54
+ @advanced_data_grid.num_rows.should == 7
55
+ end
56
+
57
+ it "should select a row" do
58
+ @advanced_data_grid.select("*Southwest* | ")
59
+ end
60
+
61
+ it "should open a row" do
62
+ @advanced_data_grid.item_open("*Southwest* | ")
63
+ end
64
+
65
+ it "should close a row" do
66
+ @advanced_data_grid.item_open("*Southwest* | ")
67
+ @advanced_data_grid.item_close("*Southwest* | ")
68
+ end
69
+
70
+ it "should select a row by index" do
71
+ @advanced_data_grid.item_open("*Southwest* | ")
72
+ @advanced_data_grid.select_index(4)
73
+ end
74
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DemoApp" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+ end
8
+
9
+ it "should be able to navigate an alert" do
10
+ tree = @flex.tree({:id => 'objectTree'})
11
+ tree.open('General controls')
12
+ sleep(1)
13
+ # sleep command: I Have a small screen on my computer, and when the tree is expanded a scrollbar appears
14
+ # thus making the test exit as it has done the select properly, but it has not and the following steps fail.
15
+ # Hav tried to do some more sync work on the flex side, but it seems to be a bug
16
+ tree.select('General controls>Alert1')
17
+
18
+ button = @flex.button({:id => 'bWorld'})
19
+ button.click
20
+
21
+ alert = @flex.alert({:automationName => 'Message'})
22
+ alert.should be_visible
23
+
24
+ alert.text.strip.should == "Hello World!"
25
+
26
+ button = @flex.alert({:automationName => 'Message'}).button({:automationName => 'OK'})
27
+ button.click
28
+
29
+ lambda do
30
+ alert.visible?
31
+ end.should raise_error
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DemoApp" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+ end
8
+
9
+ it "should click on button" do
10
+ tree = @flex.tree({:id => 'objectTree'})
11
+ tree.open('Button controls')
12
+ tree.select('Button controls>ButtonBar1')
13
+
14
+ button_bar = @flex.button_bar({:id => 'bBar'})
15
+ button_bar.change('Flash')
16
+
17
+ text_area = @flex.text_area({:id => 'myTA'})
18
+ text_area.text.strip.should == "Selected button index: 0\rSelected button label: Flash"
19
+ end
20
+
21
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DemoApp" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+ end
8
+
9
+ it "should open tree and click default button" do
10
+ tree = @flex.tree({:id => 'objectTree'})
11
+ tree.open('Button controls')
12
+ tree.select('Button controls>Button1')
13
+
14
+ button = @flex.button({:automationName => 'Default Button'})
15
+ button.click
16
+
17
+ message = @flex.text_area({:id => 'message'})
18
+ message.text.strip.should == "Default Button pressed"
19
+ end
20
+
21
+ it "should raise error when firing event on nonexistant element" do
22
+ tree = @flex.tree({:id => 'nonsense'})
23
+ lambda do
24
+ tree.open('Button controls')
25
+ end.should raise_error("Error: Unable to resolve child with locator: {:id => 'nonsense'}")
26
+ end
27
+
28
+ it "should be disabled" do
29
+ tree = @flex.tree({:id => 'objectTree'})
30
+ tree.open('Button controls')
31
+ tree.select('Button controls>Button1')
32
+
33
+ button = @flex.button({:id => 'bDisabledButton'})
34
+ button.enabled?.should == false
35
+ end
36
+
37
+ it "should be able to get label" do
38
+ tree = @flex.tree({:id => 'objectTree'})
39
+ tree.open('Button controls')
40
+ tree.select('Button controls>Button1')
41
+
42
+ button = @flex.button({:automationName => 'Customized Button'})
43
+ button.label.should == "Customized Button"
44
+ end
45
+
46
+ it "should be able to see what type of text" do
47
+ tree = @flex.tree({:id => 'objectTree'})
48
+ tree.open('Button controls')
49
+ tree.select('Button controls>Button1')
50
+
51
+ button = @flex.button({:automationName => 'Customized Button'})
52
+
53
+ pending "Find out why we can't look up fontStyle" do
54
+ button.font_style.should == "italic"
55
+ button.text_align.should == "left"
56
+ end
57
+ end
58
+
59
+ it "should look up elements in nested fashion" do
60
+ tree = @flex.tree({:id => 'objectTree'})
61
+ tree.open('Button controls')
62
+ tree.select('Button controls>Button1')
63
+
64
+ button = @flex.panel(:automationName => 'Button Control Example').button(:automationName => 'Customized Button')
65
+ button.label.should == "Customized Button"
66
+ end
67
+
68
+ end
@@ -0,0 +1,62 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+
4
+ describe "DemoApp" do
5
+ before do
6
+ browser.goto(DEMO_APP)
7
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
8
+ end
9
+
10
+ it "should click on a checkbox" do
11
+ tree = @flex.tree({:id => 'objectTree'})
12
+ tree.open('Button controls')
13
+ tree.select('Button controls>CheckBox1')
14
+
15
+ check_box = @flex.check_box({:id => 'milkCB'})
16
+ check_box.click
17
+
18
+ message = @flex.text_area({:id => 'cartItems'})
19
+ message.text.strip.should == "milk"
20
+ end
21
+
22
+ it "should assert that it is checked" do
23
+ tree = @flex.tree({:id => 'objectTree'})
24
+ tree.open('Button controls')
25
+ tree.select('Button controls>CheckBox1')
26
+
27
+ check_box = @flex.check_box({:id => 'milkCB'})
28
+
29
+ check_box.selected? == false
30
+
31
+ check_box.click
32
+
33
+ check_box.selected? == true
34
+
35
+
36
+ end
37
+
38
+ it "should select multiple checkboxes" do
39
+ tree = @flex.tree({:id => 'objectTree'})
40
+ tree.open('Button controls')
41
+ tree.select('Button controls>CheckBox1')
42
+
43
+ check_box = @flex.check_box({:id => 'milkCB'})
44
+ check_box.click
45
+ check_box = @flex.check_box({:id => 'eggsCB'})
46
+ check_box.click
47
+
48
+
49
+ message = @flex.text_area({:id => 'cartItems'})
50
+ message.text.strip.should == "milk\reggs"
51
+ end
52
+
53
+ it "should check the label" do
54
+ tree = @flex.tree({:id => 'objectTree'})
55
+ tree.open('Button controls')
56
+ tree.select('Button controls>CheckBox1')
57
+
58
+ check_box = @flex.check_box({:id => 'milkCB'})
59
+ check_box.label.strip.should == "milk"
60
+ end
61
+
62
+ end
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "ControlBar" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+
8
+ tree = @flex.tree({:id => 'objectTree'})
9
+ tree.open('Container controls')
10
+ tree.select('Container controls>ControlBar')
11
+ end
12
+
13
+ it "should click on button within controlbar" do
14
+ panel = @flex.panel({:id => 'controlBarPanel'})
15
+ panel.button({:id => 'cbButton'}).click
16
+ @flex.label({:id => 'cbLabel'}).text.should == "Button was clicked"
17
+ end
18
+
19
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DemoApp" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+
8
+ tree = flex.tree({:id => 'objectTree'})
9
+ tree.open('General controls', "1")
10
+ tree.select('General controls>SameIdControl1')
11
+
12
+ @panel6 = flex.box({:id => 'sameIdPanel', :automationIndex => 'index:6'})
13
+ @panel8 = flex.box({:id => 'sameIdPanel', :automationIndex => 'index:8'})
14
+
15
+ @label6 = @panel6.label_element({:id => 'lResult'})
16
+ @label8 = @panel8.label_element({:id => 'lResult'})
17
+
18
+ @label6.text.strip.should == ""
19
+ @label8.text.strip.should == ""
20
+ end
21
+
22
+ it "should enter text into the first box" do
23
+ @panel6.text_area({:id => 'tInput'}).input("First control")
24
+ @panel6.button({:id => 'bOk'}).click
25
+
26
+ @label6.text.strip.should == "First control"
27
+ @label8.text.strip.should == ""
28
+ end
29
+
30
+ it "should enter text into the second box" do
31
+ @panel8.text_area({:id => 'tInput'}).input("Second control")
32
+ @panel8.button({:id => 'bOk'}).click
33
+
34
+ @label8.text.strip.should == "Second control"
35
+ @label6.text.strip.should == ""
36
+ end
37
+ end
@@ -0,0 +1,78 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "EditableDataGrid" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+
8
+ tree = @flex.tree({:id => 'objectTree'})
9
+ tree.open('General controls')
10
+ tree.select('General controls>EditableDataGrid1')
11
+
12
+ @data_grid = @flex.data_grid({:id => 'dgEditable'})
13
+ end
14
+
15
+ it "should edit a cell in the datagrid by using automationIndex" do
16
+ @data_grid.values(0,3).should == [
17
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com", "true" ],
18
+ ["Joanne Wall", "555-219-2012", "jwall@fictitious.com" , "true" ],
19
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" , "false"],
20
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" , "true" ]
21
+ ]
22
+
23
+ @data_grid.select("*Joanne Wall* | 555-219-2012 | jwall@fictitious.com | true")
24
+ @data_grid.text_area({:automationIndex => 'name:1'}).input('Peter')
25
+ @data_grid.select("Peter | *555-219-2012* | jwall@fictitious.com | true")
26
+ @data_grid.text_area({:automationIndex => 'phone:1'}).input('7777')
27
+ @flex.box({:id => 'dgPanel'}).click
28
+
29
+ @data_grid.values(0,3).should == [
30
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com", "true" ],
31
+ ["Peter", "7777", "jwall@fictitious.com" , "true" ],
32
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" , "false"],
33
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" , "true" ]
34
+ ]
35
+ end
36
+
37
+ it "should edit a cell with itemrenderer in the datagrid by using automationIndex" do
38
+ @data_grid.values(0,3).should == [
39
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com", "true" ],
40
+ ["Joanne Wall", "555-219-2012", "jwall@fictitious.com" , "true" ],
41
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" , "false"],
42
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" , "true" ]
43
+ ]
44
+
45
+ @data_grid.select("Joanne Wall | 555-219-2012 | jwall@fictitious.com | *true*")
46
+ @data_grid.combo_box({:automationIndex => 'active:1'}).open
47
+ @data_grid.combo_box({:automationIndex => 'active:1'}).select('false')
48
+ @flex.box({:id => 'dgPanel'}).click
49
+
50
+ @data_grid.values(0,3).should == [
51
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com", "true" ],
52
+ ["Joanne Wall", "555-219-2012", "jwall@fictitious.com" , "false"],
53
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" , "false"],
54
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" , "true" ]
55
+ ]
56
+ end
57
+
58
+ it "should edit a cell in the datagrid by using automationValue" do
59
+ @data_grid.values(0,3).should == [
60
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com", "true" ],
61
+ ["Joanne Wall", "555-219-2012", "jwall@fictitious.com" , "true" ],
62
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" , "false"],
63
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" , "true" ]
64
+ ]
65
+
66
+ @data_grid.select("*Joanne Wall* | 555-219-2012 | jwall@fictitious.com | true")
67
+ @data_grid.text_area({:automationValue => 'Joanne Wall'}).input('Peter')
68
+ @flex.box({:id => 'dgPanel'}).click
69
+
70
+ @data_grid.values(0,3).should == [
71
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com", "true" ],
72
+ ["Peter", "555-219-2012", "jwall@fictitious.com" , "true" ],
73
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" , "false"],
74
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" , "true" ]
75
+ ]
76
+ end
77
+
78
+ end
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe "DataGrid" do
4
+ before do
5
+ browser.goto(DEMO_APP)
6
+ @flex = browser.flex_app('DemoAppId', 'DemoAppName')
7
+
8
+ tree = @flex.tree({:id => 'objectTree'})
9
+ tree.open('General controls')
10
+ tree.select('General controls>DataGrid1')
11
+
12
+ @data_grid = @flex.data_grid({:id => 'dg'})
13
+ end
14
+
15
+ it "should get columnnames from a datagrid" do
16
+ pending "Find out why invisible columns is shown" do
17
+ @data_grid.column_names.should == ['name', 'phone', 'email']
18
+ end
19
+ end
20
+
21
+ it "should get data from a datagrid" do
22
+ pending "Find out why invisible columns is shown" do
23
+ @data_grid.values(0,3).should == [
24
+ ["Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com"],
25
+ ["Joanne Wall", "555-219-2012", "jwall@fictitious.com" ],
26
+ ["Maurice Smith", "555-219-2012", "maurice@fictitious.com" ],
27
+ ["Mary Jones", "555-219-2000", "mjones@fictitious.com" ]
28
+ ]
29
+ end
30
+ end
31
+
32
+ it "should get num_columns from a datagrid" do
33
+ pending "Find out why invisible columns is shown" do
34
+ @data_grid.num_columns.should == 3
35
+ end
36
+ end
37
+
38
+ it "should get num_rows from a datagrid" do
39
+ @data_grid.num_rows.should == 4
40
+ end
41
+
42
+ it "should select row" do
43
+ @data_grid.select("*Joanne Wall* | 555-219-2012 | jwall@fictitious.com")
44
+
45
+ @data_grid.selected_index.should == 1
46
+ end
47
+
48
+ it "should deselect row" do
49
+ @data_grid.select("*Joanne Wall* | 555-219-2012 | jwall@fictitious.com")
50
+ @data_grid.deselect("*Joanne Wall* | 555-219-2012 | jwall@fictitious.com")
51
+ end
52
+
53
+ it "should drag and drop" do
54
+ pending "Find out why invisible columns is shown" do
55
+ @data_grid.drag_start("*Joanne Wall* | 555-219-2012 | jwall@fictitious.com")
56
+
57
+ data_grid_drop = @flex.data_grid({:id => 'dgDrop'})
58
+ data_grid_drop.drag_drop('copy')
59
+
60
+ data_grid_drop.values(0,0).should == [
61
+ ["Joanne Wall", "555-219-2012", "jwall@fictitious.com"]
62
+ ]
63
+ end
64
+ end
65
+ end