in a liquid template, content_entry.errors returns false if no errors (issue #68)

did committed Jul 09, 2016
commit 255da378802a4c68de9bceb5131f436e1a772285
Showing 5 changed files with 35 additions and 4 deletions
locomotive/steam/liquid/drops/content_entry.rb b/lib/locomotive/steam/liquid/drops/content_entry.rb +5 -1
@@ @@ -43,7 +43,11 @@ module Locomotive
end
def errors
- @_source.errors.messages.to_hash.stringify_keys
+ if @_source.errors.blank?
+ false
+ else
+ @_source.errors.messages.to_hash.stringify_keys
+ end
end
def before_method(meth)
spec/fixtures/default/app/views/pages/contact.liquid.haml +6 -1
@@ @@ -13,6 +13,11 @@ position: 4
Ut imperdiet velit eu metus semper tristique. Vivamus risus nisi, tincidunt et euismod a, auctor pretium eros. Vestibulum sed magna et velit pulvinar euismod. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean sed velit quis nisl blandit vulputate id non tortor. Mauris nec placerat massa. Vivamus sed odio non ligula pharetra pretium. Ut convallis, purus et lobortis suscipit, mauris orci ullamcorper lectus, nec vulputate turpis mauris sed augue. Maecenas faucibus ultricies nisl, non ullamcorper justo bibendum nec. Duis vitae mauris condimentum risus commodo mattis vel sed libero. Fusce diam elit, porta id vestibulum ut, aliquet mattis neque.
{% endeditable_long_text %}
+ {% if message.errors %}
+ .text
+ %p Form with errors
+ {% endif %}
+
%form#contactform{ :name => 'contact', :action => '{{ contents.messages.public_submission_url }}.json', :method => 'post' }
/ %input{ type: 'hidden', name: 'success_callback', value: '/events' }
/ %input{ type: 'hidden', name: 'error_callback', value: '/contact' }
@@ @@ -51,4 +56,4 @@ position: 4
});
});
- {% endblock %}
\ No newline at end of file
+ {% endblock %}
spec/fixtures/default/app/views/pages/events.liquid.haml +6 -0
@@ @@ -5,6 +5,12 @@ position: 5
{% block content %}
+ {% if message.errors %}
+ .text
+ %p Form with errors
+ {% endif %}
+
+
%p Thank you {{ message.name }} !
#events.unit.size2of3
spec/integration/server/contact_form_spec.rb +8 -0
@@ @@ -78,6 +78,10 @@ describe 'ContactForm' do
expect(response.status).to eq 200
end
+ it 'displays a global error message' do
+ expect(response.body.to_s).to include "Form with errors"
+ end
+
it 'displays errors' do
expect(response.body.to_s).to include "can't be blank"
end
@@ @@ -104,6 +108,10 @@ describe 'ContactForm' do
expect(response.status).to eq 200
end
+ it "doesn't display a global error message" do
+ expect(response.body.to_s).not_to include "Form with errors"
+ end
+
it 'displays a success message' do
expect(response.body.to_s).to include 'Thank you John'
end
spec/unit/liquid/drops/content_entry_spec.rb +10 -2
@@ @@ -70,14 +70,22 @@ describe Locomotive::Steam::Liquid::Drops::ContentEntry do
describe '#errors' do
- let(:errors) { instance_double('Errors', messages: { title: ['not_blank'] }) }
+ let(:errors) { instance_double('Errors', messages: { title: ['not_blank'] }, blank?: false) }
before do
- expect(entry).to receive(:errors).and_return(errors)
+ allow(entry).to receive(:errors).and_return(errors)
end
it { expect(subject.errors).to eq('title' => ['not_blank']) }
+ context 'no errors' do
+
+ let(:errors) { instance_double('Errors', blank?: true) }
+
+ it { expect(subject.errors).to eq(false) }
+
+ end
+
end
describe 'i18n' do