bret-watircraft 0.4.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 (83) hide show
  1. data/BUGS.txt +11 -0
  2. data/History.txt +209 -0
  3. data/Manifest.txt +103 -0
  4. data/README.rdoc +75 -0
  5. data/VERSION.yml +4 -0
  6. data/app_generators/watircraft/USAGE +11 -0
  7. data/app_generators/watircraft/templates/config.yml.erb +3 -0
  8. data/app_generators/watircraft/templates/feature_helper.rb +12 -0
  9. data/app_generators/watircraft/templates/initialize.rb.erb +10 -0
  10. data/app_generators/watircraft/templates/rakefile.rb +3 -0
  11. data/app_generators/watircraft/templates/script/console +5 -0
  12. data/app_generators/watircraft/templates/script/console.cmd +1 -0
  13. data/app_generators/watircraft/templates/site_start.rb.erb +12 -0
  14. data/app_generators/watircraft/templates/spec_helper.rb +9 -0
  15. data/app_generators/watircraft/templates/spec_initialize.rb +16 -0
  16. data/app_generators/watircraft/templates/world.rb +12 -0
  17. data/app_generators/watircraft/watircraft_generator.rb +108 -0
  18. data/bin/watircraft +17 -0
  19. data/lib/extensions/array.rb +10 -0
  20. data/lib/extensions/hash.rb +5 -0
  21. data/lib/extensions/object.rb +24 -0
  22. data/lib/extensions/string.rb +17 -0
  23. data/lib/extensions/watir.rb +41 -0
  24. data/lib/taza/browser.rb +45 -0
  25. data/lib/taza/entity.rb +34 -0
  26. data/lib/taza/fixture.rb +66 -0
  27. data/lib/taza/flow.rb +40 -0
  28. data/lib/taza/page.rb +259 -0
  29. data/lib/taza/settings.rb +80 -0
  30. data/lib/taza/site.rb +227 -0
  31. data/lib/taza/tasks.rb +30 -0
  32. data/lib/taza.rb +35 -0
  33. data/lib/watircraft/generator_helper.rb +27 -0
  34. data/lib/watircraft/table.rb +56 -0
  35. data/lib/watircraft/version.rb +3 -0
  36. data/lib/watircraft.rb +1 -0
  37. data/spec/array_spec.rb +16 -0
  38. data/spec/browser_spec.rb +68 -0
  39. data/spec/entity_spec.rb +9 -0
  40. data/spec/fake_table.rb +34 -0
  41. data/spec/fixture_spec.rb +34 -0
  42. data/spec/fixtures_spec.rb +21 -0
  43. data/spec/hash_spec.rb +12 -0
  44. data/spec/object_spec.rb +29 -0
  45. data/spec/page_generator_spec.rb +111 -0
  46. data/spec/page_spec.rb +342 -0
  47. data/spec/project_generator_spec.rb +103 -0
  48. data/spec/sandbox/config/config.yml +1 -0
  49. data/spec/sandbox/config/environments.yml +4 -0
  50. data/spec/sandbox/config/simpler.yml +1 -0
  51. data/spec/sandbox/config/simpler_site.yml +2 -0
  52. data/spec/sandbox/config.yml +2 -0
  53. data/spec/sandbox/fixtures/examples.yml +8 -0
  54. data/spec/sandbox/fixtures/users.yml +2 -0
  55. data/spec/sandbox/flows/batman.rb +5 -0
  56. data/spec/sandbox/flows/robin.rb +4 -0
  57. data/spec/sandbox/pages/foo/bar_page.rb +9 -0
  58. data/spec/sandbox/pages/foo/partials/partial_the_reckoning.rb +2 -0
  59. data/spec/settings_spec.rb +103 -0
  60. data/spec/site_generator_spec.rb +62 -0
  61. data/spec/site_spec.rb +249 -0
  62. data/spec/spec_generator_helper.rb +40 -0
  63. data/spec/spec_generator_spec.rb +24 -0
  64. data/spec/spec_helper.rb +21 -0
  65. data/spec/steps_generator_spec.rb +29 -0
  66. data/spec/string_spec.rb +17 -0
  67. data/spec/table_spec.rb +32 -0
  68. data/spec/taza_spec.rb +12 -0
  69. data/spec/watircraft_bin_spec.rb +14 -0
  70. data/watircraft.gemspec +53 -0
  71. data/watircraft_generators/page/USAGE +11 -0
  72. data/watircraft_generators/page/page_generator.rb +65 -0
  73. data/watircraft_generators/page/templates/page.rb.erb +8 -0
  74. data/watircraft_generators/site/site_generator.rb +51 -0
  75. data/watircraft_generators/site/templates/environments.yml.erb +4 -0
  76. data/watircraft_generators/site/templates/site.rb.erb +10 -0
  77. data/watircraft_generators/spec/USAGE +8 -0
  78. data/watircraft_generators/spec/spec_generator.rb +54 -0
  79. data/watircraft_generators/spec/templates/spec.rb.erb +17 -0
  80. data/watircraft_generators/steps/USAGE +13 -0
  81. data/watircraft_generators/steps/steps_generator.rb +62 -0
  82. data/watircraft_generators/steps/templates/steps.rb.erb +12 -0
  83. metadata +229 -0
