lib/page_magic/session.rb in page_magic-0.11.0.alpha5 vs lib/page_magic/session.rb in page_magic-0.11.0.alpha6

- old
+ new

@@ -1,40 +1,63 @@ require 'wait' module PageMagic class Session - attr_accessor :current_page, :raw_session + attr_accessor :current_page, :raw_session, :transitions def initialize browser @raw_session = browser end + def define_page_mappings transitions + @transitions = transitions + end + + def current_page + if transitions + mapping = find_mapped_page(current_path) + @current_page = mapping.new(self) if mapping + end + @current_page + end + + def find_mapped_page path + mapping = transitions.keys.find do |key| + string_matches?(path, key) + end + transitions[mapping] + end + + def string_matches?(string, matcher) + if matcher.is_a?(Regexp) + string =~ matcher + elsif matcher.is_a?(String) + string == matcher + else + false + end + end + def visit page - @raw_session.visit page.url + raw_session.visit page.url @current_page = page.new self self end def current_path - @raw_session.current_path + raw_session.current_path end def current_url - @raw_session.current_url + raw_session.current_url end - def move_to page_class - page_class = eval(page_class) if page_class.is_a?(String) - @current_page = page_class.new self - wait_until { raw_session.current_url == page_class.url } - end - def wait_until &block @wait ||= Wait.new @wait.until &block end def method_missing name, *args, &block - @current_page.send(name, *args, &block) + current_page.send(name, *args, &block) end end end \ No newline at end of file