capybara-page-object 0.2.1 → 0.3.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.
- data/Gemfile +3 -1
 - data/Gemfile.lock +15 -2
 - data/Rakefile +27 -13
 - data/VERSION +1 -1
 - data/capybara-page-object.gemspec +55 -27
 - data/lib/capybara-page-object.rb +6 -8
 - data/lib/collections.rb +11 -0
 - data/lib/element.rb +11 -0
 - data/lib/element/anchor.rb +11 -0
 - data/lib/element/form.rb +64 -0
 - data/lib/element/form_field.rb +20 -0
 - data/lib/element/image.rb +20 -0
 - data/lib/element/input.rb +28 -0
 - data/lib/element/list.rb +21 -0
 - data/lib/element/listitem.rb +7 -0
 - data/lib/element/meta.rb +16 -0
 - data/lib/element/select.rb +16 -0
 - data/lib/{table.rb → element/table.rb} +1 -3
 - data/lib/element/textarea.rb +16 -0
 - data/lib/{extractors → extractor}/common.rb +3 -11
 - data/lib/{extractors → extractor}/page_level.rb +3 -13
 - data/lib/html5_data.rb +14 -0
 - data/lib/key_value.rb +11 -0
 - data/lib/navigation.rb +16 -0
 - data/lib/node.rb +76 -0
 - data/spec/common_spec.rb +46 -0
 - data/spec/element/anchor_spec.rb +15 -0
 - data/spec/element/base_spec.rb +19 -0
 - data/spec/element/form_field_spec.rb +28 -0
 - data/spec/element/form_spec.rb +69 -0
 - data/spec/element/image_spec.rb +30 -0
 - data/spec/element/input_spec.rb +49 -0
 - data/spec/element/list_spec.rb +47 -0
 - data/spec/element/listitem_spec.rb +25 -0
 - data/spec/element/meta_spec.rb +23 -0
 - data/spec/element/select_spec.rb +36 -0
 - data/spec/element/table_spec.rb +30 -0
 - data/spec/element/textarea_spec.rb +19 -0
 - data/{test/page.html → spec/fixtures/node.html} +0 -0
 - data/{test → spec}/helper.rb +2 -11
 - data/spec/node_spec.rb +45 -0
 - metadata +120 -109
 - data/lib/base.rb +0 -29
 - data/lib/image.rb +0 -13
 - data/lib/page.rb +0 -15
 - data/test/image.html +0 -2
 - data/test/table.html +0 -10
 - data/test/test_image.rb +0 -20
 - data/test/test_page.rb +0 -59
 - data/test/test_table.rb +0 -20
 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -6,10 +6,12 @@ source "http://rubygems.org" 
     | 
|
| 
       6 
6 
     | 
    
         
             
            # Add dependencies to develop your gem here.
         
     | 
| 
       7 
7 
     | 
    
         
             
            # Include everything needed to run rake, tests, features, etc.
         
     | 
| 
       8 
8 
     | 
    
         
             
            group :development do
         
     | 
| 
       9 
     | 
    
         
            -
              gem "shoulda", ">= 0"
         
     | 
| 
       10 
9 
     | 
    
         
             
              gem "bundler", "~> 1.0.0"
         
     | 
| 
       11 
10 
     | 
    
         
             
              gem "jeweler", "~> 1.6.4"
         
     | 
| 
       12 
11 
     | 
    
         
             
              gem "rcov", ">= 0"
         
     | 
| 
      
 12 
     | 
    
         
            +
              gem "rspec"
         
     | 
| 
      
 13 
     | 
    
         
            +
              gem 'rake', '~> 0.9.2.2'
         
     | 
| 
      
 14 
     | 
    
         
            +
              gem "rdoc", '~> 3.12'
         
     | 
| 
       13 
15 
     | 
    
         
             
            end
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         
             
            gem "capybara"
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -10,12 +10,14 @@ GEM 
     | 
|
| 
       10 
10 
     | 
    
         
             
                  xpath (~> 0.1.4)
         
     | 
| 
       11 
11 
     | 
    
         
             
                childprocess (0.3.1)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  ffi (~> 1.0.6)
         
     | 
