Sha256: 45c4aefc422e188f37ba3815f62332c182f4bcaa595a4af02277ac93a1e23b1b

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

require 'domkey/view/page_object'
require 'domkey/view/page_object_collection'
require 'domkey/view/radio_group'
require 'domkey/view/checkbox_group'
require 'domkey/view/cargo'

module Domkey

  module View

    module ClassMethods

      # PageObjectCollection factory
      def doms(key, &package)
        send :define_method, key do
          PageObjectCollection.new package, Proc.new { browser }
        end
      end

      # PageObject factory
      def dom(key, &package)
        send :define_method, key do
          PageObject.new package, Proc.new { browser }
        end
      end

      # build Cargo with model and view
      # @return [Domkey::View::Cargo]
      def cargo model, browser: nil
        Cargo.new model: model, view: self.new(browser)
      end

    end

    def self.included(klass)
      klass.extend(ClassMethods)
    end

    attr_accessor :browser

    # @param [Watir::Browser] (false)
    def initialize browser=nil
      @browser = browser
    end

    # browser for this view.
    # if View was initialized without a browser then default Domkey.browser is provided
    # @return [Watir::Browser]
    def browser
      @browser ||= Domkey.browser
    end

    def set value
      Cargo.new(model: value, view: self).set
    end

    # @param [Hash{Symbol => Object}] view data where Symbol is semantic descriptor for a pageobject in the view
    # @param [Symbol] for one pageobject
    # @param [Array<Symbol>] for array of pageobjects
    #
    # @return [Hash{Symbol => Object}] data from the view
    def value value
      # transform value into hash
      value = case value
              when Symbol
                {value => nil}
              when Array
                #array of symbols
                Hash[value.map { |v| [v, nil] }]
              when Hash
                value
              end
      Cargo.new(model: value, view: self).value
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
domkey-0.2.0 lib/domkey/view.rb