diff --git a/lib/ae_page_objects/element.rb b/lib/ae_page_objects/element.rb index 2f93ccd3..0985c0dc 100644 --- a/lib/ae_page_objects/element.rb +++ b/lib/ae_page_objects/element.rb @@ -20,7 +20,7 @@ def initialize(parent, options_or_locator = {}) raise ArgumentError, ":name or :locator is required" unless @name || @locator @locator ||= default_locator - + super(scoped_node) end @@ -38,7 +38,7 @@ def document def __full_name__ if parent.respond_to?(:__full_name__) - [ parent.__full_name__, __name__ ].compact.join('_') + [ parent.__full_name__, __name__ ].compact.presence.try(:join, '_') else __name__ end diff --git a/test/unit/element_test.rb b/test/unit/element_test.rb index d3a2f337..9362fb15 100644 --- a/test/unit/element_test.rb +++ b/test/unit/element_test.rb @@ -96,5 +96,26 @@ def test_document puts e.backtrace.join("\n") raise e end + + def test_full_name + kitty_page_class = AePageObjects::Document.new_subclass + kitty_class = AePageObjects::Element.new_subclass do + def configure(*) + super + @name = nil + end + end + + capybara_stub.browser.expects(:window_handle).returns("window_handle") + + kitty_page = kitty_page_class.new + capybara_stub.session.stubs(:find).returns(capybara_stub.session) + + kitty1 = kitty_class.new(kitty_page, :locator => 'purr') + assert_nil kitty1.full_name + + kitty2 = kitty_class.new(kitty1, :locator => 'purr') + assert_nil kitty2.full_name + end end end \ No newline at end of file diff --git a/test/unit_helper.rb b/test/unit_helper.rb index 96608be7..a28e09cc 100644 --- a/test/unit_helper.rb +++ b/test/unit_helper.rb @@ -13,4 +13,16 @@ class ActiveSupport::TestCase include NodeFieldTestHelpers include AfCruft + + def capybara_stub + @capybara_stub ||= begin + browser_stub = stub + driver_stub = stub(:browser => browser_stub) + session_stub = stub(:driver => driver_stub) + + Capybara.stubs(:current_session).returns(session_stub) + + stub(:session => session_stub, :browser => browser_stub, :driver => driver_stub) + end + end end