0be52bf32f
This will be default in Ruby 3, so will be good to apply in QA ahead of time to be consistent.
72 lines
2.1 KiB
Ruby
72 lines
2.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe QA::Page::View do
|
|
let(:element) do
|
|
double('element', name: :something, pattern: /some element/)
|
|
end
|
|
|
|
subject { described_class.new('some/file.html', [element]) }
|
|
|
|
describe '.evaluate' do
|
|
it 'evaluates a block and returns a DSL object' do
|
|
results = described_class.evaluate do
|
|
element :something
|
|
element :something_else
|
|
end
|
|
|
|
expect(results.elements.size).to eq 2
|
|
end
|
|
end
|
|
|
|
describe '#pathname' do
|
|
it 'returns an absolute and clean path to the view' do
|
|
expect(subject.pathname.to_s).not_to include 'qa/page/'
|
|
expect(subject.pathname.to_s).to include 'some/file.html'
|
|
end
|
|
end
|
|
|
|
describe '#errors' do
|
|
context 'when view partial is present' do
|
|
before do
|
|
allow(subject.pathname).to receive(:readable?)
|
|
.and_return(true)
|
|
end
|
|
|
|
context 'when pattern is found' do
|
|
before do
|
|
allow(::File).to receive(:foreach)
|
|
.and_yield('some element').once
|
|
allow(element).to receive(:matches?)
|
|
.with('some element').and_return(true)
|
|
end
|
|
|
|
it 'walks through the view and asserts on elements existence' do
|
|
expect(subject.errors).to be_empty
|
|
end
|
|
end
|
|
|
|
context 'when pattern has not been found' do
|
|
before do
|
|
allow(::File).to receive(:foreach)
|
|
.and_yield('some element').once
|
|
allow(element).to receive(:matches?)
|
|
.with('some element').and_return(false)
|
|
end
|
|
|
|
it 'returns an array of errors related to missing elements' do
|
|
expect(subject.errors).not_to be_empty
|
|
expect(subject.errors.first)
|
|
.to match %r(Missing element `.*` in `.*/some/file.html` view)
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'when view partial has not been found' do
|
|
it 'returns an error when it is not able to find the partial' do
|
|
expect(subject.errors).to be_one
|
|
expect(subject.errors.first)
|
|
.to match %r(Missing view partial `.*/some/file.html`!)
|
|
end
|
|
end
|
|
end
|
|
end
|