debian-mirror-gitlab/qa/spec/page/view_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

73 lines
2.1 KiB
Ruby
Raw Normal View History

2019-07-31 22:56:46 +05:30
# frozen_string_literal: true
2021-01-03 14:25:43 +05:30
RSpec.describe QA::Page::View do
2018-03-17 18:26:18 +05:30
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
2018-12-13 13:39:08 +05:30
element :something
element :something_else
2018-03-17 18:26:18 +05:30
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
2018-11-18 11:00:15 +05:30
allow(::File).to receive(:foreach)
2018-03-17 18:26:18 +05:30
.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
2018-11-18 11:00:15 +05:30
allow(::File).to receive(:foreach)
2018-03-17 18:26:18 +05:30
.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