summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qa/qa/page/view.rb6
-rw-r--r--qa/spec/page/view_spec.rb51
2 files changed, 36 insertions, 21 deletions
diff --git a/qa/qa/page/view.rb b/qa/qa/page/view.rb
index b988b179e8f..fa0ed8be9d9 100644
--- a/qa/qa/page/view.rb
+++ b/qa/qa/page/view.rb
@@ -9,11 +9,15 @@ module QA
end
def pathname
- Pathname.new(File.join( __dir__, '../../../', @path))
+ @pathname ||= Pathname.new(File.join( __dir__, '../../../', @path))
.cleanpath.expand_path
end
def errors
+ unless pathname.readable?
+ return ["Missing view partial `#{pathname}`!"]
+ end
+
##
# Reduce required elements by streaming view and making assertions on
# elements' existence.
diff --git a/qa/spec/page/view_spec.rb b/qa/spec/page/view_spec.rb
index 6a78e32db68..dd38b171ad5 100644
--- a/qa/spec/page/view_spec.rb
+++ b/qa/spec/page/view_spec.rb
@@ -30,36 +30,47 @@ describe QA::Page::View do
allow(File).to receive(:new).and_return(file)
end
- context 'when pattern is found' do
+ context 'when view partial is present' do
before do
- allow(file).to receive(:foreach)
- .and_yield('some element').once
- allow(element).to receive(:matches?)
- .with('some element').and_return(true)
+ allow(subject.pathname).to receive(:readable?)
+ .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 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
- 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)
+ it 'walks through the view and asserts on elements existence' do
+ expect(subject.errors).to be_empty
+ end
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)
+ 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
- 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