forgot to add this file in the previous commit
did
committed Oct 30, 2016
commit c73494545945138681eaaae1e74e6daacdc2ecc7
Showing 1
changed file with
53 additions
and 0 deletions
spec/unit/middlewares/entry_submission_spec.rb
+53
-0
| @@ | @@ -0,0 +1,53 @@ |
| + | require 'spec_helper' |
| + | |
| + | require_relative '../../../lib/locomotive/steam/middlewares/thread_safe' |
| + | require_relative '../../../lib/locomotive/steam/middlewares/helpers' |
| + | require_relative '../../../lib/locomotive/steam/middlewares/entry_submission' |
| + | |
| + | describe Locomotive::Steam::Middlewares::EntrySubmission do |
| + | |
| + | let(:app) { ->(env) { [200, env, ['app']] } } |
| + | let(:site) { instance_double('Site', default_locale: 'en', locales: ['en']) } |
| + | let(:middleware) { described_class.new(app) } |
| + | let(:service) { instance_double('EntrySubmission') } |
| + | let(:services) { instance_double('Services', entry_submission: service, :locale= => 'en') } |
| + | let(:session) { {} } |
| + | let(:method) { 'POST' } |
| + | |
| + | before do |
| + | allow_any_instance_of(described_class).to receive(:csrf_field).and_return('csrf_field') |
| + | end |
| + | |
| + | describe '#call' do |
| + | |
| + | let(:rack_env) { build_env } |
| + | |
| + | before do |
| + | expect(service).to receive(:submit).with('contacts', { email: 'john@doe.net' }).and_return(entry) |
| + | end |
| + | |
| + | subject { middleware.call(rack_env) } |
| + | |
| + | context 'the creation of a content entry returns nil' do |
| + | |
| + | let(:form) { { content_type_slug: 'contacts', content: { email: 'john@doe.net' } } } |
| + | let(:entry) { nil } |
| + | |
| + | it 'raises an exception' do |
| + | expect { subject }.to raise_exception('Unknown content type "contacts" or public_submission_enabled property not true') |
| + | end |
| + | |
| + | end |
| + | |
| + | end |
| + | |
| + | def build_env |
| + | env_for('http://example.com/contact-us', params: form, method: method).tap do |env| |
| + | env['steam.request'] = Rack::Request.new(env) |
| + | env['steam.site'] = site |
| + | env['steam.services'] = services |
| + | env['rack.session'] = session |
| + | end |
| + | end |
| + | |
| + | end |