page_record 1.0.1 → 1.0.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/CHANGES.md +27 -16
- data/Gemfile.lock +11 -11
- data/lib/page_record/attributes.rb +5 -1
- data/lib/page_record/base.rb +17 -2
- data/lib/page_record/inspector.rb +6 -3
- data/lib/page_record/version.rb +1 -1
- data/spec/attributes_spec.rb +10 -0
- data/spec/base_spec.rb +17 -0
- data/spec/inspector_spec.rb +1 -0
- data/spec/support/shared_examples.rb +1 -1
- metadata +4 -4
    
        data/CHANGES.md
    CHANGED
    
    | @@ -1,28 +1,39 @@ | |
| 1 1 | 
             
            #Changes
         | 
| 2 2 |  | 
| 3 | 
            -
            ## | 
| 4 | 
            -
            *  | 
| 5 | 
            -
            *  | 
| 6 | 
            -
            * Added `host_class` class method. Now you are able to set any class as a host class instead of beeing glued to xxxxPage`
         | 
| 3 | 
            +
            ##V1.0.3
         | 
| 4 | 
            +
            * Added support for getting the Capybara element of a record.
         | 
| 5 | 
            +
            * #id now returns an integer 
         | 
| 7 6 |  | 
| 8 | 
            -
            ## | 
| 9 | 
            -
            *  | 
| 7 | 
            +
            ##V1.0.2
         | 
| 8 | 
            +
            * Added the id of the record to the inspector.
         | 
| 9 | 
            +
            * inspecting uses the Array variant of Capybara and doesn't wait. 
         | 
| 10 10 |  | 
| 11 | 
            -
            ## | 
| 12 | 
            -
            *  | 
| 13 | 
            -
            * Added other helpers to mke it easy to add `actions` and `attribute` tags
         | 
| 11 | 
            +
            ##V1.0.1
         | 
| 12 | 
            +
            * Fixed a bug in action handling that causes page actions aoutside of a record te be noticed. Refactored the action handling.
         | 
| 14 13 |  | 
| 15 | 
            -
            ## | 
| 16 | 
            -
             | 
| 17 | 
            -
            * Added spec's for rails helpers
         | 
| 14 | 
            +
            ##V1.0.0
         | 
| 15 | 
            +
            Released to production
         | 
| 18 16 |  | 
| 19 17 | 
             
            ##V0.5.0
         | 
| 20 18 | 
             
            * Added a rails project containing some cucumber features to demonstrate how it works. The example also shows how to use the rails and Formtastic helpers.
         | 
| 21 19 | 
             
            * Added support for form validations. Both in formtastic and in reading the errors
         | 
| 22 20 | 
             
            * added a `inspect` for both the class and for the instances. This is __very__ helpfull when dubugging.
         | 
| 23 21 |  | 
| 24 | 
            -
            ## | 
| 25 | 
            -
             | 
| 22 | 
            +
            ##V0.4.0
         | 
| 23 | 
            +
            * Added support for Formtasic
         | 
| 24 | 
            +
            * Added spec's for rails helpers
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            ##V0.3.0
         | 
| 27 | 
            +
            * Added rails helpers to make it easy in rails to have a form, recognised by PageRecord
         | 
| 28 | 
            +
            * Added other helpers to mke it easy to add `actions` and `attribute` tags
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            ##V0.2.1
         | 
| 31 | 
            +
            * Fixed a bug. PageRecord stack dumped when the class contained the name `Page` 
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            ##V0.2.0
         | 
| 34 | 
            +
            * __BREAKING CHANGE__ Changed class name `PageRecord::PageRecord` to `PageRecord::Base`. Just a rename should be enough.
         | 
| 35 | 
            +
            * Added `add_attributes` class method. This allows you to just add extra attributes instead of specifying them all
         | 
| 36 | 
            +
            * Added `host_class` class method. Now you are able to set any class as a host class instead of beeing glued to xxxxPage`
         | 
| 37 | 
            +
             | 
| 38 | 
            +
             | 
| 26 39 |  | 
| 27 | 
            -
            ##V1.0.1
         | 