| 
      
 13 
     | 
    
         
            +
                diff-lcs (1.1.3)
         
     | 
| 
       13 
14 
     | 
    
         
             
                ffi (1.0.11)
         
     | 
| 
       14 
15 
     | 
    
         
             
                git (1.2.5)
         
     | 
| 
       15 
16 
     | 
    
         
             
                jeweler (1.6.4)
         
     | 
| 
       16 
17 
     | 
    
         
             
                  bundler (~> 1.0)
         
     | 
| 
       17 
18 
     | 
    
         
             
                  git (>= 1.2.5)
         
     | 
| 
       18 
19 
     | 
    
         
             
                  rake
         
     | 
| 
      
 20 
     | 
    
         
            +
                json (1.6.6)
         
     | 
| 
       19 
21 
     | 
    
         
             
                mime-types (1.17.2)
         
     | 
| 
       20 
22 
     | 
    
         
             
                multi_json (1.1.0)
         
     | 
| 
       21 
23 
     | 
    
         
             
                nokogiri (1.5.2)
         
     | 
| 
         @@ -24,13 +26,22 @@ GEM 
     | 
|
| 
       24 
26 
     | 
    
         
             
                  rack (>= 1.0)
         
     | 
| 
       25 
27 
     | 
    
         
             
                rake (0.9.2.2)
         
     | 
| 
       26 
28 
     | 
    
         
             
                rcov (0.9.11)
         
     | 
| 
      
 29 
     | 
    
         
            +
                rdoc (3.12)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  json (~> 1.4)
         
     | 
| 
      
 31 
     | 
    
         
            +
                rspec (2.8.0)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  rspec-core (~> 2.8.0)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  rspec-expectations (~> 2.8.0)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  rspec-mocks (~> 2.8.0)
         
     | 
| 
      
 35 
     | 
    
         
            +
                rspec-core (2.8.0)
         
     | 
| 
      
 36 
     | 
    
         
            +
                rspec-expectations (2.8.0)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  diff-lcs (~> 1.1.2)
         
     | 
| 
      
 38 
     | 
    
         
            +
                rspec-mocks (2.8.0)
         
     | 
| 
       27 
39 
     | 
    
         
             
                rubyzip (0.9.6.1)
         
     | 
| 
       28 
40 
     | 
    
         
             
                selenium-webdriver (2.20.0)
         
     | 
| 
       29 
41 
     | 
    
         
             
                  childprocess (>= 0.2.5)
         
     | 
| 
       30 
42 
     | 
    
         
             
                  ffi (~> 1.0)
         
     | 
| 
       31 
43 
     | 
    
         
             
                  multi_json (~> 1.0)
         
     | 
| 
       32 
44 
     | 
    
         
             
                  rubyzip
         
     | 
| 
       33 
     | 
    
         
            -
                shoulda (2.11.3)
         
     | 
| 
       34 
45 
     | 
    
         
             
                xpath (0.1.4)
         
     | 
| 
       35 
46 
     | 
    
         
             
                  nokogiri (~> 1.3)
         
     | 
| 
       36 
47 
     | 
    
         | 
| 
         @@ -41,5 +52,7 @@ DEPENDENCIES 
     | 
|
| 
       41 
52 
     | 
    
         
             
              bundler (~> 1.0.0)
         
     | 
| 
       42 
53 
     | 
    
         
             
              capybara
         
     | 
| 
       43 
54 
     | 
    
         
             
              jeweler (~> 1.6.4)
         
     | 
| 
      
 55 
     | 
    
         
            +
              rake (~> 0.9.2.2)
         
     | 
| 
       44 
56 
     | 
    
         
             
              rcov
         
     | 
| 
       45 
     | 
    
         
            -
               
     | 
| 
      
 57 
     | 
    
         
            +
              rdoc (~> 3.12)
         
     | 
| 
      
 58 
     | 
    
         
            +
              rspec
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -2,6 +2,9 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'bundler'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'rspec'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       5 
8 
     | 
    
         
             
            begin
         
     | 
| 
       6 
9 
     | 
    
         
             
              Bundler.setup(:default, :development)
         
     | 
| 
       7 