@@ -0,0 +1,111 @@
1
+ require 'spec/spec_helper'
2
+ require 'spec/spec_generator_helper'
3
+ require 'rubygems'
4
+ require 'fileutils'
5
+ require 'taza'
6
+
7
+ describe "Page Generation" do
8
+ include RubiGen::GeneratorTestHelper
9
+ include Helpers::Generator
10
+ include Helpers::Taza
11
+
12
+ before :each do
13
+ generate_project
14
+ @site_class = generate_site('Gap')
15
+ @site_name = @site_class.to_s.underscore
16
+ end
17
+
18
+ after :each do
19
+ bare_teardown
20
+ end
21
+
22
+ # Negative
23
+
24
+ it "should give you usage if you provide no arguments" do
25
+ lambda { run_generator('page', [], generator_sources) }.
26
+ should raise_error(RubiGen::UsageError)
27
+ end
28
+
29
+ it "should give you usage if you provide two arguments" do
30
+ lambda { run_generator('page', ['simple', 'extra'], generator_sources) }.
31
+ should raise_error(RubiGen::UsageError)
32
+ end
33
+
34
+ it "should display an error if no site is specified in the config.yml" do
35
+ PageGenerator.any_instance.stubs(:configured_site).returns(nil)
36
+ lambda { run_generator('page', ['simple'], generator_sources) }.
37
+ should raise_error(RubiGen::UsageError, "Error. A site must first be specified in config.yml")
38
+ end
39
+
40
+ it "should display an error if the site in config.yml can't be found" do
41
+ PageGenerator.any_instance.stubs(:configured_site).returns('no_such_site')
42
+ lambda { run_generator('page', ['simple'], generator_sources) }.
43
+ should raise_error(RubiGen::UsageError, /Error\. Site file .*lib\/no_such_site.rb not found\./)
44
+ end
45
+
46
+ # Positive
47
+
48
+ it "should be able to access the generated page from the site" do
49
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
50
+ run_generator('page', ['simple'], generator_sources)
51
+ stub_settings
52
+ stub_browser
53
+ @site_class.new.simple_page
54
+ end
55
+
56
+ it "should be able to access the generated page when it has a space" do
57
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
58
+ run_generator('page', ['check out'], generator_sources)
59
+ stub_settings
60
+ stub_browser
61
+ @site_class.new.check_out_page
62
+ end
63
+
64
+ it "should be able to access the generated page when it has an underscore" do
65
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
66
+ run_generator('page', ['check_any'], generator_sources)
67
+ stub_settings
68
+ stub_browser
69
+ @site_class.new.check_any_page
70
+ end
71
+
72
+ it "should be able to generate a page using the project default" do
73
+ lambda{run_generator('page', ['simple'], generator_sources)}.
74
+ should_not raise_error
75
+ end
76
+
77
+ it "should provide the module name of the site" do
78
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
79
+ generator = PageGenerator.new(['sample'])
80
+ generator.site_module.should == @site_class.to_s
81
+ end
82
+ it "should provide the name of the page class" do
83
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
84
+ generator = PageGenerator.new(['sample'])
85
+ generator.page_class.should == 'SamplePage'
86
+ generator.page_file.should == 'sample_page.rb'
87
+ end
88
+
89
+ it "should work when when the provided page name includes a space" do
90
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
91
+ generator = PageGenerator.new(['check out'])
92
+ generator.page_class.should == 'CheckOutPage'
93
+ generator.page_file.should == 'check_out_page.rb'
94
+ end
95
+
96
+ it "should work when when the provided page name includes an underscore" do
97
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
98
+ generator = PageGenerator.new(['check_out'])
99
+ generator.page_class.should == 'CheckOutPage'
100
+ generator.page_file.should == 'check_out_page.rb'
101
+ end
102
+
103
+ it "should work when when the provided page is in camel case" do
104
+ PageGenerator.any_instance.stubs(:configured_site).returns(@site_name)
105
+ generator = PageGenerator.new(['CheckOut'])
106
+ generator.page_class.should == 'CheckOutPage'
107
+ generator.page_file.should == 'check_out_page.rb'
108
+ end
109
+
110
+
111
+ end
data/spec/page_spec.rb ADDED
@@ -0,0 +1,342 @@
1
+ require 'spec/spec_helper'
2
+ require 'taza/page'
3
+ require 'taza/site'
4
+
5
+ describe Taza::Page do
6
+ before :each do
7
+ @page_class = Class.new(Taza::Page)
8
+ end
9
+
10
+ class ElementAndFilterContextExample < Taza::Page
11
+ element(:sample_element) {browser}
12
+ filter:sample_filter, :sample_element
13
+ def sample_filter
14
+ browser
15
+ end
16
+ end
17
+
18
+ class RecursiveFilterExample < Taza::Page
19
+ element(:foo) {}
20
+ filter :sample_filter
21
+ def sample_filter
22
+ foo
23
+ true
24
+ end
25
+ end
26
+
27
+ it "should not enter a infinite loop if you call a filtered element inside of a filter" do
28
+ page = RecursiveFilterExample.new
29
+ lambda { page.foo }.should_not raise_error
30
+ end
31
+
32
+ it "should execute an element's block with the params provided for its method" do
33
+ @page_class.element(:boo){|baz| baz}
34
+ @page_class.new.boo("rofl").should == "rofl"
35
+ end
36
+
37
+ it "should execute elements and filters in the context of the page instance" do
38
+ page = ElementAndFilterContextExample.new
39
+ page.browser = :something
40
+ page.sample_element.should eql(:something)
41
+ end
42
+
43
+ it "should add a filter to the classes filters" do
44
+ ElementAndFilterContextExample.filters.size.should eql(1)
45
+ end
46
+
47
+ it "should store the block given to the element method in a method with the name of the parameter" do
48
+ @page_class.element(:foo) do
49
+ "bar"
50
+ end
51
+ @page_class.new.foo.should == "bar"
52
+ end
53
+
54
+ class FilterAllElements < Taza::Page
55
+ element(:foo) {}
56
+ element(:apple) {}
57
+ filter :false_filter
58
+
59
+ def false_filter
60
+ false
61
+ end
62
+ end
63
+
64
+ it "should filter all elements if element argument is not provided" do
65
+ lambda { FilterAllElements.new.apple }.should raise_error(Taza::FilterError)
66
+ lambda { FilterAllElements.new.foo }.should raise_error(Taza::FilterError)
67
+ end
68
+
69
+ it "should have empty elements on a new class" do
70
+ foo = @page_class
71
+ foo.elements.should_not be_nil
72
+ foo.elements.should be_empty
73
+ end
74
+
75
+ it "should have empty filters on a new class" do
76
+ foo = @page_class
77
+ foo.filters.should_not be_nil
78
+ foo.filters.should be_empty
79
+ end
80
+
81
+ class FilterAnElement < Taza::Page
82
+ attr_accessor :called_element_method
83
+ element(:false_item) { @called_element_method = true}
84
+ filter :false_filter, :false_item
85
+
86
+ def false_filter
87
+ false
88
+ end
89
+ end
90
+
91
+ it "should raise a error if an elements is called and its filter returns false" do
92
+ lambda { FilterAnElement.new.false_item }.should raise_error(Taza::FilterError)
93
+ end
94
+
95
+ it "should not call element block if filters fail" do
96
+ page = FilterAnElement.new
97
+ lambda { page.false_item }.should raise_error
98
+ page.called_element_method.should_not be_true
99
+ end
100
+
101
+ class CheckOutPage < Taza::Page
102
+ url 'check_out'
103
+ end
104
+
105
+ it "should goto the url relative to the site url" do
106
+ browser = stub
107
+ browser.expects(:goto).with('http://www.llamas.com')
108
+ browser.expects(:goto).with('http://www.llamas.com/check_out')
109
+ Taza::Settings.stubs(:config).returns(:url => 'http://www.llamas.com')
110
+ page = CheckOutPage.new
111
+ page.site = Class.new(Taza::Site).new(:browser => browser)
112
+ page.goto
113
+ end
114
+
115
+ it "should report the full url of the page" do
116
+ browser = stub
117
+ browser.stubs(:goto)
118
+ Taza::Settings.stubs(:config).returns(:url => 'http://www.llamas.com')
119
+ page = CheckOutPage.new
120
+ page.site = Class.new(Taza::Site).new(:browser => browser)
121
+ page.full_url.should == 'http://www.llamas.com/check_out'
122
+ end
123
+
124
+ it "should create elements for fields" do
125
+ @page_class.field(:foo) {'element'}
126
+ @page_class.new.foo_field.should == 'element'
127
+ end
128
+
129
+ it "should allow you to override the suffix for fields" do
130
+ @page_class.field(:foo, 'link') {'link element'}
131
+ @page_class.new.foo_link.should == 'link element'
132
+ end
133
+
134
+ it "should return the display_value of the field's element" do
135
+ element = stub
136
+ element.stubs(:display_value).with().returns('tomorrow')
137
+ @page_class.field(:foo) {element}
138
+ page = @page_class.new
139
+ page.foo_field.display_value.should == 'tomorrow'
140
+ page.foo.should == 'tomorrow'
141
+ end
142
+
143
+ it "should call the set method of the element when the field= method is called" do
144
+ element = stub
145
+ element.stubs(:set).with('never').returns(nil)
146
+ @page_class.field(:end_date) {element}
147
+ page = @page_class.new
148
+ page.end_date = 'never'
149
+ end
150
+
151
+ def uses_soldier_page
152
+ name_element = stub
153
+ rank_element = stub
154
+ serial_no_element = stub
155
+ @page_class.class_eval do
156
+ field(:name){name_element}
157
+ field(:rank){rank_element}
158
+ field(:serial_no){serial_no_element}
159
+ end
160
+ @soldier_page = @page_class.new
161
+ @soldier_page.name_field.stubs(:display_value).returns('Zachary Taylor')
162
+ @soldier_page.rank_field.stubs(:display_value).returns('General')
163
+ @soldier_page.serial_no_field.stubs(:display_value).returns('unknown')
164
+ end
165
+
166
+ it "should populate the fields corresponding to the keys in the hash" do
167
+ uses_soldier_page
168
+ @soldier_page.name_field.expects(:set).with('Zachary Taylor')
169
+ @soldier_page.rank_field.expects(:set).with('General')
170
+ @soldier_page.populate :name => 'Zachary Taylor', :rank => 'General'
171
+ end
172
+
173
+ it "should validate a page" do
174
+ uses_soldier_page
175
+ @soldier_page.validate :name => 'Zachary Taylor', :rank => 'General'
176
+ end
177
+
178
+ it "should allow you to define elements using human-form names" do
179
+ @page_class.element('User Name'){'Tertulian'}
180
+ @page_class.new.user_name.should == 'Tertulian'
181
+ end
182
+
183
+ it "should allow you to define fields using human-form names" do
184
+ @page_class.field('User Name'){'Tertulian'}
185
+ @page_class.new.user_name_field.should == 'Tertulian'
186
+ end
187
+
188
+ def simple_page
189
+ @page_class.class_eval do
190
+ element(:link){}
191
+ field(:name){}
192
+ end
193
+ @page_class.new
194
+ end
195
+
196
+ it "should list the page's elements" do
197
+ simple_page.elements.should == ['link', 'name_field']
198
+ end
199
+
200
+ it "should list the page's fields" do
201
+ simple_page.fields.should == ['name']
202
+ end
203
+
204
+ it "should list the values of all the fields" do
205
+ uses_soldier_page
206
+ @soldier_page.values.should ==
207
+ {:name => 'Zachary Taylor', :rank => 'General', :serial_no => 'unknown'}
208
+ end
209
+
210
+ it "should list the values of the specified fields" do
211
+ uses_soldier_page
212
+ @soldier_page.values(['name', 'rank']).should ==
213
+ {:name => 'Zachary Taylor', :rank => 'General'}
214
+ end
215
+
216
+ def exists_page
217
+ link1_element = stub
218
+ link1_element.stubs(:exist?).returns(true)
219
+ link2_element = stub
220
+ link2_element.stubs(:exist?).returns(false)
221
+ @page_class.class_eval do
222
+ element(:link1){link1_element}
223
+ element(:link2){link2_element}
224
+ end
225
+ @page_class.new
226
+ end
227
+
228
+ it "should determine whether an element exists" do
229
+ page = exists_page
230
+ page.element_exists?(:link1).should be_true
231
+ page.element_exist?(:link1).should be_true
232
+ page.element_exists?(:link2).should be_false
233
+ end
234
+
235
+ it "should report which defined elements exist" do
236
+ page = exists_page
237
+ expectation = {:link1 => true, :link2 => false}
238
+ page.elements_exist?.should == expectation
239
+ page.elements_exists?.should == expectation
240
+ end
241
+
242
+ it "should report whether selected elements exist" do
243
+ page = exists_page
244
+ expectation = {:link1 => true}
245
+ page.elements_exist?([:link1]).should == expectation
246
+ end
247
+
248
+ it "should report that elements don't exist when not found errors are thrown" do
249
+ link3_element = stub
250
+ link3_element.stubs(:exist?).raises(Watir::Exception::UnknownFrameException)
251
+ link4_element = stub
252
+ link4_element.stubs(:exist?).raises(Watir::Exception::UnknownObjectException)
253
+ @page_class.class_eval do
254
+ element(:link3){link3_element}
255
+ element(:link4){link4_element}
256
+ end
257
+ page = @page_class.new
258
+ page.element_exists?(:link3).should == false
259
+ page.element_exists?(:link4).should == false
260
+ end
261
+
262
+ describe "tables" do
263
+
264
+ it "you should be able to create and reference" do
265
+ @page_class.class_eval do
266
+ element(:results_table){}
267
+ table(:results) {}
268
+ end
269
+ @page_class.new.results.should be_a(WatirCraft::Table)
270
+ end
271
+
272
+ require 'spec/fake_table'
273
+ it "should report whether a table has a specified row" do
274
+ @page_class.class_eval do
275
+ element(:results_table){FakeTable.new [:name => 'x']}
276
+ table(:results) do
277
+ field(:name){@row.element(:name)}
278
+ end
279
+ end
280
+
281
+ @page_class.new.results.row(:name => 'x').should_not be_nil
282
+ end
283
+
284
+ def uses_table_page
285
+ fake_table = FakeTable.new [
286
+ {:letter => 'x', :number => 1},
287
+ {:letter => 'y', :number => 2}
288
+ ]
289
+ @page_class.class_eval do
290
+ element(:results_table) {fake_table}
291
+ table(:results) do
292
+ field(:name){@row.element(:letter)}
293
+ field(:phone){@row.element(:number)}
294
+ end
295
+ end
296
+ @table_page = @page_class.new
297
+ @fake_table = fake_table
298
+ end
299
+
300
+ it "should allow you to reference another field in a selected row" do
301
+ uses_table_page
302
+ @table_page.results.row(:name => 'x').phone.should == 1
303
+ @table_page.results.row(:phone => 2).name.should == 'y'
304
+ end
305
+
306
+ it "fields should have underlying elements" do
307
+ uses_table_page
308
+ @table_page.results.row(:name => 'x').phone_element.should exist
309
+ end
310
+
311
+ it "should have elements" do
312
+ @page_class.class_eval do
313
+ element(:results_table) do FakeTable.new [
314
+ {:letter => 'x', :number => 1},
315
+ {:letter => 'y', :number => 2}
316
+ ]
317
+ end
318
+ table(:results) do
319
+ field(:name){@row.element(:letter)}
320
+ element(:phone){@row.element(:number)}
321
+ end
322
+ end
323
+ @table_page = @page_class.new
324
+ @table_page.results.row(:name => 'x').phone.should be_a(FakeElement)
325
+ end
326
+
327
+ it "should allow you to set a field in a row" do
328
+ uses_table_page
329
+ @table_page.results.row(:name => 'x').phone = '22'
330
+ @fake_table.rows[0].element(:number).display_value.should == '22'
331
+ end
332
+
333
+ it "rows should exist" do
334
+ uses_table_page
335
+ @table_page.results.row(:name => 'x').should exist
336
+ end
337
+
338
+
339
+
340
+ end
341
+
342
+ end
@@ -0,0 +1,103 @@
1
+ require 'spec/spec_helper'
2
+ require 'spec/spec_generator_helper'
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'fileutils'
6
+ require 'taza'
7
+
8
+ describe "Project Generator" do
9
+ include RubiGen::GeneratorTestHelper
10
+
11
+ def project_file relative_path
12
+ File.join(TMP_ROOT, PROJECT_NAME, relative_path)
13
+ end
14
+
15
+ before :each do
16
+ @spec_helper = project_file 'test/specs/spec_helper.rb'
17
+ @initializer = project_file 'lib/initialize.rb'
18
+ ENV['ENVIRONMENT'] = nil
19
+ bare_setup
20
+ end
21
+
22
+ after :each do
23
+ bare_teardown
24
+ end
25
+
26
+ def should_be_loadable file, options=[]
27
+ options = [options] unless options.is_a? Array
28
+ generator_args = [APP_ROOT] + options
29
+ run_generator('watircraft', generator_args, generator_sources)
30
+ load_path = File.dirname(__FILE__) + '/../lib'
31
+ system("ruby -I#{load_path} #{file} > #{null_device}").should be_true
32
+ end
33
+
34
+ it "should generate a spec helper that can be required even when site name is different" do
35
+ should_be_loadable @spec_helper, ['--site=another_name', '--driver=fake']
36
+ end
37
+
38
+ it "should generate a feature helper that can be required" do
39
+ feature_helper = project_file 'test/features/feature_helper.rb'
40
+ should_be_loadable feature_helper, '--driver=fake'
41
+ end
42
+
43
+ it "should generate a world file that can be required" do
44
+ world = project_file 'lib/steps/world.rb'
45
+ should_be_loadable world, '--driver=fake'
46
+ end
47
+
48
+ it "should generate a rakefile that can be required" do
49
+ rakefile = project_file 'rakefile'
50
+ should_be_loadable rakefile
51
+ end
52
+
53
+ it "should generate an initializer that can be required" do
54
+ should_be_loadable @initializer
55
+ end
56
+
57
+ it "should be able to update an existing project and figure out the site name" do
58
+ run_generator('watircraft', [APP_ROOT, '--site=crazy'], generator_sources)
59
+ run_generator('watircraft', [APP_ROOT], generator_sources)
60
+ Taza::Settings.config[:site].should == 'crazy'
61
+ end
62
+
63
+ it "initializer should set the ENVIRONMENT variable if it is not provided" do
64
+ run_generator('watircraft', [APP_ROOT], generator_sources)
65
+ load @initializer
66
+ ENV['ENVIRONMENT'].should eql("test")
67
+ end
68
+
69
+ it "initializer should not override the ENVIRONMENT variable if was provided" do
70
+ ENV['ENVIRONMENT'] = 'orange pie? is there such a thing?'
71
+ run_generator('watircraft', [APP_ROOT], generator_sources)
72
+ load @initializer
73
+ ENV['ENVIRONMENT'].should eql('orange pie? is there such a thing?')
74
+ end
75
+
76
+ it "should configure a project for watir, implicitly" do
77
+ run_generator('watircraft', [APP_ROOT], generator_sources)
78
+ Taza::Settings.stubs(:path).returns(APP_ROOT)
79
+ ENV['ENVIRONMENT'] = 'test'
80
+ Taza::Settings.config[:driver].should == :watir
81
+ end
82
+
83
+ it "should allow a site name to be specified" do
84
+ run_generator('watircraft', [APP_ROOT, '--site=site_name'], generator_sources)
85
+ Taza::Settings.stubs(:path).returns(APP_ROOT)
86
+ ENV['ENVIRONMENT'] = 'test'
87
+ Taza::Settings.config[:site].should == 'site_name'
88
+ end
89
+
90
+ it "should allow a browser driver to be specified" do
91
+ run_generator('watircraft', [APP_ROOT, '--driver=nine_iron'], generator_sources)
92
+ Taza::Settings.stubs(:path).returns(APP_ROOT)
93
+ ENV['ENVIRONMENT'] = 'test'
94
+ Taza::Settings.config[:driver].should == :nine_iron
95
+ end
96
+
97
+ it "should generate a script/console" do
98
+ run_generator('watircraft', [APP_ROOT], generator_sources)
99
+ File.exist?(project_file('script/console')).should be_true
100
+ File.exist?(project_file('script/console.cmd')).should be_true
101
+ end
102
+
103
+ end
@@ -0,0 +1 @@
1
+ :nothing: :something
@@ -0,0 +1,4 @@
1
+ test:
2
+ :url: http://google.com
3
+ clown_shoes:
4
+ :url: http://clownshoes.com
@@ -0,0 +1 @@
1
+ browser: opera
@@ -0,0 +1,2 @@
1
+ test:
2
+ url: http://makezine.com
@@ -0,0 +1,2 @@
1
+ :browser: :default_browser
2
+ :driver: :default_driver
@@ -0,0 +1,8 @@
1
+ first_example:
2
+ name: first
3
+ user: shatner
4
+ price: 1
5
+ second_example:
6
+ name: second
7
+ price: 2
8
+ user: shatner
@@ -0,0 +1,2 @@
1
+ shatner:
2
+ name: William Shatner
@@ -0,0 +1,5 @@
1
+ class Barz
2
+ def batman_flow
3
+ "i am batman"
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ class Robin < ::Taza::Flow
2
+ def run(params)
3
+ end
4
+ end
@@ -0,0 +1,9 @@
1
+ class BarPage < Taza::Page
2
+ element :foo do
3
+ browser
4
+ end
5
+
6
+ filter :name => :baz, :elements => [:foo] do
7
+ true
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ class PartialTheReckoning < Taza::Page
2
+ end