| 28 | 
            -
            Fixed a bug in action handling that causes page actions aoutside of a record te be noticed. Refactored the action handling.
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                page_record (1.0. | 
| 4 | 
            +
                page_record (1.0.3)
         | 
| 5 5 | 
             
                  activemodel
         | 
| 6 6 | 
             
                  activesupport
         | 
| 7 7 | 
             
                  capybara (~> 2.1.0)
         | 
| @@ -31,7 +31,7 @@ GEM | |
| 31 31 | 
             
                  thread_safe (~> 0.1)
         | 
| 32 32 | 
             
                  tzinfo (~> 0.3.37)
         | 
| 33 33 | 
             
                arel (4.0.0)
         | 
| 34 | 
            -
                atomic (1.1. | 
| 34 | 
            +
                atomic (1.1.13)
         | 
| 35 35 | 
             
                builder (3.1.4)
         | 
| 36 36 | 
             
                capybara (2.1.0)
         | 
| 37 37 | 
             
                  mime-types (>= 1.16)
         | 
| @@ -51,7 +51,7 @@ GEM | |
| 51 51 | 
             
                erubis (2.7.0)
         | 
| 52 52 | 
             
                ffi (1.9.0)
         | 
| 53 53 | 
             
                formatador (0.2.4)
         | 
| 54 | 
            -
                guard (1.8. | 
| 54 | 
            +
                guard (1.8.2)
         | 
| 55 55 | 
             
                  formatador (>= 0.2.4)
         | 
| 56 56 | 
             
                  listen (>= 1.0.0)
         | 
| 57 57 | 
             
                  lumberjack (>= 1.0.2)
         | 
| @@ -60,17 +60,17 @@ GEM | |
| 60 60 | 
             
                guard-rspec (3.0.2)
         | 
| 61 61 | 
             
                  guard (>= 1.8)
         | 
| 62 62 | 
             
                  rspec (~> 2.13)
         | 
| 63 | 
            -
                i18n (0.6. | 
| 64 | 
            -
                listen (1. | 
| 63 | 
            +
                i18n (0.6.5)
         | 
| 64 | 
            +
                listen (1.3.0)
         | 
| 65 65 | 
             
                  rb-fsevent (>= 0.9.3)
         | 
| 66 66 | 
             
                  rb-inotify (>= 0.9)
         | 
| 67 67 | 
             
                  rb-kqueue (>= 0.2)
         | 
| 68 68 | 
             
                lumberjack (1.0.4)
         | 
| 69 69 | 
             
                method_source (0.8.2)
         | 
| 70 | 
            -
                mime-types (1. | 
| 70 | 
            +
                mime-types (1.24)
         | 
| 71 71 | 
             
                mini_portile (0.5.1)
         | 
| 72 72 | 
             
                minitest (4.7.5)
         | 
| 73 | 
            -
                multi_json (1.7. | 
| 73 | 
            +
                multi_json (1.7.9)
         | 
| 74 74 | 
             
                nokogiri (1.6.0)
         | 
| 75 75 | 
             
                  mini_portile (~> 0.5.0)
         | 
| 76 76 | 
             
                pry (0.9.12.2)
         | 
| @@ -89,7 +89,7 @@ GEM | |
| 89 89 | 
             
                  thor (>= 0.18.1, < 2.0)
         | 
| 90 90 | 
             
                rake (10.1.0)
         | 
| 91 91 | 
             
                rb-fsevent (0.9.3)
         | 
| 92 | 
            -
                rb-inotify (0.9. | 
| 92 | 
            +
                rb-inotify (0.9.1)
         | 
| 93 93 | 
             
                  ffi (>= 0.5.0)
         | 
| 94 94 | 
             
                rb-kqueue (0.2.0)
         | 
| 95 95 | 
             
                  ffi (>= 0.5.0)
         | 
| @@ -99,10 +99,10 @@ GEM | |
| 99 99 | 
             
                  rspec-core (~> 2.14.0)
         | 
| 100 100 | 
             
                  rspec-expectations (~> 2.14.0)
         | 
| 101 101 | 
             
                  rspec-mocks (~> 2.14.0)
         | 
| 102 | 
            -
                rspec-core (2.14. | 
| 103 | 
            -
                rspec-expectations (2.14. | 
| 102 | 
            +
                rspec-core (2.14.5)
         | 
| 103 | 
            +
                rspec-expectations (2.14.2)
         | 
| 104 104 | 
             
                  diff-lcs (>= 1.1.3, < 2.0)
         | 
| 105 | 
            -
                rspec-mocks (2.14. | 
| 105 | 
            +
                rspec-mocks (2.14.3)
         | 
| 106 106 | 
             
                rspec-rails (2.14.0)
         | 
| 107 107 | 
             
                  actionpack (>= 3.0)
         | 
| 108 108 | 
             
                  activesupport (>= 3.0)
         | 
| @@ -25,7 +25,11 @@ module PageRecord | |
| 25 25 | 
             
                # @raise [AttributeNotFound] when the attribute is not found in the record
         | 
| 26 26 | 
             
                #
         | 
| 27 27 | 
             
                def read_attribute(attribute)
         | 
| 28 | 
            -
                   | 
| 28 | 
            +
                  if block_given?
         | 
| 29 | 
            +
                    element = yield
         | 
| 30 | 
            +
                  else
         | 
| 31 | 
            +
                    element = send("#{attribute}?")
         | 
| 32 | 
            +
                  end
         | 
| 29 33 | 
             
                  tag = element.tag_name
         | 
| 30 34 | 
             
                  input_field?(tag) ? element.value : element.text
         | 
| 31 35 | 
             
                end
         | 
    
        data/lib/page_record/base.rb
    CHANGED
    
    | @@ -13,10 +13,25 @@ module PageRecord | |
| 13 13 | 
             
                def initialize(id = nil, selector = nil, filter = nil)
         | 
| 14 14 | 
             
                  @page = self.class.page
         | 
| 15 15 | 
             
                  @type = self.class.instance_variable_get('@type')
         | 
| 16 | 
            -
                  @id = id. | 
| 16 | 
            +
                  @id = id.to_i if id 
         | 
| 17 17 | 
             
                  find_record(selector, filter)
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 | 
            +
                ##
         | 
| 21 | 
            +
                # Return the Capybara element containg the record
         | 
| 22 | 
            +
                #
         | 
| 23 | 
            +
                # Example:
         | 
| 24 | 
            +
                #
         | 
| 25 | 
            +
                # ```ruby
         | 
| 26 | 
            +
                #   team_1 = TeamPage.find(1) # Get the first team
         | 
| 27 | 
            +
                #   team_1.element? # access the Capybara context
         | 
| 28 | 
            +
                # end
         | 
| 29 | 
            +
                # ```
         | 
| 30 | 
            +
                #
         | 
| 31 | 
            +
                def element?
         | 
| 32 | 
            +
                  @record
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 20 35 | 
             
                ##
         | 
| 21 36 | 
             
                # Set's the default selector for this class
         | 
| 22 37 | 
             
                #
         | 
| @@ -274,7 +289,7 @@ module PageRecord | |
| 274 289 | 
             
                  begin
         | 
| 275 290 | 
             
                    context = self.class.context_for_selector(selector)
         | 
| 276 291 | 
             
                    @record = context.find("[data-#{@type}-id#{id_text}]#{filter}")
         | 
| 277 | 
            -
                    @id = @record["data-#{@type}-id"] if @id.blank?
         | 
| 292 | 
            +
                    @id = @record["data-#{@type}-id"].to_i if @id.blank?
         | 
| 278 293 | 
             
                  rescue Capybara::Ambiguous
         | 
| 279 294 | 
             
                    raise MultipleRecords, "Found multiple #{@type} record with id #{@id} on page"
         | 
| 280 295 | 
             
                  rescue Capybara::ElementNotFound
         | 
| @@ -20,12 +20,15 @@ module PageRecord | |
| 20 20 | 
             
                  attributes = {}
         | 
| 21 21 | 
             
                  self.class.attributes.each do | attribute|
         | 
| 22 22 | 
             
                    begin
         | 
| 23 | 
            -
                      attributes[attribute] =  | 
| 24 | 
            -
             | 
| 23 | 
            +
                      attributes[attribute] = read_attribute(attribute) do
         | 
| 24 | 
            +
                        @record.all("[data-attribute-for='#{attribute}']").first
         | 
| 25 | 
            +
                      end
         | 
| 26 | 
            +
                    rescue NoMethodError
         | 
| 25 27 | 
             
                      attributes[attribute] = '--not found on page--'
         | 
| 26 28 | 
             
                    end
         | 
| 27 29 | 
             
                  end
         | 
| 28 | 
            -
             | 
| 30 | 
            +
                 attributes['id'] = id
         | 
| 31 | 
            +
                 attributes
         | 
| 29 32 | 
             
                end
         | 
| 30 33 |  | 
| 31 34 | 
             
                module ClassMethods
         | 
    
        data/lib/page_record/version.rb
    CHANGED
    
    
    
        data/spec/attributes_spec.rb
    CHANGED
    
    | @@ -4,6 +4,16 @@ describe PageRecord::Attributes do | |
| 4 4 |  | 
| 5 5 | 
             
              include_context "default context"
         | 
| 6 6 |  | 
| 7 | 
            +
              describe "#id" do
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                subject { TeamPage.find(1) }
         | 
| 10 | 
            +
                include_context "page with single table with 3 records"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                it "returns the id as an integer" do
         | 
| 13 | 
            +
                  expect(subject.id).to eq 1
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 7 17 | 
             
              describe "#... valid attribute getter" do
         | 
| 8 18 |  | 
| 9 19 | 
             
                subject { TeamPage.find(1) }
         | 
    
        data/spec/base_spec.rb
    CHANGED
    
    | @@ -207,6 +207,23 @@ describe PageRecord::Base do | |
| 207 207 |  | 
| 208 208 | 
             
              end
         | 
| 209 209 |  | 
| 210 | 
            +
              describe "record.element?" do
         | 
| 211 | 
            +
             | 
| 212 | 
            +
                subject { TeamPage.find().element? }
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                context "record on the page" do
         | 
| 215 | 
            +
                  before do
         | 
| 216 | 
            +
                    visit '/page-one-record'
         | 
| 217 | 
            +
                  end
         | 
| 218 | 
            +
             | 
| 219 | 
            +
                  it "returns the capybara element containing the record" do
         | 
| 220 | 
            +
                    expect(subject.class).to eq Capybara::Node::Element
         | 
| 221 | 
            +
                  end
         | 
| 222 | 
            +
             | 
| 223 | 
            +
                end
         | 
| 224 | 
            +
              end
         | 
| 225 | 
            +
             | 
| 226 | 
            +
             | 
| 210 227 | 
             
              describe "found bugs" do
         | 
| 211 228 |  | 
| 212 229 | 
             
                describe "class name contains word page but doens't exist" do
         | 
    
        data/spec/inspector_spec.rb
    CHANGED
    
    | @@ -61,6 +61,7 @@ describe PageRecord::Inspector do | |
| 61 61 | 
             
            	  subject { TeamPage.find(1).inspect }
         | 
| 62 62 |  | 
| 63 63 | 
             
            	  it 'returns all attributes' do
         | 
| 64 | 
            +
            	  	expect(subject[:attributes]['id']).to eq 1
         | 
| 64 65 | 
             
            	  	expect(subject[:attributes]['ranking']).to eq '1'
         | 
| 65 66 | 
             
            	  	expect(subject[:attributes]['name']).to eq 'Ajax'
         | 
| 66 67 | 
             
            	  	expect(subject[:attributes]['points']).to eq '10'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: page_record
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.3
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013- | 
| 12 | 
            +
            date: 2013-09-05 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: bundler
         | 
| @@ -293,7 +293,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 293 293 | 
             
                  version: '0'
         | 
| 294 294 | 
             
                  segments:
         | 
| 295 295 | 
             
                  - 0
         | 
| 296 | 
            -
                  hash:  | 
| 296 | 
            +
                  hash: 1953905507343366230
         | 
| 297 297 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 298 298 | 
             
              none: false
         | 
| 299 299 | 
             
              requirements:
         | 
| @@ -302,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 302 302 | 
             
                  version: '0'
         | 
| 303 303 | 
             
                  segments:
         | 
| 304 304 | 
             
                  - 0
         | 
| 305 | 
            -
                  hash:  | 
| 305 | 
            +
                  hash: 1953905507343366230
         | 
| 306 306 | 
             
            requirements: []
         | 
| 307 307 | 
             
            rubyforge_project: 
         | 
| 308 308 | 
             
            rubygems_version: 1.8.24
         |