diff --git a/lib/page_ez/page.rb b/lib/page_ez/page.rb index 06c9ff9..2b463ef 100644 --- a/lib/page_ez/page.rb +++ b/lib/page_ez/page.rb @@ -26,7 +26,7 @@ def self.has_one(name, *args, **options, &block) case [args.length, args.first] in [2, _] then selector, dynamic_options = args in [1, Class] then composed_class = args.first - in [1, String] then selector = args.first + in [1, String] | [1, Symbol] then selector = args.first.to_s end visitor.process_macro(:has_one, name, selector) diff --git a/spec/features/selectors_spec.rb b/spec/features/selectors_spec.rb new file mode 100644 index 0000000..7f32b12 --- /dev/null +++ b/spec/features/selectors_spec.rb @@ -0,0 +1,38 @@ +require "spec_helper" + +RSpec.describe "Selectors" do + it "allows string selectors" do + page = build_page(<<-HTML) +

Hello

+ HTML + + test_page = Class.new(PageEz::Page) do + has_one :heading, "h1" + end.new(page) + + page.visit "/" + + expect(test_page).to have_heading + end + + it "allows symbol selectors" do + page = build_page(<<-HTML) +

Hello

+ HTML + + test_page = Class.new(PageEz::Page) do + has_one :heading, :h1 + end.new(page) + + page.visit "/" + + expect(test_page).to have_heading + end + + def build_page(markup) + AppGenerator + .new + .route("/", markup) + .run + end +end