spec/unit/lib/utils/page_validator_spec.rb in howitzer-1.0.2 vs spec/unit/lib/utils/page_validator_spec.rb in howitzer-1.1.0

- old
+ new

@@ -1,242 +1,242 @@ require 'spec_helper' -require "howitzer/utils/page_validator" -require "howitzer/utils/locator_store" +require 'howitzer/utils/page_validator' +require 'howitzer/utils/locator_store' -describe Howitzer::Utils::PageValidator do - describe ".validations" do +RSpec.describe Howitzer::Utils::PageValidator do + describe '.validations' do it { expect(subject.validations).to eql({}) } end end -describe "PageValidator" do +RSpec.describe 'PageValidator' do let(:web_page_class) do Class.new do include LocatorStore include Howitzer::Utils::PageValidator def self.name 'TestWebPageClass' end end end let(:web_page) { web_page_class.new } - describe "#check_validations_are_defined!" do + describe '#check_validations_are_defined!' do subject { web_page.check_validations_are_defined! } - context "when no validation specified" do + context 'when no validation specified' do it do expect(log).to receive(:error).with(Howitzer::NoValidationError, "No any page validation was found for 'TestWebPageClass' page").once.and_call_original expect { subject }.to raise_error(Howitzer::NoValidationError) end end - context "when old validation style is using" do - before { web_page_class.const_set("URL_PATTERN",/Foo/) } - after { web_page_class.send :remove_const, "URL_PATTERN"} + context 'when old validation style is using' do + before { web_page_class.const_set('URL_PATTERN',/Foo/) } + after { web_page_class.send :remove_const, 'URL_PATTERN' } it do - expect(web_page_class).to receive(:validates).with(:url, pattern: /Foo/).and_return{ Howitzer::Utils::PageValidator.validations['TestWebPageClass'] = {}} + expect(web_page_class).to receive(:validates).with(:url, pattern: /Foo/){ Howitzer::Utils::PageValidator.validations['TestWebPageClass'] = {}} expect{subject}.to_not raise_error end end - context "when title validation is specified" do + context 'when title validation is specified' do before do web_page.class.validates :title, pattern: /Foo/ end it { expect{subject}.to_not raise_error } end - context "when url validation is specified" do + context 'when url validation is specified' do before do web_page.class.validates :url, pattern: /Foo/ end it { expect{subject}.to_not raise_error } end - context "when element_presence validation is specified" do + context 'when element_presence validation is specified' do before do web_page.class.validates :element_presence, locator: :test_locator end it { expect{subject}.to_not raise_error } end end - describe ".validates" do + describe '.validates' do before do Howitzer::Utils::PageValidator.validations[web_page.class.name] = nil end subject { web_page.class.validates(name, options) } - context "when name = :url" do - context "as string" do - let(:name) { "url" } - context "when options is correct" do - context "(as string)" do - let(:options) { {"pattern" => /foo/} } + context 'when name = :url' do + context 'as string' do + let(:name) { 'url' } + context 'when options is correct' do + context '(as string)' do + let(:options) { {'pattern' => /foo/} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:url]).to be_a Proc end end - context "(as symbol)" do + context '(as symbol)' do let(:options) { {pattern: /foo/} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:url]).to be_a Proc end end end - context "when options is incorrect" do - context "(missing pattern)" do + context 'when options is incorrect' do + context '(missing pattern)' do let(:options) { {} } it do expect(log).to receive(:error).with(Howitzer::WrongOptionError, "Please specify ':pattern' option as Regexp object").once.and_call_original expect { subject }.to raise_error(Howitzer::WrongOptionError) end end - context "(string pattern)" do - let(:options) { {pattern: "foo"} } + context '(string pattern)' do + let(:options) { {pattern: 'foo'} } it do expect(log).to receive(:error).with(Howitzer::WrongOptionError, "Please specify ':pattern' option as Regexp object").once.and_call_original expect { subject }.to raise_error(Howitzer::WrongOptionError) end end - context "(not hash)" do - let(:options) { "foo" } + context '(not hash)' do + let(:options) { 'foo' } it { expect{subject}.to raise_error(TypeError, "Expected options to be Hash, actual is 'String'") } end end end - context "as symbol" do + context 'as symbol' do let(:name) { :url } let(:options) { {pattern: /foo/} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:url]).to be_a Proc end end end - context "when name = :element_presence" do + context 'when name = :element_presence' do let(:name) { :element_presence } - context "when options is correct" do - context "(as string)" do - let(:options) { {"locator" => 'test_locator'} } + context 'when options is correct' do + context '(as string)' do + let(:options) { {'locator' => 'test_locator'} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:element_presence]).to eql(subject) end end - context "(as symbol)" do + context '(as symbol)' do let(:options) { {locator: :test_locator} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:element_presence]).to eql(subject) end end end - context "when options is incorrect" do - context "(missing locator)" do + context 'when options is incorrect' do + context '(missing locator)' do let(:options) { {} } it do expect(log).to receive(:error).with(Howitzer::WrongOptionError, "Please specify ':locator' option as one of page locator names").once.and_call_original expect { subject }.to raise_error(Howitzer::WrongOptionError) end end - context "(blank locator name)" do - let(:options) { {locator: ""} } + context '(blank locator name)' do + let(:options) { {locator: ''} } it do expect(log).to receive(:error).with(Howitzer::WrongOptionError, "Please specify ':locator' option as one of page locator names").once.and_call_original expect { subject }.to raise_error(Howitzer::WrongOptionError) end end end end - context "when name = :title" do + context 'when name = :title' do let(:name) { :title } - context "when options is correct" do - context "(as string)" do - let(:options) { {"pattern" => /foo/} } + context 'when options is correct' do + context '(as string)' do + let(:options) { {'pattern' => /foo/} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:title]).to be_a Proc end end - context "(as symbol)" do + context '(as symbol)' do let(:options) { {pattern: /foo/} } it do - expect(subject).to be_a(Proc) + is_expected.to be_a(Proc) expect(Howitzer::Utils::PageValidator.validations[web_page.class.name][:title]).to be_a Proc end end end - context "when options is incorrect" do - context "(missing pattern)" do + context 'when options is incorrect' do + context '(missing pattern)' do let(:options) { {} } it do expect(log).to receive(:error).with(Howitzer::WrongOptionError, "Please specify ':pattern' option as Regexp object").once.and_call_original expect { subject }.to raise_error(Howitzer::WrongOptionError) end end - context "(string pattern)" do - let(:options) { {pattern: "foo"} } + context '(string pattern)' do + let(:options) { {pattern: 'foo'} } it do expect(log).to receive(:error).with(Howitzer::WrongOptionError, "Please specify ':pattern' option as Regexp object").once.and_call_original expect { subject }.to raise_error(Howitzer::WrongOptionError) end end end end - context "when other name" do + context 'when other name' do let(:name) { :unknown } let(:options) { {} } it do expect(log).to receive(:error).with(Howitzer::UnknownValidationError, "unknown 'unknown' validation name").once.and_call_original expect { subject }.to raise_error(Howitzer::UnknownValidationError) end end end - describe ".pages" do + describe '.pages' do subject { Howitzer::Utils::PageValidator.pages } - it { expect(subject).to eq([]) } + it { is_expected.to eq([]) } it do subject << Class - expect(subject).to eql([Class]) + is_expected.to eql([Class]) end end - describe ".opened?" do + describe '.opened?' do subject { web_page_class.opened? } - context "when no one validation is defined" do + context 'when no one validation is defined' do it do expect(log).to receive(:error).with(Howitzer::NoValidationError, "No any page validation was found for 'TestWebPageClass' page").once.and_call_original expect { subject }.to raise_error(Howitzer::NoValidationError) end end - context "when all validations are defined" do + context 'when all validations are defined' do before do web_page_class.class_eval do - add_locator :login, "#id" + add_locator :login, '#id' validates :url, pattern: /foo/ validates :title, pattern: /Foo page/ validates :element_presence, locator: :login end end - context "when all matches" do + context 'when all matches' do before do allow(web_page_class).to receive(:url){ 'http://test.com/foo' } allow(web_page_class).to receive(:title){ 'Foo page' } allow(web_page_class).to receive(:first_element).with(:login){ true } end - it { expect(subject).to be_true } + it { is_expected.to be_truthy } end - context "when first does not match" do + context 'when first does not match' do before do expect(web_page_class).to receive(:url).once{ 'http://test.com/bar' } expect(web_page_class).to receive(:title).never expect(web_page_class).to receive(:first_element).never end - it { expect(subject).to be_false } + it { is_expected.to be_falsey } end end end - describe "#matched_pages" do + describe '#matched_pages' do let!(:web_page1_class) do Class.new do include Howitzer::Utils::PageValidator def self.name 'TestWebPage1Class' @@ -258,9 +258,8 @@ end end end subject {web_page2_class.matched_pages } before { Howitzer::Utils::PageValidator.instance_variable_set(:@pages, [web_page1_class, web_page2_class]) } - it { expect(subject).to eq([web_page1_class]) } + it { is_expected.to eq([web_page1_class]) } end - -end +end \ No newline at end of file