symbiont 0.1.2 → 0.1.3
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/Gemfile.lock +6 -4
 - data/HISTORY.md +8 -0
 - data/Rakefile +8 -1
 - data/app/views/test_page.erb +6 -1
 - data/lib/symbiont/data_setter.rb +49 -0
 - data/lib/symbiont/enclosers.rb +34 -0
 - data/lib/symbiont/evaluators.rb +39 -1
 - data/lib/symbiont/platform_watir/platform_object.rb +40 -0
 - data/lib/symbiont/platforms.rb +3 -0
 - data/lib/symbiont/version.rb +1 -1
 - data/lib/symbiont/web_objects/_common.rb +4 -0
 - data/lib/symbiont/web_objects/button.rb +4 -2
 - data/lib/symbiont/web_objects/checkbox.rb +3 -1
 - data/lib/symbiont/web_objects/div.rb +2 -0
 - data/lib/symbiont/web_objects/link.rb +4 -2
 - data/lib/symbiont/web_objects/radio.rb +2 -0
 - data/lib/symbiont/web_objects/select_list.rb +2 -0
 - data/lib/symbiont/web_objects/span.rb +2 -0
 - data/lib/symbiont/web_objects/table.rb +2 -0
 - data/lib/symbiont/web_objects/table_cell.rb +3 -0
 - data/lib/symbiont/web_objects/table_row.rb +2 -0
 - data/lib/symbiont/web_objects/text_field.rb +18 -3
 - data/lib/symbiont/web_objects.rb +22 -0
 - data/lib/symbiont.rb +2 -0
 - data/spec/symbiont/data_setter_spec.rb +62 -0
 - data/spec/symbiont/evaluators_spec.rb +35 -0
 - data/spec/symbiont/web_object_spec.rb +5 -0
 - data/spec/symbiont/web_objects/button_spec.rb +15 -0
 - data/spec/symbiont/web_objects/checkbox_spec.rb +11 -0
 - data/spec/symbiont/web_objects/div_spec.rb +11 -0
 - data/spec/symbiont/web_objects/link_spec.rb +11 -0
 - data/spec/symbiont/web_objects/radio_spec.rb +11 -0
 - data/spec/symbiont/web_objects/select_list_spec.rb +11 -0
 - data/spec/symbiont/web_objects/span_spec.rb +11 -0
 - data/spec/symbiont/web_objects/table_cell_spec.rb +13 -0
 - data/spec/symbiont/web_objects/table_row_spec.rb +4 -0
 - data/spec/symbiont/web_objects/table_spec.rb +4 -0
 - data/spec/symbiont/web_objects/text_field_spec.rb +31 -0
 - data/specs/data_setter.feature +29 -0
 - data/specs/definitions/pages.rb +23 -0
 - data/specs/evaluators.feature +12 -0
 - data/specs/link.feature +5 -1
 - data/specs/support/test_steps/action_steps_data_setter.rb +56 -0
 - data/specs/support/test_steps/action_steps_evaluators.rb +12 -0
 - data/specs/support/test_steps/action_steps_links.rb +14 -0
 - data/specs/support/test_steps/action_steps_navigate.rb +8 -2
 - data/specs/support/test_steps/action_steps_text_fields.rb +40 -1
 - data/specs/support/test_steps/action_steps_webobjects.rb +8 -2
 - data/specs/text_field.feature +10 -0
 - data/specs/web_object.feature +4 -0
 - data/symbiont.gemspec +2 -1
 - metadata +34 -4
 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                symbiont (0.1. 
     | 
| 
       5 
     | 
    
         
            -
                  watir-webdriver (= 0. 
     | 
| 
      
 4 
     | 
    
         
            +
                symbiont (0.1.2)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  watir-webdriver (= 0.6.1)
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            GEM
         
     | 
| 
       8 
8 
     | 
    
         
             
              remote: http://rubygems.org/
         
     | 
| 
         @@ -24,7 +24,7 @@ GEM 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  diff-lcs (~> 1.1.3)
         
     | 
| 
       25 
25 
     | 
    
         
             
                rspec-mocks (2.10.1)
         
     | 
| 
       26 
26 
     | 
    
         
             
                rubyzip (0.9.8)
         
     | 
| 
       27 
     | 
    
         
            -
                selenium-webdriver (2. 
     | 
| 
      
 27 
     | 
    
         
            +
                selenium-webdriver (2.22.1)
         
     | 
| 
       28 
28 
     | 
    
         
             
                  childprocess (>= 0.2.5)
         
     | 
| 
       29 
29 
     | 
    
         
             
                  ffi (~> 1.0)
         
     | 
| 
       30 
30 
     | 
    
         
             
                  libwebsocket (~> 0.1.3)
         
     | 
| 
         @@ -34,8 +34,9 @@ GEM 
     | 
|
| 
       34 
34 
     | 
    
         
             
                  multi_json (~> 1.0)
         
     | 
| 
       35 
35 
     | 
    
         
             
                  simplecov-html (~> 0.5.3)
         
     | 
| 
       36 
36 
     | 
    
         
             
                simplecov-html (0.5.3)
         
     | 
| 
       37 
     | 
    
         
            -
                watir-webdriver (0. 
     | 
| 
      
 37 
     | 
    
         
            +
                watir-webdriver (0.6.1)
         
     | 
| 
       38 
38 
     | 
    
         
             
                  selenium-webdriver (>= 2.18.0)
         
     | 
| 
      
 39 
     | 
    
         
            +
                yard (0.8.2.1)
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
41 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
       41 
42 
     | 
    
         
             
              x86-mingw32
         
     | 
| 
         @@ -44,3 +45,4 @@ DEPENDENCIES 
     | 
|
| 
       44 
45 
     | 
    
         
             
              rspec (= 2.10.0)
         
     | 
| 
       45 
46 
     | 
    
         
             
              simplecov (= 0.6.4)
         
     | 
| 
       46 
47 
     | 
    
         
             
              symbiont!
         
     | 
| 
      
 48 
     | 
    
         
            +
              yard (= 0.8.2.1)
         
     | 
    
        data/HISTORY.md
    CHANGED
    
    | 
         @@ -1,6 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Change Log and History
         
     | 
| 
       2 
2 
     | 
    
         
             
            ======================
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
      
 4 
     | 
    
         
            +
            Version 0.1.3 / 2012-07-15
         
     | 
| 
      
 5 
     | 
    
         
            +
            --------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            This release introduces a lot of low-hanging fruit. For example there is now the ability to get the title, markup and the active URL of a page. There is also the ability to get a screenshot. It is also possible to get the tag name from a web object. As far as web objects, the ability to get and set values for text fields is now in place. I've also added the ability to execute specific JavaScript calls against the browser. This helps determine what web object currently has focus, as just one example.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            A DataSetter module has been added to allow for easier population of data elements. The idea here is that a using method -- called against a page or activity definition -- can send data directly to web objects on that definition. This is just the start of a streamlined approach for populating data a bit easier than was previously the case. I have also made sure to update to the latest watir-webdriver.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       4 
12 
     | 
    
         
             
            Version 0.1.2 / 2012-06-06
         
     | 
| 
       5 
13 
     | 
    
         
             
            --------------------------
         
     | 
| 
       6 
14 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,15 +1,22 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #!/usr/bin/env rake
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'bundler/gem_tasks'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'rspec/core/rake_task'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'yard'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            RSpec::Core::RakeTask.new do |c|
         
     | 
| 
       6 
     | 
    
         
            -
              options 
     | 
| 
      
 7 
     | 
    
         
            +
              options  = ["--color"]
         
     | 
| 
       7 
8 
     | 
    
         
             
              options += ["--format", "documentation"]
         
     | 
| 
       8 
9 
     | 
    
         
             
              options += ["--format", "nested", "--out output/rspec-report.txt"]
         
     | 
| 
       9 
10 
     | 
    
         
             
              options += ["--format", "html", "--out output/rspec-report.html"]
         
     | 
| 
       10 
11 
     | 
    
         
             
              c.rspec_opts = options
         
     | 
| 
       11 
12 
     | 
    
         
             
            end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
            desc "Generate API documentation"
         
     | 
| 
      
 15 
     | 
    
         
            +
            YARD::Rake::YardocTask.new do |t|
         
     | 
| 
      
 16 
     | 
    
         
            +
              t.files   = ['lib/**/*.rb']
         
     | 
| 
      
 17 
     | 
    
         
            +
              t.options = ['--title', 'Symbiont']
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       13 
20 
     | 
    
         
             
            namespace :spec do
         
     | 
| 
       14 
21 
     | 
    
         
             
              desc "Get code coverage for spec execution"
         
     | 
| 
       15 
22 
     | 
    
         
             
              RSpec::Core::RakeTask.new('cov') do |c|
         
     | 
    
        data/app/views/test_page.erb
    CHANGED
    
    | 
         @@ -41,6 +41,11 @@ 
     | 
|
| 
       41 
41 
     | 
    
         
             
            		<br/>
         
     | 
| 
       42 
42 
     | 
    
         
             
            		<input id="bookTitleID" class="bookTitleClass" name="bookTitleName" size="40" type="text">
         
     | 
| 
       43 
43 
     | 
    
         
             
            		<br/>
         
     | 
| 
      
 44 
     | 
    
         
            +
                <br />
         
     | 
| 
      
 45 
     | 
    
         
            +
                <label id="book_author"><strong>Book Author:</strong></label>
         
     | 
| 
      
 46 
     | 
    
         
            +
                <br />
         
     | 
| 
      
 47 
     | 
    
         
            +
                <input id="bookAuthorID" size="40" type="text">
         
     | 
| 
      
 48 
     | 
    
         
            +
                <br />
         
     | 
| 
       44 
49 
     | 
    
         
             
            		<br/>
         
     | 
| 
       45 
50 
     | 
    
         
             
            		<label id=book_summary"><strong>Book Summary:</strong></label>
         
     | 
| 
       46 
51 
     | 
    
         
             
            		<br/>
         
     | 
| 
         @@ -163,7 +168,7 @@ 
     | 
|
| 
       163 
168 
     | 
    
         | 
| 
       164 
169 
     | 
    
         
             
                <div class="group">
         
     | 
| 
       165 
170 
     | 
    
         
             
                    <div id="divTextID" name="divTextName" class="divTextClass">This text is within a div tag.</div>
         
     | 
| 
       166 
     | 
    
         
            -
                    <span id="spanTextID" name="spanTextName" class="spanTextClass">This text is within a span tag.</ 
     | 
| 
      
 171 
     | 
    
         
            +
                    <span id="spanTextID" name="spanTextName" class="spanTextClass">This text is within a span tag.</span>
         
     | 
| 
       167 
172 
     | 
    
         
             
                </div>
         
     | 
| 
       168 
173 
     | 
    
         | 
| 
       169 
174 
     | 
    
         
             
            </section>
         
     | 
| 
         @@ -0,0 +1,49 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Symbiont
         
     | 
| 
      
 2 
     | 
    
         
            +
            	module DataSetter
         
     | 
| 
      
 3 
     | 
    
         
            +
            		
         
     | 
| 
      
 4 
     | 
    
         
            +
            		def using(data)
         
     | 
| 
      
 5 
     | 
    
         
            +
            			data.each do |key, value|
         
     | 
| 
      
 6 
     | 
    
         
            +
            				use_text_data_with(key, value) if text_settable_for(key) and object_enabled_for(key)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    use_check_data_with(key, value) if value_checkable_for(key) and object_enabled_for(key)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    use_select_data_with(key, value) if value_selectable_for(key) and object_enabled_for(key)
         
     | 
| 
      
 9 
     | 
    
         
            +
            			end
         
     | 
| 
      
 10 
     | 
    
         
            +
            		end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            		alias :using_data :using
         
     | 
| 
      
 13 
     | 
    
         
            +
            		alias :using_values :using
         
     | 
| 
      
 14 
     | 
    
         
            +
            		alias :use_data :using
         
     | 
| 
      
 15 
     | 
    
         
            +
            		alias :use_values :using
         
     | 
| 
      
 16 
     | 
    
         
            +
            		
         
     | 
| 
      
 17 
     | 
    
         
            +
            		private
         
     | 
| 
      
 18 
     | 
    
         
            +
            		
         
     | 
| 
      
 19 
     | 
    
         
            +
            		def use_text_data_with(key, value)
         
     | 
| 
      
 20 
     | 
    
         
            +
            			self.send "#{key}=", value
         
     | 
| 
      
 21 
     | 
    
         
            +
            		end
         
     | 
| 
      
 22 
     | 
    
         
            +
            		
         
     | 
| 
      
 23 
     | 
    
         
            +
                def use_check_data_with(key, value)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  return self.send "check_#{key}" if value
         
     | 
| 
      
 25 
     | 
    
         
            +
                  return self.send "uncheck_#{key}"
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
                
         
     | 
| 
      
 28 
     | 
    
         
            +
                def use_select_data_with(key, value)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  return self.send "select_#{key}" if value
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                def text_settable_for(key)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  respond_to?("#{key}=".to_sym)
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                
         
     | 
| 
      
 36 
     | 
    
         
            +
                def value_checkable_for(key)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  respond_to?("check_#{key}".to_sym)
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
                
         
     | 
| 
      
 40 
     | 
    
         
            +
                def value_selectable_for(key)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  respond_to?("select_#{key}".to_sym)
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
                
         
     | 
| 
      
 44 
     | 
    
         
            +
                def object_enabled_for(key)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  self.send("#{key}_object").enabled?
         
     | 
| 
      
 46 
     | 
    
         
            +
                end
         
     | 
| 
      
 47 
     | 
    
         
            +
                
         
     | 
| 
      
 48 
     | 
    
         
            +
            	end # module: DataSetter
         
     | 
| 
      
 49 
     | 
    
         
            +
            end # module: Symbiont
         
     | 
    
        data/lib/symbiont/enclosers.rb
    CHANGED
    
    | 
         @@ -39,14 +39,48 @@ module Symbiont 
     | 
|
| 
       39 
39 
     | 
    
         
             
                  @platform.wait_for(timeout, message, &block)
         
     | 
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
                # Provides a context for an action that will generate a JavaScript alert
         
     | 
| 
      
 43 
     | 
    
         
            +
                # message box. The alert invocation will be overridden by the platform.
         
     | 
| 
      
 44 
     | 
    
         
            +
                #
         
     | 
| 
      
 45 
     | 
    
         
            +
                # @param [Proc] block the code that generates the alert
         
     | 
| 
      
 46 
     | 
    
         
            +
                # @return [String] the message contained in the alert message box
         
     | 
| 
      
 47 
     | 
    
         
            +
                #
         
     | 
| 
      
 48 
     | 
    
         
            +
                # @example
         
     | 
| 
      
 49 
     | 
    
         
            +
                #   response = @page.will_alert do
         
     | 
| 
      
 50 
     | 
    
         
            +
                #     @page.submitForm
         
     | 
| 
      
 51 
     | 
    
         
            +
                #   end
         
     | 
| 
       42 
52 
     | 
    
         
             
                def will_alert(&block)
         
     | 
| 
       43 
53 
     | 
    
         
             
                  @platform.will_alert(&block)
         
     | 
| 
       44 
54 
     | 
    
         
             
                end
         
     | 
| 
       45 
55 
     | 
    
         | 
| 
      
 56 
     | 
    
         
            +
                # Provides a context for an action that will generate a JavaScript
         
     | 
| 
      
 57 
     | 
    
         
            +
                # confirmation message box. The confirmation invocation will be
         
     | 
| 
      
 58 
     | 
    
         
            +
                # overridden by the platform.
         
     | 
| 
      
 59 
     | 
    
         
            +
                #
         
     | 
| 
      
 60 
     | 
    
         
            +
                # @param [bool] true to accept the confirmation, false to cancel it
         
     | 
| 
      
 61 
     | 
    
         
            +
                # @param [Proc] block the code that generates the confirmation
         
     | 
| 
      
 62 
     | 
    
         
            +
                # @return [String] the message contained in the confirmation message box
         
     | 
| 
      
 63 
     | 
    
         
            +
                #
         
     | 
| 
      
 64 
     | 
    
         
            +
                # @example
         
     | 
| 
      
 65 
     | 
    
         
            +
                #   response = @page.will_confirm(true) do
         
     | 
| 
      
 66 
     | 
    
         
            +
                #     @page.areYouSure
         
     | 
| 
      
 67 
     | 
    
         
            +
                #   end
         
     | 
| 
       46 
68 
     | 
    
         
             
                def will_confirm(response, &block)
         
     | 
| 
       47 
69 
     | 
    
         
             
                  @platform.will_confirm(response, &block)
         
     | 
| 
       48 
70 
     | 
    
         
             
                end
         
     | 
| 
       49 
71 
     | 
    
         | 
| 
      
 72 
     | 
    
         
            +
                # Provides a context for an action that will generate a JavaScript prompt
         
     | 
| 
      
 73 
     | 
    
         
            +
                # message box. The prompt invocation will be overridden by the platform.
         
     | 
| 
      
 74 
     | 
    
         
            +
                #
         
     | 
| 
      
 75 
     | 
    
         
            +
                # @param [String] response the value to be used in the prompt
         
     | 
| 
      
 76 
     | 
    
         
            +
                # @param [Proc] block the code that generates the prompt
         
     | 
| 
      
 77 
     | 
    
         
            +
                # @return [Hash] :message for the prompt message, :default_value for
         
     | 
| 
      
 78 
     | 
    
         
            +
                # the value that the prompt had before the response was applied
         
     | 
| 
      
 79 
     | 
    
         
            +
                #
         
     | 
| 
      
 80 
     | 
    
         
            +
                # @example
         
     | 
| 
      
 81 
     | 
    
         
            +
                #   response = @page.will_prompt("use this") do
         
     | 
| 
      
 82 
     | 
    
         
            +
                #     @page.useValue
         
     | 
| 
      
 83 
     | 
    
         
            +
                #   end
         
     | 
| 
       50 
84 
     | 
    
         
             
                def will_prompt(response, &block)
         
     | 
| 
       51 
85 
     | 
    
         
             
                  @platform.will_prompt(response, &block)
         
     | 
| 
       52 
86 
     | 
    
         
             
                end
         
     | 
    
        data/lib/symbiont/evaluators.rb
    CHANGED
    
    | 
         @@ -8,10 +8,48 @@ module Symbiont 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  @platform.visit(url)
         
     | 
| 
       9 
9 
     | 
    
         
             
                end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                # Returns the text of the current page.
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Returns the text of the current page. This is the text minus any
         
     | 
| 
      
 12 
     | 
    
         
            +
                # markup.
         
     | 
| 
       12 
13 
     | 
    
         
             
                def text
         
     | 
| 
       13 
14 
     | 
    
         
             
                  @platform.text
         
     | 
| 
       14 
15 
     | 
    
         
             
                end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
                # Returns the markup of the current page.
         
     | 
| 
      
 18 
     | 
    
         
            +
                def markup
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @platform.markup
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
                
         
     | 
| 
      
 22 
     | 
    
         
            +
                alias :html :markup
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                # Returns the title of the current page.
         
     | 
| 
      
 25 
     | 
    
         
            +
                def title
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @platform.title
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
                
         
     | 
| 
      
 29 
     | 
    
         
            +
                # Returns the URL of the active page.
         
     | 
| 
      
 30 
     | 
    
         
            +
                def url
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @platform.url
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
                
         
     | 
| 
      
 34 
     | 
    
         
            +
                # Save a snapshot of the current screen to a provided file location.
         
     | 
| 
      
 35 
     | 
    
         
            +
                # The file will be saved as a PNG file in the path specified or in the
         
     | 
| 
      
 36 
     | 
    
         
            +
                # location where the tests are being run from.
         
     | 
| 
      
 37 
     | 
    
         
            +
                # @param [String] file the file name to save the image as
         
     | 
| 
      
 38 
     | 
    
         
            +
                def screenshot(file)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  @platform.screenshot file
         
     | 
| 
      
 40 
     | 
    
         
            +
                end    
         
     | 
| 
      
 41 
     | 
    
         
            +
                
         
     | 
| 
      
 42 
     | 
    
         
            +
                # Returns the web object that currently has focus.
         
     | 
| 
      
 43 
     | 
    
         
            +
                def focus
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @platform.focus
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
                
         
     | 
| 
      
 47 
     | 
    
         
            +
                # Executes JavaScript against the browser instance.
         
     | 
| 
      
 48 
     | 
    
         
            +
                def run_script(script)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  @platform.run_script(script)
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
                
         
     | 
| 
      
 52 
     | 
    
         
            +
                alias :execute_script :run_script
         
     | 
| 
      
 53 
     | 
    
         
            +
                
         
     | 
| 
       16 
54 
     | 
    
         
             
              end # module: Evaluators
         
     | 
| 
       17 
55 
     | 
    
         
             
            end # module: Symbiont
         
     | 
| 
         @@ -16,6 +16,24 @@ module Symbiont 
     | 
|
| 
       16 
16 
     | 
    
         
             
                      @browser.goto(url)
         
     | 
| 
       17 
17 
     | 
    
         
             
                    end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
                    # Platform method to get the URL of the active page.
         
     | 
| 
      
 20 
     | 
    
         
            +
                    # See Symbiont#url
         
     | 
| 
      
 21 
     | 
    
         
            +
                    def url
         
     | 
| 
      
 22 
     | 
    
         
            +
                      @browser.url
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
                    
         
     | 
| 
      
 25 
     | 
    
         
            +
                    # Platform method to save the current screenshot to a file.
         
     | 
| 
      
 26 
     | 
    
         
            +
                    # See Symbiont#screenshot
         
     | 
| 
      
 27 
     | 
    
         
            +
                    def screenshot(file)
         
     | 
| 
      
 28 
     | 
    
         
            +
                      @browser.wd.save_screenshot(file)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
                    
         
     | 
| 
      
 31 
     | 
    
         
            +
                    # Platform method to run a script against the browser.
         
     | 
| 
      
 32 
     | 
    
         
            +
                    # See Symbiont#run_script
         
     | 
| 
      
 33 
     | 
    
         
            +
                    def run_script(script)
         
     | 
| 
      
 34 
     | 
    
         
            +
                      @browser.execute_script(script)
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    
         
     | 
| 
       19 
37 
     | 
    
         
             
                    ## Page-Level Actions ##
         
     | 
| 
       20 
38 
     | 
    
         | 
| 
       21 
39 
     | 
    
         
             
                    # Platform method to retrieve text from the current page.
         
     | 
| 
         @@ -24,6 +42,27 @@ module Symbiont 
     | 
|
| 
       24 
42 
     | 
    
         
             
                      @browser.text
         
     | 
| 
       25 
43 
     | 
    
         
             
                    end
         
     | 
| 
       26 
44 
     | 
    
         | 
| 
      
 45 
     | 
    
         
            +
                    # Platform method to retrieve markup from the current page.
         
     | 
| 
      
 46 
     | 
    
         
            +
                    # See Symbiont#markup
         
     | 
| 
      
 47 
     | 
    
         
            +
                    def markup
         
     | 
| 
      
 48 
     | 
    
         
            +
                      @browser.html
         
     | 
| 
      
 49 
     | 
    
         
            +
                    end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                    # Platform method to get the title of the current page.
         
     | 
| 
      
 52 
     | 
    
         
            +
                    # See Symbiont#title
         
     | 
| 
      
 53 
     | 
    
         
            +
                    def title
         
     | 
| 
      
 54 
     | 
    
         
            +
                      @browser.title
         
     | 
| 
      
 55 
     | 
    
         
            +
                    end
         
     | 
| 
      
 56 
     | 
    
         
            +
                    
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # Platform method to get the web object that has focus.
         
     | 
| 
      
 58 
     | 
    
         
            +
                    # See Symbiont#focus
         
     | 
| 
      
 59 
     | 
    
         
            +
                    def focus
         
     | 
| 
      
 60 
     | 
    
         
            +
                      web_object = @browser.execute_script("return document.activeElement")
         
     | 
| 
      
 61 
     | 
    
         
            +
                      type = web_object.type.to_sym if web_object.tag_name.to_sym == :input
         
     | 
| 
      
 62 
     | 
    
         
            +
                      object_class = ::Symbiont::WebObjects.get_class_for(web_object.tag_name, type)
         
     | 
| 
      
 63 
     | 
    
         
            +
                      object_class.new(web_object)
         
     | 
| 
      
 64 
     | 
    
         
            +
                    end
         
     | 
| 
      
 65 
     | 
    
         
            +
                    
         
     | 
| 
       27 
66 
     | 
    
         
             
                    ## Encloser Methods ##
         
     | 
| 
       28 
67 
     | 
    
         | 
| 
       29 
68 
     | 
    
         
             
                    # Platform method to wait for an action to complete in a given time.
         
     | 
| 
         @@ -433,4 +472,5 @@ module Symbiont 
     | 
|
| 
       433 
472 
     | 
    
         
             
              end # module: Platforms
         
     | 
| 
       434 
473 
     | 
    
         
             
            end # module: Symbiont
         
     | 
| 
       435 
474 
     | 
    
         | 
| 
      
 475 
     | 
    
         
            +
            require 'symbiont/web_objects'
         
     | 
| 
       436 
476 
     | 
    
         
             
            Dir["#{File.dirname(__FILE__)}/../web_objects/**/*.rb"].sort.each { |file| require file }
         
     | 
    
        data/lib/symbiont/platforms.rb
    CHANGED
    
    | 
         @@ -6,6 +6,9 @@ module Symbiont 
     | 
|
| 
       6 
6 
     | 
    
         
             
                # This module determines what execution platform Symbiont will use.
         
     | 
| 
       7 
7 
     | 
    
         
             
                # The decision is based on the browser that has been established for
         
     | 
| 
       8 
8 
     | 
    
         
             
                # the execution profile.
         
     | 
| 
      
 9 
     | 
    
         
            +
                #
         
     | 
| 
      
 10 
     | 
    
         
            +
                # @param [Object] browser the browser to establish the platform for
         
     | 
| 
      
 11 
     | 
    
         
            +
                # @returns [Object] a platform object to execute tests against
         
     | 
| 
       9 
12 
     | 
    
         
             
                def get_platform_for(browser)
         
     | 
| 
       10 
13 
     | 
    
         
             
                  if browser.is_a?(Watir::Browser)
         
     | 
| 
       11 
14 
     | 
    
         
             
                    return @platform = Symbiont::Platforms::WatirWebDriver::PlatformObject.new(@browser)
         
     | 
    
        data/lib/symbiont/version.rb
    CHANGED
    
    
| 
         @@ -4,6 +4,8 @@ module Symbiont 
     | 
|
| 
       4 
4 
     | 
    
         
             
                class Button < WebObject
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                end # class: Button
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                
         
     | 
| 
      
 8 
     | 
    
         
            +
                ::Symbiont::WebObjects.class_for_type[:submit] = ::Symbiont::WebObjects::Button
         
     | 
| 
      
 9 
     | 
    
         
            +
                ::Symbiont::WebObjects.class_for_type[:button] = ::Symbiont::WebObjects::Button
         
     | 
| 
       8 
10 
     | 
    
         
             
              end # module: WebObjects
         
     | 
| 
       9 
     | 
    
         
            -
            end # module: Symbiont
         
     | 
| 
      
 11 
     | 
    
         
            +
            end # module: Symbiont
         
     | 
| 
         @@ -2,8 +2,23 @@ module Symbiont 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module WebObjects
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
                class TextField < WebObject
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
                  # Get the value of a text field.
         
     | 
| 
      
 6 
     | 
    
         
            +
                  def value
         
     | 
| 
      
 7 
     | 
    
         
            +
                    @web_object.value
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                  
         
     | 
| 
      
 10 
     | 
    
         
            +
                  # Set the value of a text field.
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def value=(value)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @web_object.set value
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # Append text to a text field.
         
     | 
| 
      
 16 
     | 
    
         
            +
                  def append(text)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    @web_object.send_keys text
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
       6 
19 
     | 
    
         
             
                end # class: TextField
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
                
         
     | 
| 
      
 21 
     | 
    
         
            +
                ::Symbiont::WebObjects.class_for_type[:text] = ::Symbiont::WebObjects::TextField
         
     | 
| 
      
 22 
     | 
    
         
            +
                ::Symbiont::WebObjects.class_for_type[:password] = ::Symbiont::WebObjects::TextField
         
     | 
| 
       8 
23 
     | 
    
         
             
              end # module: WebObjects
         
     | 
| 
       9 
     | 
    
         
            -
            end # module: Symbiont
         
     | 
| 
      
 24 
     | 
    
         
            +
            end # module: Symbiont
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Symbiont
         
     | 
| 
      
 2 
     | 
    
         
            +
              module WebObjects
         
     | 
| 
      
 3 
     | 
    
         
            +
                
         
     | 
| 
      
 4 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 5 
     | 
    
         
            +
                  def class_for_tag
         
     | 
| 
      
 6 
     | 
    
         
            +
                    @class_for_tag ||= {}
         
     | 
| 
      
 7 
     | 
    
         
            +
                  end
         
     | 
| 
      
 8 
     | 
    
         
            +
                  
         
     | 
| 
      
 9 
     | 
    
         
            +
                  def class_for_type
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @class_for_type ||= {}
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
                  
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def get_class_for(tag, type=nil)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    return class_for_type[type.to_sym] if type
         
     | 
| 
      
 15 
     | 
    
         
            +
                    class_for_tag[tag.to_sym] || ::Symbiont::WebObjects::WebObject
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
              end # module: WebObjects
         
     | 
| 
      
 20 
     | 
    
         
            +
            end # module: Symbiont
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            require 'symbiont/web_objects/_common'
         
     | 
    
        data/lib/symbiont.rb
    CHANGED
    
    | 
         @@ -5,12 +5,14 @@ require 'symbiont/generators' 
     | 
|
| 
       5 
5 
     | 
    
         
             
            require 'symbiont/enclosers'
         
     | 
| 
       6 
6 
     | 
    
         
             
            require 'symbiont/evaluators'
         
     | 
| 
       7 
7 
     | 
    
         
             
            require 'symbiont/locators'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'symbiont/data_setter'
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
            module Symbiont
         
     | 
| 
       10 
11 
     | 
    
         
             
              include Platforms
         
     | 
| 
       11 
12 
     | 
    
         
             
              include Enclosers
         
     | 
| 
       12 
13 
     | 
    
         
             
              include Evaluators
         
     | 
| 
       13 
14 
     | 
    
         
             
              include Locators
         
     | 
| 
      
 15 
     | 
    
         
            +
            	include DataSetter
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         
             
              # Used to make a platform object accessible. Will hold object
         
     | 
| 
       16 
18 
     | 
    
         
             
              # references like these:
         
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Symbiont::DataSetter do
         
     | 
| 
      
 4 
     | 
    
         
            +
            	let(:watir_browser) { mock_browser_for_watir }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:watir_definition) { DefinitionTest.new(watir_browser) }
         
     | 
| 
      
 6 
     | 
    
         
            +
            	
         
     | 
| 
      
 7 
     | 
    
         
            +
            	it "should set data in a text field" do
         
     | 
| 
      
 8 
     | 
    
         
            +
            		watir_definition.should_receive(:login_name=).with('jnyman')
         
     | 
| 
      
 9 
     | 
    
         
            +
                watir_definition.should_receive(:object_enabled_for).and_return(true)
         
     | 
| 
      
 10 
     | 
    
         
            +
            		watir_definition.using('login_name' => 'jnyman')
         
     | 
| 
      
 11 
     | 
    
         
            +
            	end
         
     | 
| 
      
 12 
     | 
    
         
            +
              
         
     | 
| 
      
 13 
     | 
    
         
            +
              it "should not set data in a non-existent text field" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                watir_browser.should_not_receive(:text_field)
         
     | 
| 
      
 15 
     | 
    
         
            +
                watir_definition.using('fake_field' => 'fake data')
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
              
         
     | 
| 
      
 18 
     | 
    
         
            +
              it "should not set data in a disabled text field" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                watir_definition.should_not_receive(:login_name=)
         
     | 
| 
      
 20 
     | 
    
         
            +
                watir_definition.should_receive(:login_name_object).and_return(watir_browser)
         
     | 
| 
      
 21 
     | 
    
         
            +
                watir_browser.should_receive(:enabled?).and_return(false)
         
     | 
| 
      
 22 
     | 
    
         
            +
                watir_definition.using('login_name' => 'test data')
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              it "should set data in a select list field" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                watir_definition.should_receive(:concepts=).with('physics')
         
     | 
| 
      
 27 
     | 
    
         
            +
                watir_definition.should_receive(:object_enabled_for).and_return(true)
         
     | 
| 
      
 28 
     | 
    
         
            +
                watir_definition.using('concepts' => 'physics')
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              
         
     | 
| 
      
 31 
     | 
    
         
            +
              it "should check a checkbox field" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                watir_definition.should_receive(:check_apply_tax)
         
     | 
| 
      
 33 
     | 
    
         
            +
                watir_definition.should_receive(:object_enabled_for).and_return(true)
         
     | 
| 
      
 34 
     | 
    
         
            +
                watir_definition.using('apply_tax' => true)
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
              
         
     | 
| 
      
 37 
     | 
    
         
            +
              it "should uncheck a checkbox field" do
         
     | 
| 
      
 38 
     | 
    
         
            +
                watir_definition.should_receive(:uncheck_apply_tax)
         
     | 
| 
      
 39 
     | 
    
         
            +
                watir_definition.should_receive(:object_enabled_for).and_return(true)
         
     | 
| 
      
 40 
     | 
    
         
            +
                watir_definition.using('apply_tax' => false)
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
              
         
     | 
| 
      
 43 
     | 
    
         
            +
              it "should not check data in a disabled checkbox field" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                watir_definition.should_not_receive(:check_apply_tax)
         
     | 
| 
      
 45 
     | 
    
         
            +
                watir_definition.should_receive(:apply_tax_object).and_return(watir_browser)
         
     | 
| 
      
 46 
     | 
    
         
            +
                watir_browser.should_receive(:enabled?).and_return(false)
         
     | 
| 
      
 47 
     | 
    
         
            +
                watir_definition.using('apply_tax' => true)
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
              
         
     | 
| 
      
 50 
     | 
    
         
            +
              it "should select a radio field" do
         
     | 
| 
      
 51 
     | 
    
         
            +
                watir_definition.should_receive(:select_include_tax)
         
     | 
| 
      
 52 
     | 
    
         
            +
                watir_definition.should_receive(:object_enabled_for).and_return(true)
         
     | 
| 
      
 53 
     | 
    
         
            +
                watir_definition.using('include_tax' => true)
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
              
         
     | 
| 
      
 56 
     | 
    
         
            +
              it "should not select data in a disable radio field" do
         
     | 
| 
      
 57 
     | 
    
         
            +
                watir_definition.should_not_receive(:select_include_tax)
         
     | 
| 
      
 58 
     | 
    
         
            +
                watir_definition.should_receive(:include_tax_object).and_return(watir_browser)
         
     | 
| 
      
 59 
     | 
    
         
            +
                watir_browser.should_receive(:enabled?).and_return(false)
         
     | 
| 
      
 60 
     | 
    
         
            +
                watir_definition.using('include_tax' => true)
         
     | 
| 
      
 61 
     | 
    
         
            +
              end
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -10,6 +10,23 @@ describe Symbiont::Enclosers do 
     | 
|
| 
       10 
10 
     | 
    
         
             
                    watir_browser.should_receive(:goto).with("http://localhost:4567")
         
     | 
| 
       11 
11 
     | 
    
         
             
                    watir_definition.visit("http://localhost:4567")
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                  
         
     | 
| 
      
 14 
     | 
    
         
            +
                  it "should get the active url" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                    watir_browser.should_receive(:url).and_return("http://localhost:4567")
         
     | 
| 
      
 16 
     | 
    
         
            +
                    watir_definition.url.should == "http://localhost:4567"
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  
         
     | 
| 
      
 19 
     | 
    
         
            +
                  it "should get a screenshot" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                    watir_browser.should_receive(:wd).and_return(watir_browser)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    watir_browser.should_receive(:save_screenshot)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    watir_definition.screenshot("testing.png")
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  
         
     | 
| 
      
 25 
     | 
    
         
            +
                  it "should run a script against the browser" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                    watir_browser.should_receive(:execute_script).twice.and_return("input")
         
     | 
| 
      
 27 
     | 
    
         
            +
                    watir_definition.run_script("return document.activeElement").should == "input"
         
     | 
| 
      
 28 
     | 
    
         
            +
                    watir_definition.execute_script("return document.activeElement").should == "input"
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
       13 
30 
     | 
    
         
             
                end
         
     | 
| 
       14 
31 
     | 
    
         
             
              end
         
     | 
| 
       15 
32 
     | 
    
         | 
| 
         @@ -19,6 +36,24 @@ describe Symbiont::Enclosers do 
     | 
|
| 
       19 
36 
     | 
    
         
             
                    watir_browser.should_receive(:text).and_return("page text")
         
     | 
| 
       20 
37 
     | 
    
         
             
                    watir_definition.text.should == "page text"
         
     | 
| 
       21 
38 
     | 
    
         
             
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  
         
     | 
| 
      
 40 
     | 
    
         
            +
                  it "should return all the markup on a page" do
         
     | 
| 
      
 41 
     | 
    
         
            +
                    watir_browser.should_receive(:html).twice.and_return("<h1>Page Title</h1>")
         
     | 
| 
      
 42 
     | 
    
         
            +
                    watir_definition.markup.should == "<h1>Page Title</h1>"
         
     | 
| 
      
 43 
     | 
    
         
            +
                    watir_definition.html.should == "<h1>Page Title</h1>"
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  
         
     | 
| 
      
 46 
     | 
    
         
            +
                  it "should return the title of a page" do
         
     | 
| 
      
 47 
     | 
    
         
            +
                    watir_browser.should_receive(:title).and_return("Page Title")
         
     | 
| 
      
 48 
     | 
    
         
            +
                    watir_definition.title.should == "Page Title"
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  
         
     | 
| 
      
 51 
     | 
    
         
            +
                  it "should return the web object that has focus" do
         
     | 
| 
      
 52 
     | 
    
         
            +
                    watir_browser.should_receive(:execute_script).and_return(watir_browser)
         
     | 
| 
      
 53 
     | 
    
         
            +
                    watir_browser.should_receive(:tag_name).twice.and_return(:input)
         
     | 
| 
      
 54 
     | 
    
         
            +
                    watir_browser.should_receive(:type).and_return(:submit)
         
     | 
| 
      
 55 
     | 
    
         
            +
                    watir_definition.focus.class.should == Symbiont::WebObjects::Button
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
       22 
57 
     | 
    
         
             
                end
         
     | 
| 
       23 
58 
     | 
    
         
             
              end
         
     | 
| 
       24 
59 
     | 
    
         
             
            end
         
     | 
| 
         @@ -14,6 +14,11 @@ describe "Web Objects" do 
     | 
|
| 
       14 
14 
     | 
    
         
             
                watir_definition.style('display').should == 'none'
         
     | 
| 
       15 
15 
     | 
    
         
             
              end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
              it "should retrieve the tag of a web object" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                watir_browser.should_receive(:tag_name).and_return("div")
         
     | 
| 
      
 19 
     | 
    
         
            +
                watir_definition.tag.should == "div"
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
       17 
22 
     | 
    
         
             
              it "should determine if a web object is enabled" do
         
     | 
| 
       18 
23 
     | 
    
         
             
                watir_browser.should_receive(:enabled?).and_return(true)
         
     | 
| 
       19 
24 
     | 
    
         
             
                watir_definition.enabled?.should == true
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Symbiont::WebObjects::Button do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "implementation" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:button_object) { double('button_object') }
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                it "should register with a submit type" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  ::Symbiont::WebObjects.get_class_for(:input, :submit).should == ::Symbiont::WebObjects::Button
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                it "should register with a button type" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  ::Symbiont::WebObjects.get_class_for(:input, :button).should == ::Symbiont::WebObjects::Button
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Symbiont::WebObjects::CheckBox do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "implementation" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:checkbox_object) { double('checkbox_object') }
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                it "should register with a submit type" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  ::Symbiont::WebObjects.get_class_for(:input, :checkbox).should == ::Symbiont::WebObjects::CheckBox
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Symbiont::WebObjects::Div do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "implementation" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                let(:div_object) { double('div_object') }
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                it "should register with a div tag" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  ::Symbiont::WebObjects.get_class_for(:div).should == ::Symbiont::WebObjects::Div
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     |