10 
     | 
    
         
             
            rescue Bundler::BundlerError => e
         
     | 
| 
         @@ -25,24 +28,35 @@ Jeweler::Tasks.new do |gem| 
     | 
|
| 
       25 
28 
     | 
    
         
             
            end
         
     | 
| 
       26 
29 
     | 
    
         
             
            Jeweler::RubygemsDotOrgTasks.new
         
     | 
| 
       27 
30 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
            require 'rake/testtask'
         
     | 
| 
       29 
     | 
    
         
            -
            Rake::TestTask.new(:test) do |test|
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
            #require 'rake/testtask'
         
     | 
| 
      
 32 
     | 
    
         
            +
            # Rake::TestTask.new(:test) do |test|
         
     | 
| 
      
 33 
     | 
    
         
            +
            #   test.libs << 'lib' << 'test'
         
     | 
| 
      
 34 
     | 
    
         
            +
            #   test.pattern = 'test/**/test_*.rb'
         
     | 
| 
      
 35 
     | 
    
         
            +
            #   test.verbose = true
         
     | 
| 
      
 36 
     | 
    
         
            +
            # end
         
     | 
| 
      
 37 
     | 
    
         
            +
            # 
         
     | 
| 
      
 38 
     | 
    
         
            +
            # require 'rcov/rcovtask'
         
     | 
| 
      
 39 
     | 
    
         
            +
            # Rcov::RcovTask.new do |test|
         
     | 
| 
      
 40 
     | 
    
         
            +
            #   test.libs << 'test'
         
     | 
| 
      
 41 
     | 
    
         
            +
            #   test.pattern = 'test/**/test_*.rb'
         
     | 
| 
      
 42 
     | 
    
         
            +
            #   test.verbose = true
         
     | 
| 
      
 43 
     | 
    
         
            +
            #   test.rcov_opts << '--exclude "gems/*"'
         
     | 
| 
      
 44 
     | 
    
         
            +
            # end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            desc "Run specs"
         
     | 
| 
      
 47 
     | 
    
         
            +
            RSpec::Core::RakeTask.new do |t|
         
     | 
| 
       33 
48 
     | 
    
         
             
            end
         
     | 
| 
       34 
49 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
               
     | 
| 
       38 
     | 
    
         
            -
               
     | 
| 
       39 
     | 
    
         
            -
               
     | 
| 
       40 
     | 
    
         
            -
              test.rcov_opts << '--exclude "gems/*"'
         
     | 
| 
      
 50 
     | 
    
         
            +
            desc "Generate code coverage"
         
     | 
| 
      
 51 
     | 
    
         
            +
            RSpec::Core::RakeTask.new(:coverage) do |t|
         
     | 
| 
      
 52 
     | 
    
         
            +
              t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
         
     | 
| 
      
 53 
     | 
    
         
            +
              t.rcov = true
         
     | 
| 
      
 54 
     | 
    
         
            +
              t.rcov_opts = ['--exclude', 'spec']
         
     | 
| 
       41 
55 
     | 
    
         
             
            end
         
     | 
| 
       42 
56 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
            task :default => : 
     | 
| 
      
 57 
     | 
    
         
            +
            task :default => :spec
         
     | 
| 
       44 
58 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
            require ' 
     | 
| 
      
 59 
     | 
    
         
            +
            require 'rdoc/task'
         
     | 
| 
       46 
60 
     | 
    
         
             
            Rake::RDocTask.new do |rdoc|
         
     | 
| 
       47 
61 
     | 
    
         
             
              version = File.exist?('VERSION') ? File.read('VERSION') : ""
         
     | 
| 
       48 
62 
     | 
    
         | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.3.0
         
     | 
| 
         @@ -4,14 +4,14 @@ 
     | 
|
| 
       4 
4 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
     | 
    
         
            -
              s.name =  
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0. 
     | 
| 
      
 7 
     | 
    
         
            +
              s.name = %q{capybara-page-object}
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.3.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
     | 
    
         
            -
              s.authors = [ 
     | 
| 
       12 
     | 
    
         
            -
              s.date =  
     | 
| 
       13 
     | 
    
         
            -
              s.description =  
     | 
| 
       14 
     | 
    
         
            -
              s.email =  
     | 
| 
      
 11 
     | 
    
         
            +
              s.authors = [%q{Andy Waite}]
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2012-04-01}
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.description = %q{Page Objects for Capybara}
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.email = %q{andy@andywaite.com}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
       16 
