Append page validation error if view partial is missing

This commit is contained in:
Grzegorz Bizon 2017-12-22 16:09:00 +01:00
parent d69e4541a4
commit d2c2f93fe6
2 changed files with 36 additions and 21 deletions

View File

@ -9,11 +9,15 @@ module QA
end end
def pathname def pathname
Pathname.new(File.join( __dir__, '../../../', @path)) @pathname ||= Pathname.new(File.join( __dir__, '../../../', @path))
.cleanpath.expand_path .cleanpath.expand_path
end end
def errors def errors
unless pathname.readable?
return ["Missing view partial `#{pathname}`!"]
end
## ##
# Reduce required elements by streaming view and making assertions on # Reduce required elements by streaming view and making assertions on
# elements' existence. # elements' existence.

View File

@ -30,36 +30,47 @@ describe QA::Page::View do
allow(File).to receive(:new).and_return(file) allow(File).to receive(:new).and_return(file)
end end
context 'when pattern is found' do context 'when view partial is present' do
before do before do
allow(file).to receive(:foreach) allow(subject.pathname).to receive(:readable?)
.and_yield('some element').once .and_return(true)
allow(element).to receive(:matches?)
.with('some element').and_return(true)
end end
it 'walks through the view and asserts on elements existence' do context 'when pattern is found' do
expect(subject.errors).to be_empty before do
end allow(file).to receive(:foreach)
end .and_yield('some element').once
allow(element).to receive(:matches?)
.with('some element').and_return(true)
end
context 'when pattern has not been found' do it 'walks through the view and asserts on elements existence' do
before do expect(subject.errors).to be_empty
allow(file).to receive(:foreach) end
.and_yield('some element').once
allow(element).to receive(:matches?)
.with('some element').and_return(false)
end end
it 'returns an array of errors related to missing elements' do context 'when pattern has not been found' do
expect(subject.errors).not_to be_empty before do
expect(subject.errors.first) allow(file).to receive(:foreach)
.to match %r(Missing element `.*` in `.*/some/file.html` view) .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
end end
context 'when view partial has not been found' do context 'when view partial has not been found' do
pending 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 end
end end