summaryrefslogtreecommitdiffstats
path: root/spec/registration_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/registration_spec.rb')
-rw-r--r--spec/registration_spec.rb165
1 files changed, 96 insertions, 69 deletions
diff --git a/spec/registration_spec.rb b/spec/registration_spec.rb
index 387a445..4dd57d5 100644
--- a/spec/registration_spec.rb
+++ b/spec/registration_spec.rb
@@ -59,105 +59,132 @@ describe RegistrationApp do
Mail::TestMailer.deliveries.clear
end
- context 'with a valid registration' do
- let(:band_params) { create_band_params }
+ context 'when registration is open' do
before :each do
- post '/submit', 'band' => band_params
+ app.set :accept_registrations, {
+ start: Date.today.iso8601,
+ stop: (Date.today + 1).iso8601
+ }
end
- it 'should succeed' do
- expect(last_response).to be_ok
- end
+ context 'with a valid registration' do
+ let(:band_params) { create_band_params }
+ before :each do
+ post '/submit', 'band' => band_params
+ end
- it 'should not display any errors' do
- expect(last_response.body).not_to include("Det er feil i skjemaet")
- end
+ it 'should succeed' do
+ expect(last_response).to be_ok
+ end
+
+ it 'should not display any errors' do
+ expect(last_response.body).not_to include("Det er feil i skjemaet")
+ end
- it 'displays submitted data to user' do
- expect(last_response).to match(/Bandnavn\: #{band_params['name']}/)
- expect(last_response).to match(/Hjemsted\: #{band_params['city']}/)
- expect(last_response).to match(/Webside\: #{band_params['website']}/)
- expect(last_response).to match(/Plateselskap\: #{band_params['label']}/)
- expect(last_response).to match(/Kort bio\: #{band_params['shortbio']}/)
+ it 'displays submitted data to user' do
+ expect(last_response).to match(/Bandnavn\: #{band_params['name']}/)
+ expect(last_response).to match(/Hjemsted\: #{band_params['city']}/)
+ expect(last_response).to match(/Webside\: #{band_params['website']}/)
+ expect(last_response).to match(/Plateselskap\: #{band_params['label']}/)
+ expect(last_response).to match(/Kort bio\: #{band_params['shortbio']}/)
+
+ expect(last_response).to match(/Kontaktperson: #{band_params['contact']['name']}/)
+ expect(last_response).to match(/Kontaktadresse: #{band_params['contact']['addr']}/)
+ expect(last_response).to match(/Telefon: #{band_params['contact']['phone']}/)
+ expect(last_response).to match(/Epost: #{band_params['contact']['email']}/)
+
+ expect(last_response).to match(/#{band_params['members']['1']['name']}, #{band_params['members']['1']['instrument']}/)
+ expect(last_response).to match(/#{band_params['members']['2']['name']}, #{band_params['members']['2']['instrument']}/)
+ expect(last_response).to match(/#{band_params['members']['3']['name']}, #{band_params['members']['3']['instrument']}/)
+
+ expect(last_response).to match(/#{band_params['songs']['1']['title']}/)
+ expect(last_response).to match(/Spilletid: #{band_params['songs']['1']['time']}/)
+ expect(last_response).to match(/Utøvere: #{band_params['songs']['1']['performers'].split("\n").join(", ")}/)
+ expect(last_response).to match(/Låtskrivere: #{band_params['songs']['1']['composers'].split("\n").join(", ")}/)
+ expect(last_response).to match(/Merknad: #{band_params['songs']['1']['notes']}/)
+ end
- expect(last_response).to match(/Kontaktperson: #{band_params['contact']['name']}/)
- expect(last_response).to match(/Kontaktadresse: #{band_params['contact']['addr']}/)
- expect(last_response).to match(/Telefon: #{band_params['contact']['phone']}/)
- expect(last_response).to match(/Epost: #{band_params['contact']['email']}/)
+ it "generates a PDF file" do
+ expect(Prawn::Document).to have_received('new').with({ :page_size => "A4" })
+ expect(@doc_spy).to have_received('render_file').with(/uploads\/[0-9]{4}-[0-9]{2}-[0-9]{2}-#{sanitize(band_params['name'])}-#{sanitize(band_params['city'])}\.pdf/)
+ end
- expect(last_response).to match(/#{band_params['members']['1']['name']}, #{band_params['members']['1']['instrument']}/)
- expect(last_response).to match(/#{band_params['members']['2']['name']}, #{band_params['members']['2']['instrument']}/)
- expect(last_response).to match(/#{band_params['members']['3']['name']}, #{band_params['members']['3']['instrument']}/)
+ describe 'sends an email to Norsk Urskog' do
+ let(:message) { Mail::TestMailer.deliveries.first }
- expect(last_response).to match(/#{band_params['songs']['1']['title']}/)
- expect(last_response).to match(/Spilletid: #{band_params['songs']['1']['time']}/)
- expect(last_response).to match(/Utøvere: #{band_params['songs']['1']['performers'].split("\n").join(", ")}/)
- expect(last_response).to match(/Låtskrivere: #{band_params['songs']['1']['composers'].split("\n").join(", ")}/)
- expect(last_response).to match(/Merknad: #{band_params['songs']['1']['notes']}/)
- end
+ it 'is not empty' do
+ expect(Mail::TestMailer.deliveries).not_to be_empty
+ end
- it "generates a PDF file" do
- expect(Prawn::Document).to have_received('new').with({ :page_size => "A4" })
- expect(@doc_spy).to have_received('render_file').with(/uploads\/[0-9]{4}-[0-9]{2}-[0-9]{2}-#{sanitize(band_params['name'])}-#{sanitize(band_params['city'])}\.pdf/)
+ it 'contains the band info' do
+ expect(message.subject).to match(/Registrering av band #{band_params['name']} til Norsk Urskog/)
+ end
+
+ it 'contains the url to the pdf file' do
+ expect(message.body).to match(/example.org\/uploads\/[0-9]{4}-[0-9]{2}-[0-9]{2}-#{sanitize(band_params['name'])}-#{sanitize(band_params['city'])}\.pdf/)
+ end
+ end
end
- describe 'sends an email to Norsk Urskog' do
- let(:message) { Mail::TestMailer.deliveries.first }
+ shared_examples_for('form with errors') do |args|
+ let(:band_params) { create_band_params(args) }
- it 'sends an email to Norsk Urskog' do
- expect(Mail::TestMailer.deliveries).not_to be_empty
- expect(message.to).to include('haraldei@anduin.net')
- expect(message.subject).to match(/Registrering av band #{band_params['name']} til Norsk Urskog/)
+ before :each do
+ post '/submit', 'band' => band_params
end
- it 'contains the url to the pdf file' do
- expect(message.body).to match(/example.org\/uploads\/[0-9]{4}-[0-9]{2}-[0-9]{2}-#{sanitize(band_params['name'])}-#{sanitize(band_params['city'])}\.pdf/)
+ it 'should go back to the registration form' do
+ expect(last_response.body).to match(/form id="registration-form"/)
end
- end
- end
- shared_examples_for('form with errors') do |args|
- let(:band_params) { create_band_params(args) }
+ it 'should display an error message' do
+ expect(last_response.body).to include("Det er feil i skjemaet")
+ end
+ end
- before :each do
- post '/submit', 'band' => band_params
+ context 'with no songs' do
+ include_examples('form with errors', {:songs => 0})
end
- it 'should go back to the registration form' do
- expect(last_response.body).to match(/form id="registration-form"/)
+ context 'without a band name' do
+ include_examples('form with errors', {:name => ''})
end
- it 'should display an error message' do
- expect(last_response.body).to include("Det er feil i skjemaet")
+ context 'with a band name with only spaces' do
+ include_examples('form with errors', {:name => ' '})
end
- end
- context 'with no songs' do
- include_examples('form with errors', {:songs => 0})
- end
+ context 'with no contact' do
+ include_examples('form with errors', {:contact_name => ''})
+ end
- context 'without a band name' do
- include_examples('form with errors', {:name => ''})
- end
+ context 'with no contact address' do
+ include_examples('form with errors', {:contact_addr => ''})
+ end
- context 'with a band name with only spaces' do
- include_examples('form with errors', {:name => ' '})
- end
+ context 'with no contact phone' do
+ include_examples('form with errors', {:contact_phone => ''})
+ end
- context 'with no contact' do
- include_examples('form with errors', {:contact_name => ''})
+ context 'with no contact email' do
+ include_examples('form with errors', {:contact_email => ''})
+ end
end
- context 'with no contact address' do
- include_examples('form with errors', {:contact_addr => ''})
- end
+ context 'when registration is closed' do
+ let(:band_params) { create_band_params }
+ before :each do
+ app.set :accept_registrations, {
+ start: (Date.today + 1).iso8601,
+ stop: (Date.today + 30).iso8601
+ }
- context 'with no contact phone' do
- include_examples('form with errors', {:contact_phone => ''})
- end
+ post '/submit', 'band' => band_params
+ end
- context 'with no contact email' do
- include_examples('form with errors', {:contact_email => ''})
+ it 'redirects to registration closed message' do
+ expect(last_response.body).to match('Registreringen er stengt')
+ end
end
end
end