16 
     | 
    
         
             
                "LICENSE.txt",
         
     | 
| 
       17 
17 
     | 
    
         
             
                "README.rdoc"
         
     | 
| 
         @@ -25,49 +25,77 @@ Gem::Specification.new do |s| 
     | 
|
| 
       25 
25 
     | 
    
         
             
                "Rakefile",
         
     | 
| 
       26 
26 
     | 
    
         
             
                "VERSION",
         
     | 
| 
       27 
27 
     | 
    
         
             
                "capybara-page-object.gemspec",
         
     | 
| 
       28 
     | 
    
         
            -
                "lib/base.rb",
         
     | 
| 
       29 
28 
     | 
    
         
             
                "lib/capybara-page-object.rb",
         
     | 
| 
       30 
     | 
    
         
            -
                "lib/ 
     | 
| 
       31 
     | 
    
         
            -
                "lib/ 
     | 
| 
       32 
     | 
    
         
            -
                "lib/ 
     | 
| 
       33 
     | 
    
         
            -
                "lib/ 
     | 
| 
       34 
     | 
    
         
            -
                "lib/ 
     | 
| 
       35 
     | 
    
         
            -
                " 
     | 
| 
       36 
     | 
    
         
            -
                " 
     | 
| 
       37 
     | 
    
         
            -
                " 
     | 
| 
       38 
     | 
    
         
            -
                " 
     | 
| 
       39 
     | 
    
         
            -
                " 
     | 
| 
       40 
     | 
    
         
            -
                " 
     | 
| 
       41 
     | 
    
         
            -
                " 
     | 
| 
      
 29 
     | 
    
         
            +
                "lib/collections.rb",
         
     | 
| 
      
 30 
     | 
    
         
            +
                "lib/element.rb",
         
     | 
| 
      
 31 
     | 
    
         
            +
                "lib/element/anchor.rb",
         
     | 
| 
      
 32 
     | 
    
         
            +
                "lib/element/form.rb",
         
     | 
| 
      
 33 
     | 
    
         
            +
                "lib/element/form_field.rb",
         
     | 
| 
      
 34 
     | 
    
         
            +
                "lib/element/image.rb",
         
     | 
| 
      
 35 
     | 
    
         
            +
                "lib/element/input.rb",
         
     | 
| 
      
 36 
     | 
    
         
            +
                "lib/element/list.rb",
         
     | 
| 
      
 37 
     | 
    
         
            +
                "lib/element/listitem.rb",
         
     | 
| 
      
 38 
     | 
    
         
            +
                "lib/element/meta.rb",
         
     | 
| 
      
 39 
     | 
    
         
            +
                "lib/element/select.rb",
         
     | 
| 
      
 40 
     | 
    
         
            +
                "lib/element/table.rb",
         
     | 
| 
      
 41 
     | 
    
         
            +
                "lib/element/textarea.rb",
         
     | 
| 
      
 42 
     | 
    
         
            +
                "lib/extractor/common.rb",
         
     | 
| 
      
 43 
     | 
    
         
            +
                "lib/extractor/page_level.rb",
         
     | 
| 
      
 44 
     | 
    
         
            +
                "lib/html5_data.rb",
         
     | 
| 
      
 45 
     | 
    
         
            +
                "lib/key_value.rb",
         
     | 
| 
      
 46 
     | 
    
         
            +
                "lib/navigation.rb",
         
     | 
| 
      
 47 
     | 
    
         
            +
                "lib/node.rb",
         
     | 
| 
      
 48 
     | 
    
         
            +
                "spec/common_spec.rb",
         
     | 
| 
      
 49 
     | 
    
         
            +
                "spec/element/anchor_spec.rb",
         
     | 
| 
      
 50 
     | 
    
         
            +
                "spec/element/base_spec.rb",
         
     | 
