diff --git a/lib/ae_page_objects.rb b/lib/ae_page_objects.rb index 83083082..3e0e1af0 100644 --- a/lib/ae_page_objects.rb +++ b/lib/ae_page_objects.rb @@ -22,7 +22,6 @@ module AePageObjects module Dsl autoload :Element, 'ae_page_objects/core/dsl/element' - autoload :NestedElement, 'ae_page_objects/core/dsl/nested_element' autoload :Collection, 'ae_page_objects/core/dsl/collection' autoload :FormFor, 'ae_page_objects/core/dsl/form_for' end @@ -38,7 +37,6 @@ module Concerns autoload :Element, 'ae_page_objects/element' autoload :ElementProxy, 'ae_page_objects/element_proxy' - autoload :HasOne, 'ae_page_objects/elements/has_one' autoload :Collection, 'ae_page_objects/elements/collection' autoload :Form, 'ae_page_objects/elements/form' autoload :Select, 'ae_page_objects/elements/select' diff --git a/lib/ae_page_objects/core/dsl/element.rb b/lib/ae_page_objects/core/dsl/element.rb index 93f317e3..ed375194 100644 --- a/lib/ae_page_objects/core/dsl/element.rb +++ b/lib/ae_page_objects/core/dsl/element.rb @@ -15,9 +15,9 @@ def element_attributes end end - def element(name, options = {}) - options = options.dup - klass = field_klass(options) + def element(name, options = {}, &block) + options = options.dup + klass = field_klass(options, &block) self.element_attributes[name.to_sym] = klass @@ -30,13 +30,13 @@ def element(name, options = {}) private - def field_klass(options) - field_type = options.delete(:is) - - if field_type.is_a? Class - field_type + def field_klass(options, &block) + klass = options.delete(:is) || ::AePageObjects::Element + + if block_given? + klass.new_subclass(&block) else - ::AePageObjects::Element + klass end end end diff --git a/lib/ae_page_objects/core/dsl/form_for.rb b/lib/ae_page_objects/core/dsl/form_for.rb index a578973e..b72d643c 100644 --- a/lib/ae_page_objects/core/dsl/form_for.rb +++ b/lib/ae_page_objects/core/dsl/form_for.rb @@ -19,9 +19,9 @@ def form_for(form_name, options = {}, &block) element(form_name, options) - klass.element_attributes.each do |node_name, node_klazz| - delegate node_name, :to => form_name - self.element_attributes[node_name] = node_klazz + klass.element_attributes.each do |element_name, element_klazz| + delegate element_name, :to => form_name + self.element_attributes[element_name] = element_klazz end end end diff --git a/lib/ae_page_objects/core/dsl/nested_element.rb b/lib/ae_page_objects/core/dsl/nested_element.rb deleted file mode 100644 index 7570b86b..00000000 --- a/lib/ae_page_objects/core/dsl/nested_element.rb +++ /dev/null @@ -1,24 +0,0 @@ -module AePageObjects - module Dsl - module NestedElement - extend ActiveSupport::Concern - include Dsl::Element - - module ClassMethods - - def element(name, options = {}, &block) - raise ArgumentError, ":is option and block not supported together" if options[:is].present? && block_given? - - if block_given? - klass = ::AePageObjects::HasOne.new_subclass(&block) - - options = options.dup - options[:is] = klass - end - - super(name, options) - end - end - end - end -end diff --git a/lib/ae_page_objects/elements/collection.rb b/lib/ae_page_objects/elements/collection.rb index 867676c8..07fa93c3 100644 --- a/lib/ae_page_objects/elements/collection.rb +++ b/lib/ae_page_objects/elements/collection.rb @@ -1,5 +1,5 @@ module AePageObjects - class Collection < HasOne + class Collection < Element class_attribute :item_class, :instance_writer => false self.item_class = Element diff --git a/lib/ae_page_objects/elements/has_one.rb b/lib/ae_page_objects/elements/has_one.rb deleted file mode 100644 index e3655e44..00000000 --- a/lib/ae_page_objects/elements/has_one.rb +++ /dev/null @@ -1,11 +0,0 @@ -module AePageObjects - class HasOne < Element - def __full_name__ - if parent.respond_to?(:__full_name__) - "#{parent.__full_name__}_#{__name__}_attributes" - else - "#{__name__}_attributes" - end - end - end -end diff --git a/lib/ae_page_objects/node.rb b/lib/ae_page_objects/node.rb index bd23aecf..592212ca 100644 --- a/lib/ae_page_objects/node.rb +++ b/lib/ae_page_objects/node.rb @@ -4,7 +4,6 @@ module Methods extend ActiveSupport::Concern include Dsl::Element - include Dsl::NestedElement include Dsl::Collection include Dsl::FormFor diff --git a/test/test_apps/shared/test/page_objects/authors/new_page.rb b/test/test_apps/shared/test/page_objects/authors/new_page.rb index a15224d9..568f59b5 100644 --- a/test/test_apps/shared/test/page_objects/authors/new_page.rb +++ b/test/test_apps/shared/test/page_objects/authors/new_page.rb @@ -9,7 +9,10 @@ class NewPage < ::AePageObjects::Document element :first_name element :last_name - collection :books, :locator => "#author_books", :row_xpath => ".//*[contains(@class, 'some-books-fool')]//*[contains(@class,'row') and not(contains(@style,'display'))]" do + collection :books, + :name => "books_attributes", + :locator => "#author_books", + :row_xpath => ".//*[contains(@class, 'some-books-fool')]//*[contains(@class,'row') and not(contains(@style,'display'))]" do element :title end end @@ -34,7 +37,7 @@ def remove_star element :rating, :is => Rating, :locator => "#rating" - element :nested_rating, :locator => "#rating" do + element :nested_rating, :name => "nested_rating_attributes", :locator => "#rating" do element :star, :locator => ".star" def show_star diff --git a/test/test_apps/shared/test/page_objects/books/new_page.rb b/test/test_apps/shared/test/page_objects/books/new_page.rb index 30714157..2006813a 100644 --- a/test/test_apps/shared/test/page_objects/books/new_page.rb +++ b/test/test_apps/shared/test/page_objects/books/new_page.rb @@ -12,11 +12,11 @@ def loaded_locator form_for "book" do element :title - element :index, :locator => "#book_index" do + element :index, :name => "index_attributes", :locator => "#book_index" do element :pages end - element :author do + element :author, :name => "author_attributes" do element :first_name end end diff --git a/test/unit/attribute_methods/nested_node_test.rb b/test/unit/attribute_methods/nested_node_test.rb deleted file mode 100644 index 5531c82e..00000000 --- a/test/unit/attribute_methods/nested_node_test.rb +++ /dev/null @@ -1,212 +0,0 @@ -require 'unit_helper' - -module AePageObjects - module AttributeMethods - class NestedNodeTest < ActiveSupport::TestCase - - def test_nested_element__block - kitty = ::AePageObjects::Document.new_subclass do - element :tail do - element :color - element :size do - element :length - element :width - - def grow! - "Growing!" - end - end - end - end - - verify_kitty_structure(kitty) - - document_stub = mock - jon = kitty.new(document_stub) - - tail_page_object = mock - document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) - - tail = verify_field_with_intermediary_class(jon, :tail, ::AePageObjects::HasOne, tail_page_object) - - color_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) - verify_field(tail, :color, ::AePageObjects::Element, color_page_object) - - size_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) - size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::HasOne, size_page_object) - - assert_equal "Growing!", size.grow! - - length_page_object = mock - size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) - verify_field(size, :length, ::AePageObjects::Element, length_page_object) - - width_page_object = mock - size_page_object.expects(:find).with("#tail_attributes_size_attributes_width").returns(width_page_object) - verify_field(size, :width, ::AePageObjects::Element, width_page_object) - rescue => e - puts e.backtrace.join("\n") - raise e - end - - def test_nested_element__as - tail_class = ::AePageObjects::HasOne.new_subclass do - element :color - element :size do - element :length - element :width - - def grow! - "Growing!" - end - end - end - - kitty = ::AePageObjects::Document.new_subclass do - element :tail, :is => tail_class - end - - verify_kitty_structure(kitty) - - document_stub = mock - jon = kitty.new(document_stub) - - tail_page_object = mock - document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) - - tail = verify_field(jon, :tail, tail_class, tail_page_object) - - color_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) - verify_field(tail, :color, ::AePageObjects::Element, color_page_object) - - size_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) - size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::HasOne, size_page_object) - - assert_equal "Growing!", size.grow! - - length_page_object = mock - size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) - verify_field(size, :length, ::AePageObjects::Element, length_page_object) - - width_page_object = mock - size_page_object.expects(:find).with("#tail_attributes_size_attributes_width", anything).returns(width_page_object) - verify_field(size, :width, ::AePageObjects::Element, width_page_object) - end - - def test_nested_element__as_block_mutual_exclusion - assert_raises ArgumentError do - kitty = ::AePageObjects::Document.new_subclass do - element :tail, :is => :select do - raise "You will never see this" - end - end - end - end - - def test_nested_element__locator - kitty = ::AePageObjects::Document.new_subclass do - element :tail, :locator => "what ever you want, baby" do - element :color - element :size, :locator => "Size" do - element :length - element :width, :locator => "Fatness" - - def grow! - "Growing!" - end - end - end - end - - verify_kitty_structure(kitty) - - document_stub = mock - jon = kitty.new(document_stub) - - tail_page_object = mock - document_stub.expects(:find).with("what ever you want, baby").returns(tail_page_object) - - tail = verify_field_with_intermediary_class(jon, :tail, ::AePageObjects::HasOne, tail_page_object) - - color_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) - verify_field(tail, :color, ::AePageObjects::Element, color_page_object) - - size_page_object = mock - tail_page_object.expects(:find).with("Size").returns(size_page_object) - size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::HasOne, size_page_object) - - assert_equal "Growing!", size.grow! - - length_page_object = mock - size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) - verify_field(size, :length, ::AePageObjects::Element, length_page_object) - - width_page_object = mock - size_page_object.expects(:find).with("Fatness").returns(width_page_object) - verify_field(size, :width, ::AePageObjects::Element, width_page_object) - end - - def test_nested_element__locator__proc - kitty = ::AePageObjects::Document.new_subclass do - element :tail do - element :color - element :size do - element :length - element :width, :locator => Proc.new { parent.page_local_context } - - def grow! - "Growing!" - end - end - end - end - - verify_kitty_structure(kitty) - - document_stub = mock - jon = kitty.new(document_stub) - - tail_page_object = mock - document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) - - tail = verify_field_with_intermediary_class(jon, :tail, ::AePageObjects::HasOne, tail_page_object) - - color_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) - verify_field(tail, :color, ::AePageObjects::Element, color_page_object) - - size_page_object = mock - tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) - size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::HasOne, size_page_object) - - assert_equal "Growing!", size.grow! - - length_page_object = mock - size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) - verify_field(size, :length, ::AePageObjects::Element, length_page_object) - - size.expects(:page_local_context).returns("hello") - - width_page_object = mock - size_page_object.expects(:find).with("hello").returns(width_page_object) - verify_field(size, :width, ::AePageObjects::Element, width_page_object) - end - - private - - def verify_kitty_structure(kitty_class) - assert_sets_equal [:tail], kitty_class.element_attributes.keys - assert_sets_equal [:color, :size], kitty_class.element_attributes[:tail].element_attributes.keys - - size_class = kitty_class.element_attributes[:tail].element_attributes[:size] - assert_sets_equal [:length, :width], size_class.element_attributes.keys - assert_include size_class.instance_methods(false).map(&:to_sym), "grow!".to_sym - end - end - end -end diff --git a/test/unit/attribute_methods/node_test.rb b/test/unit/attribute_methods/node_test.rb deleted file mode 100644 index 6e2dc5ef..00000000 --- a/test/unit/attribute_methods/node_test.rb +++ /dev/null @@ -1,162 +0,0 @@ -require 'unit_helper' - -module AePageObjects - module AttributeMethods - class NodeTest < ActiveSupport::TestCase - - def test_element__basic - kitty = ::AePageObjects::Document.new_subclass do - element :kind - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("#kind").returns(kind_page_object) - verify_field(jon, :kind, ::AePageObjects::Element, kind_page_object) - rescue => e - puts e.backtrace.join("\n") - raise e - end - - def test_element__accessor_yields_to_block - kitty = ::AePageObjects::Document.new_subclass do - element :kind - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("#kind").returns(kind_page_object) - - kind_in_block = nil - kind = jon.kind do |kind| - kind_in_block = kind - "hello" - end - - assert_false kind_in_block.is_a?(AePageObjects::ElementProxy) - assert kind_in_block.is_a?(AePageObjects::Element) - - assert kind.is_a?(AePageObjects::ElementProxy) - assert kind.is_a?(AePageObjects::Element) - - assert_equal kind, kind_in_block - rescue => e - puts e.backtrace.join("\n") - raise e - end - - def test_element__locator - kitty = ::AePageObjects::Document.new_subclass do - element :kind, :locator => "Kind Homie" - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("Kind Homie").returns(kind_page_object) - verify_field(jon, :kind, ::AePageObjects::Element, kind_page_object) - end - - def test_element__locator__proc - kitty = ::AePageObjects::Document.new_subclass do - element :kind, :locator => Proc.new { parent.page_local_context } - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - jon.expects(:page_local_context).returns("hello") - - kind_page_object = mock - document_stub.expects(:find).with("hello").returns(kind_page_object) - verify_field(jon, :kind, ::AePageObjects::Element, kind_page_object) - end - - def test_element__as__select - kitty = ::AePageObjects::Document.new_subclass do - element :kind, :is => ::AePageObjects::Select - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("#kind").returns(kind_page_object) - verify_field(jon, :kind, ::AePageObjects::Select, kind_page_object) - end - - def test_element__as__checkbox - kitty = ::AePageObjects::Document.new_subclass do - element :kind, :is => ::AePageObjects::Checkbox - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("#kind").returns(kind_page_object) - verify_field(jon, :kind, ::AePageObjects::Checkbox, kind_page_object) - end - - def test_element__as__special_widget - special_widget = ::AePageObjects::Element.new_subclass - - kitty = ::AePageObjects::Document.new_subclass do - element :kind, :is => special_widget - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("#kind").returns(kind_page_object) - - verify_field(jon, :kind, special_widget, kind_page_object) - end - - def test_element__as__special_widget__with_locator - special_widget = ::AePageObjects::Element.new_subclass - - kitty = ::AePageObjects::Document.new_subclass do - element :kind, :is => special_widget, :locator => "As If!" - end - - assert kitty.method_defined?(:kind) - assert_sets_equal [:kind], kitty.element_attributes.keys - - document_stub = mock - jon = kitty.new(document_stub) - - kind_page_object = mock - document_stub.expects(:find).with("As If!").returns(kind_page_object) - - verify_field(jon, :kind, special_widget, kind_page_object) - end - end - end -end diff --git a/test/unit/collection_test.rb b/test/unit/collection_test.rb index e1304985..26a1c1a7 100644 --- a/test/unit/collection_test.rb +++ b/test/unit/collection_test.rb @@ -12,7 +12,7 @@ def test_empty parent = mock magazine_stub = mock - parent.expects(:find).with("#18_holder_attributes").returns(magazine_stub) + parent.expects(:find).with("#18_holder").returns(magazine_stub) magazine = clip.new(parent, "18_holder") magazine_stub.stubs(:all).with(:xpath, magazine.row_xpath).returns([]) @@ -39,7 +39,7 @@ def test_non_empty parent = mock magazine_stub = mock - parent.expects(:find).with("#18_holder_attributes").returns(magazine_stub) + parent.expects(:find).with("#18_holder").returns(magazine_stub) magazine = clip.new(parent, "18_holder") bullet1_stub = mock diff --git a/test/unit/attribute_methods/nodes_test.rb b/test/unit/dsl/collection_test.rb similarity index 86% rename from test/unit/attribute_methods/nodes_test.rb rename to test/unit/dsl/collection_test.rb index 6a5ea430..0e1faea4 100644 --- a/test/unit/attribute_methods/nodes_test.rb +++ b/test/unit/dsl/collection_test.rb @@ -1,10 +1,10 @@ require 'unit_helper' module AePageObjects - module AttributeMethods - class NodesTest < ActiveSupport::TestCase + module Dsl + class CollectionTest < ActiveSupport::TestCase - def test_collection__no_as__no_contains__block + def test_collection__no_is__no_contains__block kitty = ::AePageObjects::Document.new_subclass do collection :previous_owners do element :owner_name @@ -18,7 +18,7 @@ def test_collection__no_as__no_contains__block jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field_with_intermediary_class(jon, :previous_owners, ::AePageObjects::Collection, previous_owners_page_object) @@ -28,15 +28,15 @@ def test_collection__no_as__no_contains__block first_owner = verify_item_field_with_intermediary_class(previous_owners, 0, ::AePageObjects::Element, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) end - def test_collection__as__no_contains__block + def test_collection__is__no_contains__block previous_owners_class = ::AePageObjects::Collection.new_subclass previous_owners_class.item_class = ::AePageObjects::Element.new_subclass @@ -53,7 +53,7 @@ def test_collection__as__no_contains__block jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field_with_intermediary_class(jon, :previous_owners, previous_owners_class, previous_owners_page_object) @@ -64,15 +64,15 @@ def test_collection__as__no_contains__block first_owner = verify_item_field_with_intermediary_class(previous_owners, 0, previous_owners_class.item_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) end - def test_collection__as__no_contains__no_block + def test_collection__is__no_contains__no_block previous_owner_class = ::AePageObjects::Element.new_subclass do element :owner_name element :kitty_name_during_ownership @@ -91,7 +91,7 @@ def test_collection__as__no_contains__no_block jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field(jon, :previous_owners, previous_owners_class, previous_owners_page_object) @@ -101,15 +101,15 @@ def test_collection__as__no_contains__no_block first_owner = verify_item_field(previous_owners, 0, previous_owner_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) end - def test_collection__as__contains__no_block__same_item_class + def test_collection__is__contains__no_block__same_item_class previous_owner_class = ::AePageObjects::Element.new_subclass do element :owner_name element :kitty_name_during_ownership @@ -128,7 +128,7 @@ def test_collection__as__contains__no_block__same_item_class jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field(jon, :previous_owners, previous_owners_class, previous_owners_page_object) @@ -138,15 +138,15 @@ def test_collection__as__contains__no_block__same_item_class first_owner = verify_item_field(previous_owners, 0, previous_owner_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) end - def test_collection__as__contains__no_block__different_item_class + def test_collection__is__contains__no_block__different_item_class previous_owner_class = ::AePageObjects::Element.new_subclass do element :owner_name element :kitty_name_during_ownership @@ -164,7 +164,7 @@ def test_collection__as__contains__no_block__different_item_class jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field_with_intermediary_class(jon, :previous_owners, previous_owners_class, previous_owners_page_object) @@ -174,15 +174,15 @@ def test_collection__as__contains__no_block__different_item_class first_owner = verify_item_field(previous_owners, 0, previous_owner_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) end - def test_collection__no_as__contains__no_block + def test_collection__no_is__contains__no_block previous_owner_class = ::AePageObjects::Element.new_subclass do element :owner_name element :kitty_name_during_ownership @@ -198,7 +198,7 @@ def test_collection__no_as__contains__no_block jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field_with_intermediary_class(jon, :previous_owners, ::AePageObjects::Collection, previous_owners_page_object) @@ -208,15 +208,15 @@ def test_collection__no_as__contains__no_block first_owner = verify_item_field(previous_owners, 0, previous_owner_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) end - def test_collection__no_as__contains__block + def test_collection__no_is__contains__block previous_owner_class = ::AePageObjects::Element.new_subclass do element :owner_name end @@ -233,7 +233,7 @@ def test_collection__no_as__contains__block jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field_with_intermediary_class(jon, :previous_owners, ::AePageObjects::Collection, previous_owners_page_object) @@ -243,18 +243,18 @@ def test_collection__no_as__contains__block first_owner = verify_item_field_with_intermediary_class(previous_owners, 0, previous_owner_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) rescue => e puts e.backtrace.join("\n") raise e end - def test_collection__as__contains__block + def test_collection__is__contains__block previous_owner_class = ::AePageObjects::Element.new_subclass do element :owner_name end @@ -276,7 +276,7 @@ def test_collection__as__contains__block jon = kitty.new(document_stub) previous_owners_page_object = mock - document_stub.expects(:find).with("#previous_owners_attributes").returns(previous_owners_page_object) + document_stub.expects(:find).with("#previous_owners").returns(previous_owners_page_object) previous_owners = verify_field_with_intermediary_class(jon, :previous_owners, previous_owners_class, previous_owners_page_object) @@ -286,18 +286,18 @@ def test_collection__as__contains__block first_owner = verify_item_field_with_intermediary_class(previous_owners, 0, previous_owner_class, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_kitty_name_during_ownership").returns(kitty_name_during_ownership_page_object) verify_field(first_owner, :kitty_name_during_ownership, ::AePageObjects::Element, kitty_name_during_ownership_page_object) rescue => e puts e.backtrace.join("\n") raise e end - def test_collection__no_as__no_contains__no_block + def test_collection__no_is__no_contains__no_block assert_raises ArgumentError do kitty = ::AePageObjects::Document.new_subclass do collection :previous_owners @@ -330,7 +330,7 @@ def test_collection__locator first_owner = verify_item_field_with_intermediary_class(previous_owners, 0, ::AePageObjects::Element, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock @@ -364,7 +364,7 @@ def test_nested_element__locator__proc first_owner = verify_item_field_with_intermediary_class(previous_owners, 0, ::AePageObjects::Element, first_owner_page_object) owner_name_page_object = mock - first_owner_page_object.expects(:find).with("#previous_owners_attributes_0_owner_name").returns(owner_name_page_object) + first_owner_page_object.expects(:find).with("#previous_owners_0_owner_name").returns(owner_name_page_object) verify_field(first_owner, :owner_name, ::AePageObjects::Element, owner_name_page_object) kitty_name_during_ownership_page_object = mock diff --git a/test/unit/dsl/element_test.rb b/test/unit/dsl/element_test.rb new file mode 100644 index 00000000..39ba1f81 --- /dev/null +++ b/test/unit/dsl/element_test.rb @@ -0,0 +1,401 @@ +require 'unit_helper' + +module AePageObjects + module Dsl + class NodeTest < ActiveSupport::TestCase + def test_element__basic + kitty = ::AePageObjects::Document.new_subclass do + element :kind + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("#kind").returns(kind_page_object) + verify_field(jon, :kind, ::AePageObjects::Element, kind_page_object) + rescue => e + puts e.backtrace.join("\n") + raise e + end + + def test_element__accessor_yields_to_block + kitty = ::AePageObjects::Document.new_subclass do + element :kind + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("#kind").returns(kind_page_object) + + kind_in_block = nil + kind = jon.kind do |kind| + kind_in_block = kind + "hello" + end + + assert_false kind_in_block.is_a?(AePageObjects::ElementProxy) + assert kind_in_block.is_a?(AePageObjects::Element) + + assert kind.is_a?(AePageObjects::ElementProxy) + assert kind.is_a?(AePageObjects::Element) + + assert_equal kind, kind_in_block + rescue => e + puts e.backtrace.join("\n") + raise e + end + + def test_element__locator + kitty = ::AePageObjects::Document.new_subclass do + element :kind, :locator => "Kind Homie" + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("Kind Homie").returns(kind_page_object) + verify_field(jon, :kind, ::AePageObjects::Element, kind_page_object) + end + + def test_element__locator__proc + kitty = ::AePageObjects::Document.new_subclass do + element :kind, :locator => Proc.new { parent.page_local_context } + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + jon.expects(:page_local_context).returns("hello") + + kind_page_object = mock + document_stub.expects(:find).with("hello").returns(kind_page_object) + verify_field(jon, :kind, ::AePageObjects::Element, kind_page_object) + end + + def test_element__is__select + kitty = ::AePageObjects::Document.new_subclass do + element :kind, :is => ::AePageObjects::Select + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("#kind").returns(kind_page_object) + verify_field(jon, :kind, ::AePageObjects::Select, kind_page_object) + end + + def test_element__is__checkbox + kitty = ::AePageObjects::Document.new_subclass do + element :kind, :is => ::AePageObjects::Checkbox + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("#kind").returns(kind_page_object) + verify_field(jon, :kind, ::AePageObjects::Checkbox, kind_page_object) + end + + def test_element__is__special_widget + special_widget = ::AePageObjects::Element.new_subclass + + kitty = ::AePageObjects::Document.new_subclass do + element :kind, :is => special_widget + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("#kind").returns(kind_page_object) + + verify_field(jon, :kind, special_widget, kind_page_object) + end + + def test_element__is__special_widget__with_locator + special_widget = ::AePageObjects::Element.new_subclass + + kitty = ::AePageObjects::Document.new_subclass do + element :kind, :is => special_widget, :locator => "As If!" + end + + assert kitty.method_defined?(:kind) + assert_sets_equal [:kind], kitty.element_attributes.keys + + document_stub = mock + jon = kitty.new(document_stub) + + kind_page_object = mock + document_stub.expects(:find).with("As If!").returns(kind_page_object) + + verify_field(jon, :kind, special_widget, kind_page_object) + end + + def test_nested_element__block + kitty = ::AePageObjects::Document.new_subclass do + element :tail, :name => "tail_attributes" do + element :color + element :size, :name => "size_attributes" do + element :length + element :width + + def grow! + "Growing!" + end + end + end + end + + verify_kitty_structure(kitty) + + document_stub = mock + jon = kitty.new(document_stub) + + tail_page_object = mock + document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) + + tail = verify_field_with_intermediary_class(jon, :tail, ::AePageObjects::Element, tail_page_object) + + color_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) + verify_field(tail, :color, ::AePageObjects::Element, color_page_object) + + size_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) + size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::Element, size_page_object) + + assert_equal "Growing!", size.grow! + + length_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) + verify_field(size, :length, ::AePageObjects::Element, length_page_object) + + width_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_width").returns(width_page_object) + verify_field(size, :width, ::AePageObjects::Element, width_page_object) + rescue => e + puts e.backtrace.join("\n") + raise e + end + + def test_nested_element__is + tail_class = ::AePageObjects::Element.new_subclass do + element :color + element :size, :name => "size_attributes" do + element :length + element :width + + def grow! + "Growing!" + end + end + end + + kitty = ::AePageObjects::Document.new_subclass do + element :tail, :is => tail_class, :name => 'tail_attributes' + end + + verify_kitty_structure(kitty) + + document_stub = mock + jon = kitty.new(document_stub) + + tail_page_object = mock + document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) + + tail = verify_field(jon, :tail, tail_class, tail_page_object) + + color_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) + verify_field(tail, :color, ::AePageObjects::Element, color_page_object) + + size_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) + size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::Element, size_page_object) + + assert_equal "Growing!", size.grow! + + length_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) + verify_field(size, :length, ::AePageObjects::Element, length_page_object) + + width_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_width", anything).returns(width_page_object) + verify_field(size, :width, ::AePageObjects::Element, width_page_object) + end + + def test_nested_element__is__block + tail_base_class = ::AePageObjects::Element.new_subclass + + kitty = ::AePageObjects::Document.new_subclass do + element :tail, :name => "tail_attributes", :is => tail_base_class do + element :color + element :size, :name => "size_attributes" do + element :length + element :width + + def grow! + "Growing!" + end + end + end + end + + verify_kitty_structure(kitty) + + document_stub = mock + jon = kitty.new(document_stub) + + tail_page_object = mock + document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) + + tail = verify_field_with_intermediary_class(jon, :tail, tail_base_class, tail_page_object) + + color_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) + verify_field(tail, :color, ::AePageObjects::Element, color_page_object) + + size_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) + size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::Element, size_page_object) + + assert_equal "Growing!", size.grow! + + length_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) + verify_field(size, :length, ::AePageObjects::Element, length_page_object) + + width_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_width").returns(width_page_object) + verify_field(size, :width, ::AePageObjects::Element, width_page_object) + end + + def test_nested_element__locator + kitty = ::AePageObjects::Document.new_subclass do + element :tail, :locator => "what ever you want, baby", :name => 'tail_attributes' do + element :color + element :size, :locator => "Size", :name => 'size_attributes' do + element :length + element :width, :locator => "Fatness" + + def grow! + "Growing!" + end + end + end + end + + verify_kitty_structure(kitty) + + document_stub = mock + jon = kitty.new(document_stub) + + tail_page_object = mock + document_stub.expects(:find).with("what ever you want, baby").returns(tail_page_object) + + tail = verify_field_with_intermediary_class(jon, :tail, ::AePageObjects::Element, tail_page_object) + + color_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) + verify_field(tail, :color, ::AePageObjects::Element, color_page_object) + + size_page_object = mock + tail_page_object.expects(:find).with("Size").returns(size_page_object) + size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::Element, size_page_object) + + assert_equal "Growing!", size.grow! + + length_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) + verify_field(size, :length, ::AePageObjects::Element, length_page_object) + + width_page_object = mock + size_page_object.expects(:find).with("Fatness").returns(width_page_object) + verify_field(size, :width, ::AePageObjects::Element, width_page_object) + end + + def test_nested_element__locator__proc + kitty = ::AePageObjects::Document.new_subclass do + element :tail, :name => 'tail_attributes' do + element :color + element :size, :name => 'size_attributes' do + element :length + element :width, :locator => Proc.new { parent.page_local_context } + + def grow! + "Growing!" + end + end + end + end + + verify_kitty_structure(kitty) + + document_stub = mock + jon = kitty.new(document_stub) + + tail_page_object = mock + document_stub.expects(:find).with("#tail_attributes").returns(tail_page_object) + + tail = verify_field_with_intermediary_class(jon, :tail, ::AePageObjects::Element, tail_page_object) + + color_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_color").returns(color_page_object) + verify_field(tail, :color, ::AePageObjects::Element, color_page_object) + + size_page_object = mock + tail_page_object.expects(:find).with("#tail_attributes_size_attributes").returns(size_page_object) + size = verify_field_with_intermediary_class(tail, :size, ::AePageObjects::Element, size_page_object) + + assert_equal "Growing!", size.grow! + + length_page_object = mock + size_page_object.expects(:find).with("#tail_attributes_size_attributes_length").returns(length_page_object) + verify_field(size, :length, ::AePageObjects::Element, length_page_object) + + size.expects(:page_local_context).returns("hello") + + width_page_object = mock + size_page_object.expects(:find).with("hello").returns(width_page_object) + verify_field(size, :width, ::AePageObjects::Element, width_page_object) + end + + private + + def verify_kitty_structure(kitty_class) + assert_sets_equal [:tail], kitty_class.element_attributes.keys + assert_sets_equal [:color, :size], kitty_class.element_attributes[:tail].element_attributes.keys + + size_class = kitty_class.element_attributes[:tail].element_attributes[:size] + assert_sets_equal [:length, :width], size_class.element_attributes.keys + assert_include size_class.instance_methods(false), "grow!" + end + end + end +end diff --git a/test/unit/form_dsl_test.rb b/test/unit/form_dsl_test.rb index c7bdb402..34cba2a7 100644 --- a/test/unit/form_dsl_test.rb +++ b/test/unit/form_dsl_test.rb @@ -28,61 +28,61 @@ def test_form verify_top_level_form_field(jon, :age, document_stub) verify_top_level_form_field(jon, :owner, document_stub) do |field_xpath, field_page_object| - document_stub.stubs(:find).with("#kitty_owner_attributes", anything).returns(field_page_object) + document_stub.stubs(:find).with("#kitty_owner", anything).returns(field_page_object) end - + verify_top_level_form_field(jon, :past_lives, document_stub) do |field_xpath, field_page_object| - document_stub.stubs(:find).with("#kitty_past_lives_attributes", anything).returns(field_page_object) + document_stub.stubs(:find).with("#kitty_past_lives", anything).returns(field_page_object) end end - + def test_form__using kitty_class = ::AePageObjects::Document.new_subclass do form_for "kitty", :name => "the_kat" do element :name element :age - + element :owner do element :name end - + collection :past_lives do element :died_at end end end - + verify_kitty_structure(kitty_class) - + document_stub = mock jon = kitty_class.new(document_stub) - + verify_top_level_form_field(jon, :name, document_stub) do |field_xpath, field_page_object| document_stub.stubs(:find).with("#the_kat_name").returns(field_page_object) end - + verify_top_level_form_field(jon, :age, document_stub) do |field_xpath, field_page_object| document_stub.stubs(:find).with("#the_kat_age").returns(field_page_object) end - + verify_top_level_form_field(jon, :owner, document_stub) do |field_xpath, field_page_object| - document_stub.stubs(:find).with("#the_kat_owner_attributes", anything).returns(field_page_object) + document_stub.stubs(:find).with("#the_kat_owner", anything).returns(field_page_object) end - + verify_top_level_form_field(jon, :past_lives, document_stub) do |field_xpath, field_page_object| - document_stub.stubs(:find).with("#the_kat_past_lives_attributes", anything).returns(field_page_object) + document_stub.stubs(:find).with("#the_kat_past_lives", anything).returns(field_page_object) end rescue => e puts e.backtrace.join("\n") raise e - end - + end + def test_form__using__locator kitty_class = ::AePageObjects::Document.new_subclass do form_for "kitty", :locator => [:css, "#my_kitty_box"], :name => "the_kat" do element :name element :age - + element :owner do element :name end @@ -92,32 +92,32 @@ def test_form__using__locator end end end - + verify_kitty_structure(kitty_class) - + document_stub = mock jon = kitty_class.new(document_stub) - + kitty_box_page_stub = mock - + document_stub.expects(:find).with(:css, '#my_kitty_box').returns(kitty_box_page_stub).times(2) verify_top_level_form_field(jon, :name, kitty_box_page_stub) do |field_xpath, field_page_object, times| kitty_box_page_stub.stubs(:find).with("#the_kat_name").returns(field_page_object) end - + document_stub.expects(:find).with(:css, '#my_kitty_box').returns(kitty_box_page_stub).times(2) verify_top_level_form_field(jon, :age, kitty_box_page_stub) do |field_xpath, field_page_object| kitty_box_page_stub.stubs(:find).with("#the_kat_age").returns(field_page_object) end - + document_stub.expects(:find).with(:css, '#my_kitty_box').returns(kitty_box_page_stub).times(2) verify_top_level_form_field(jon, :owner, kitty_box_page_stub) do |field_xpath, field_page_object| - kitty_box_page_stub.stubs(:find).with("#the_kat_owner_attributes", anything).returns(field_page_object) + kitty_box_page_stub.stubs(:find).with("#the_kat_owner", anything).returns(field_page_object) end - + document_stub.expects(:find).with(:css, '#my_kitty_box').returns(kitty_box_page_stub).times(2) verify_top_level_form_field(jon, :past_lives, kitty_box_page_stub) do |field_xpath, field_page_object| - kitty_box_page_stub.stubs(:find).with("#the_kat_past_lives_attributes", anything).returns(field_page_object) + kitty_box_page_stub.stubs(:find).with("#the_kat_past_lives", anything).returns(field_page_object) end rescue => e puts e.backtrace.join("\n") @@ -125,12 +125,12 @@ def test_form__using__locator end private - + def verify_top_level_form_field(kitty, field_method, document_stub, &prepare_for_field_reference) prepare_for_field_reference ||= Proc.new do |field_xpath, field_page_object| document_stub.stubs(:find).with("#kitty_#{field_method}").returns(field_page_object) end - + form = verify_field(kitty, :kitty, kitty.class.element_attributes[:kitty], document_stub) field_xpath = "kitty_#{field_method}_xpath" @@ -146,10 +146,10 @@ def verify_top_level_form_field(kitty, field_method, document_stub, &prepare_for def verify_kitty_structure(kitty_class) assert_sets_equal [:kitty, :name, :age, :owner, :past_lives], kitty_class.element_attributes.keys assert_sets_equal [:name, :age, :owner, :past_lives], kitty_class.element_attributes[:kitty].element_attributes.keys - + owner_class = kitty_class.element_attributes[:kitty].element_attributes[:owner] assert_sets_equal [:name], owner_class.element_attributes.keys - + past_lives_item_class = kitty_class.element_attributes[:kitty].element_attributes[:past_lives].item_class assert_sets_equal [:died_at], past_lives_item_class.element_attributes.keys