Class: Kameleon::User::Abstract

Inherits:
Object
  • Object
show all
Includes:
Dsl::Act, Dsl::See, Session::Capybara
Defined in:
lib/kameleon/user/abstract.rb

Direct Known Subclasses

Base, Guest

Instance Attribute Summary collapse

Attributes included from Session::Capybara

#driver_name

Instance Method Summary collapse

Methods included from Dsl::Act

#click, #fill_in

Methods included from Dsl::See

#not_see, #see

Methods included from Session::Capybara

#refresh_page, #set_session

Constructor Details

#initialize(rspec_world, options = {}) ⇒ Abstract

Returns a new instance of Abstract.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/kameleon/user/abstract.rb', line 11

def initialize(rspec_world, options={})
  @rspec_world = rspec_world
  @driver_name = options.delete(:driver)
  @session_name = options.delete(:session_name)
  @options = options
  set_session
  session.instance_eval do
    def within(*args)
      new_scope = if args.size == 1 && Capybara::Node::Base === args.first
                    args.first
                  elsif args.last == :select_multiple
                    case driver
                      when Capybara::Selenium::Driver
                        raise "So far Unsupported in this driver"
                      when Capybara::RackTest::Driver
                        node = find(*args)
                        native = Nokogiri::HTML.parse(html).xpath(args[1])
                        base = Capybara::RackTest::Node.new(driver, native)
                        ::Capybara::Node::Element.new(self,
                                                      base,
                                                      node.parent,
                                                      node.instance_variable_get(:@selector))
                    end
                  else
                    find(*args)
                  end
      begin
        scopes.push(*new_scope)
        yield
      ensure
        scopes.pop
      end
    end
  end
  yield if block_given?
  after_initialization
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



4
5
6
# File 'lib/kameleon/user/abstract.rb', line 4

def options
  @options
end

#rspec_worldObject

Returns the value of attribute rspec_world.



5
6
7
# File 'lib/kameleon/user/abstract.rb', line 5

def rspec_world
  @rspec_world
end

Instance Method Details

#debugObject



69
70
71
# File 'lib/kameleon/user/abstract.rb', line 69

def debug
  session
end

#page_areasObject



65
66
67
# File 'lib/kameleon/user/abstract.rb', line 65

def page_areas
  {}
end

#page_element(selector) ⇒ Object

! it should be package into raw module



74
75
76
# File 'lib/kameleon/user/abstract.rb', line 74

def page_element(selector)
  session.find(*get_selector(selector))
end

#page_elements(selector) ⇒ Object



78
79
80
# File 'lib/kameleon/user/abstract.rb', line 78

def page_elements(selector)
  session.all(*get_selector(selector))
end

#visit(page) ⇒ Object



49
50
51
# File 'lib/kameleon/user/abstract.rb', line 49

def visit(page)
  session.visit(page)
end

#will(&block) ⇒ Object



53
54
55
56
57
# File 'lib/kameleon/user/abstract.rb', line 53

def will(&block)
  default_selector ?
      within(*default_selector, &block) :
      instance_eval(&block)
end

#within(*selector, &block) ⇒ Object



59
60
61
62
63
# File 'lib/kameleon/user/abstract.rb', line 59

def within(*selector, &block)
  session.within(*get_selector(selector)) do
    instance_eval(&block)
  end
end