| 
      
 51 
     | 
    
         
            +
                "spec/element/form_field_spec.rb",
         
     | 
| 
      
 52 
     | 
    
         
            +
                "spec/element/form_spec.rb",
         
     | 
| 
      
 53 
     | 
    
         
            +
                "spec/element/image_spec.rb",
         
     | 
| 
      
 54 
     | 
    
         
            +
                "spec/element/input_spec.rb",
         
     | 
| 
      
 55 
     | 
    
         
            +
                "spec/element/list_spec.rb",
         
     | 
| 
      
 56 
     | 
    
         
            +
                "spec/element/listitem_spec.rb",
         
     | 
| 
      
 57 
     | 
    
         
            +
                "spec/element/meta_spec.rb",
         
     | 
| 
      
 58 
     | 
    
         
            +
                "spec/element/select_spec.rb",
         
     | 
| 
      
 59 
     | 
    
         
            +
                "spec/element/table_spec.rb",
         
     | 
| 
      
 60 
     | 
    
         
            +
                "spec/element/textarea_spec.rb",
         
     | 
| 
      
 61 
     | 
    
         
            +
                "spec/fixtures/node.html",
         
     | 
| 
      
 62 
     | 
    
         
            +
                "spec/helper.rb",
         
     | 
| 
      
 63 
     | 
    
         
            +
                "spec/node_spec.rb"
         
     | 
| 
       42 
64 
     | 
    
         
             
              ]
         
     | 
| 
       43 
     | 
    
         
            -
              s.homepage =  
     | 
| 
       44 
     | 
    
         
            -
              s.licenses = [ 
     | 
| 
       45 
     | 
    
         
            -
              s.require_paths = [ 
     | 
| 
       46 
     | 
    
         
            -
              s.rubygems_version =  
     | 
| 
       47 
     | 
    
         
            -
              s.summary =  
     | 
| 
      
 65 
     | 
    
         
            +
              s.homepage = %q{http://github.com/andyw8/capybara-page-object}
         
     | 
| 
      
 66 
     | 
    
         
            +
              s.licenses = [%q{MIT}]
         
     | 
| 
      
 67 
     | 
    
         
            +
              s.require_paths = [%q{lib}]
         
     | 
| 
      
 68 
     | 
    
         
            +
              s.rubygems_version = %q{1.8.6}
         
     | 
| 
      
 69 
     | 
    
         
            +
              s.summary = %q{Page Objects for Capybara}
         
     | 
| 
       48 
70 
     | 
    
         | 
| 
       49 
71 
     | 
    
         
             
              if s.respond_to? :specification_version then
         
     | 
| 
       50 
72 
     | 
    
         
             
                s.specification_version = 3
         
     | 
| 
       51 
73 
     | 
    
         | 
| 
       52 
74 
     | 
    
         
             
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         
     | 
| 
       53 
75 
     | 
    
         
             
                  s.add_runtime_dependency(%q<capybara>, [">= 0"])
         
     | 
| 
       54 
     | 
    
         
            -
                  s.add_development_dependency(%q<shoulda>, [">= 0"])
         
     | 
| 
       55 
76 
     | 
    
         
             
                  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       56 
77 
     | 
    
         
             
                  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
         
     | 
| 
       57 
78 
     | 
    
         
             
                  s.add_development_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
      
 79 
     | 
    
         
            +
                  s.add_development_dependency(%q<rspec>, [">= 0"])
         
     | 
| 
      
 80 
     | 
    
         
            +
                  s.add_development_dependency(%q<rake>, ["~> 0.9.2.2"])
         
     | 
| 
      
 81 
     | 
    
         
            +
                  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
         
     | 
| 
       58 
82 
     | 
    
         
             
                else
         
     | 
| 
       59 
83 
     | 
    
         
             
                  s.add_dependency(%q<capybara>, [">= 0"])
         
     | 
| 
       60 
     | 
    
         
            -
                  s.add_dependency(%q<shoulda>, [">= 0"])
         
     | 
| 
       61 
84 
     | 
    
         
             
                  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       62 
85 
     | 
    
         
             
                  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
         
     | 
| 
       63 
86 
     | 
    
         
             
                  s.add_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
      
 87 
     | 
    
         
            +
                  s.add_dependency(%q<rspec>, [">= 0"])
         
     | 
| 
      
 88 
     | 
    
         
            +
                  s.add_dependency(%q<rake>, ["~> 0.9.2.2"])
         
     | 
| 
      
 89 
     | 
    
         
            +
                  s.add_dependency(%q<rdoc>, ["~> 3.12"])
         
     | 
| 
       64 
90 
     | 
    
         
             
                end
         
     | 
| 
       65 
91 
     | 
    
         
             
              else
         
     | 
| 
       66 
92 
     | 
    
         
             
                s.add_dependency(%q<capybara>, [">= 0"])
         
     | 
| 
       67 
     | 
    
         
            -
                s.add_dependency(%q<shoulda>, [">= 0"])
         
     | 
| 
       68 
93 
     | 
    
         
             
                s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
       69 
94 
     | 
    
         
             
                s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
         
     | 
| 
       70 
95 
     | 
    
         
             
                s.add_dependency(%q<rcov>, [">= 0"])
         
     | 
| 
      
 96 
     | 
    
         
            +
                s.add_dependency(%q<rspec>, [">= 0"])
         
     | 
| 
      
 97 
     | 
    
         
            +
                s.add_dependency(%q<rake>, ["~> 0.9.2.2"])
         
     | 
| 
      
 98 
     | 
    
         
            +
                s.add_dependency(%q<rdoc>, ["~> 3.12"])
         
     | 
| 
       71 
99 
     | 
    
         
             
              end
         
     | 
| 
       72 
100 
     | 
    
         
             
            end
         
     | 
| 
       73 
101 
     | 
    
         | 
    
        data/lib/capybara-page-object.rb
    CHANGED
    
    | 
         @@ -1,15 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'capybara'
         
     | 
| 
       3 
     | 
    
         
            -
            require File.dirname(__FILE__) + '/ 
     | 
| 
       4 
     | 
    
         
            -
            require File.dirname(__FILE__) + '/ 
     | 
| 
       5 
     | 
    
         
            -
            require File.dirname(__FILE__) + '/ 
     | 
| 
       6 
     | 
    
         
            -
            require File.dirname(__FILE__) + '/table'
         
     | 
| 
       7 
     | 
    
         
            -
            require File.dirname(__FILE__) + '/image'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/node'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/html5_data'
         
     | 
| 
       8 
5 
     | 
    
         | 
| 
       9 
6 
     | 
    
         
             
            module Capybara
         
     | 
| 
       10 
7 
     | 
    
         
             
              module Node
         
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
                  include  
     | 
| 
      
 8 
     | 
    
         
            +
                class Simple
         
     | 
| 
      
 9 
     | 
    
         
            +
                  include Extractor::PageLevel
         
     | 
| 
      
 10 
     | 
    
         
            +
                  include CapybaraPageObject::HTML5Data
         
     | 
| 
       13 
11 
     | 
    
         
             
                end
         
     | 
| 
       14 
12 
     | 
    
         
             
              end
         
     | 
| 
       15 
13 
     | 
    
         
             
            end
         
     | 
    
        data/lib/collections.rb
    ADDED
    
    
    
        data/lib/element.rb
    ADDED
    
    | 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/anchor'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/form'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/image'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/form_field'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/input'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/list'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/listitem' # TODO make this two words
         
     | 
| 
      
 8 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/meta'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/select'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/table'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/element/textarea'
         
     | 
    
        data/lib/element/form.rb
    ADDED
    
    | 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module CapybaraPageObject
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Form < CapybaraPageObject::Node
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def fields
         
     | 
| 
      
 5 
     | 
    
         
            +
                  r = {}
         
     | 
| 
      
 6 
     | 
    
         
            +
                  r.merge! inputs
         
     | 
| 
      
 7 
     | 
    
         
            +
                  r.merge! selects
         
     | 
| 
      
 8 
     | 
    
         
            +
                  r.merge! textareas
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def buttons
         
     | 
| 
      
 12 
     | 
    
         
            +
                  r = []
         
     | 
| 
      
 13 
     | 
    
         
            +
                  all('input').each do |element|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    input = Input.new(element)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    next unless input.button?
         
     | 
| 
      
 16 
     | 
    
         
            +
                    r << element
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  all('button').each do |button|
         
     | 
| 
      
 19 
     | 
    
         
            +
                    r << button
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  r
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def respond_to?(sym)
         
     | 
| 
      
 25 
     | 
    
         
            +
                   fields.has_key?(sym.to_s) || super(sym)
         
     | 
| 
      
 26 
     | 
    
         
            +
                 end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                def method_missing(sym, *args, &block)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  return fields[sym.to_s] if fields.has_key?(sym.to_s)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  super(sym, *args, &block)
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
                
         
     | 
| 
      
 33 
     | 
    
         
            +
                private
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
                def inputs
         
     | 
| 
      
 36 
     | 
    
         
            +
                  r = {}
         
     | 
| 
      
 37 
     | 
    
         
            +
                  all('input').each do |input_tag|
         
     | 
| 
      
 38 
     | 
    
         
            +
                    input = Input.new(input_tag)
         
     | 
| 
      
 39 
     | 
    
         
            +
                    next if input.button?
         
     | 
| 
      
 40 
     | 
    
         
            +
                    if input.checkable?
         
     | 
| 
      
 41 
     | 
    
         
            +
                      r[input.key] = !! input.checked?
         
     | 
| 
      
 42 
     | 
    
         
            +
                    else
         
     | 
| 
      
 43 
     | 
    
         
            +
                      r[input.key] = input_tag.value
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  r
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                def textareas
         
     | 
| 
      
 50 
     | 
    
         
            +
                  all('textarea').inject({}) do |result, element|
         
     | 
| 
      
 51 
     | 
    
         
            +
                    textarea = Textarea.new(element)
         
     | 
| 
      
 52 
     | 
    
         
            +
                    result.merge textarea.key => textarea.value
         
     | 
| 
      
 53 
     | 
    
         
            +
                  end
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def selects
         
     | 
| 
      
 57 
     | 
    
         
            +
                  all('select').inject({}) do |result, element|
         
     | 
| 
      
 58 
     | 
    
         
            +
                    select = Select.new(element)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    # TODO why is select.value not working here?
         
     | 
| 
      
 60 
     | 
    
         
            +
                    result.merge select.key => element.value
         
     | 
| 
      
 61 
     | 
    
         
            +
                  end
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module CapybaraPageObject
         
     | 
| 
      
 2 
     | 
    
         
            +
              class FormField < CapybaraPageObject::Node
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def key
         
     | 
| 
      
 5 
     | 
    
         
            +
                  root_node[:name]
         
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def element_names
         
     | 
| 
      
 9 
     | 
    
         
            +
                  ['input', 'select', 'textarea']
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                def blank?
         
     | 
| 
      
 13 
     | 
    
         
            +
                  '' == value
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                def value
         
     | 
| 
      
 17 
     | 
    
         
            +
                  root_node.value
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module CapybaraPageObject
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Input < CapybaraPageObject::Node
         
     | 
| 
      
 3 
     | 
    
         
            +
                
         
     | 
| 
      
 4 
     | 
    
         
            +
                BUTTON_TYPES = ['submit', 'reset', 'button']
         
     | 
| 
      
 5 
     | 
    
         
            +
                CHECKABLE_TYPES = ['radio', 'checkbox']
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def element_names
         
     | 
| 
      
 8 
     | 
    
         
            +
                  ['input']
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                def key
         
     | 
| 
      
 12 
     | 
    
         
            +
                  root_node[:name]
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                
         
     | 
| 
      
 15 
     | 
    
         
            +
                def untyped?
         
     | 
| 
      
 16 
     | 
    
         
            +
                  root_node[:type].nil?
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
                def button?
         
     | 
| 
      
 20 
     | 
    
         
            +
                  BUTTON_TYPES.include?(root_node[:type])
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def checkable?
         
     | 
| 
      
 24 
     | 
    
         
            +
                  type = root_node[:type]
         
     | 
| 
      
 25 
     | 
    
         
            +
                  type && CHECKABLE_TYPES.include?(type)
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     |