From 696be9ff4d6a6f7e3286cba14df4e4f449d31bb6 Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 5 Oct 2015 20:12:42 +0200 Subject: Refactor generation of band params for test into factory. --- spec/registration_spec.rb | 43 +------------------------------- spec/spec_helper.rb | 7 ++++++ spec/support/band_factory.rb | 59 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 42 deletions(-) create mode 100644 spec/support/band_factory.rb diff --git a/spec/registration_spec.rb b/spec/registration_spec.rb index 2911f6a..be4e6f7 100644 --- a/spec/registration_spec.rb +++ b/spec/registration_spec.rb @@ -38,52 +38,11 @@ describe RegistrationApp do context 'with a valid registration' do before :each do - params = { - 'name' => 'Imbalance', - 'city' => 'Oslo', - 'website' => 'http://imbalance.no', - 'label' => 'Calculated Imperfection', - 'shortbio' => 'Thrash metal from Norway', - 'contact' => { - 'name' => 'Harald Eilertsen', - 'addr' => "Gamleveien 13\n1289 Snufstad", - 'phone' => '98765432', - 'email' => 'mail@imbalance.no' - }, - 'members' => { - '1' => { - 'name' => 'Harald Eilertsen', - 'instrument' => 'Bass/Vocals', - 'age' => '' - }, - '2' => { - 'name' => 'Welle', - 'instrument' => 'Drums', - 'age' => '' - }, - '3' => { - 'name' => 'Thormodr', - 'instrument' => 'Guitar', - 'age' => '' - } - }, - 'songs' => { - '1' => { - 'title' => 'Bestial by Nature', - 'time' => '02:80', - 'isrc' => '', - 'performers' => "Harald Eilertsen\nThormod Steinert\nLars Welle", - 'composers' => "Harald Eilertsen\nThormod Steinert", - 'notes' => 'Rævrukkje rum kjurr!' - } - } - } - @doc_spy = spy("Prawn::Document") allow(Prawn::Document).to receive('new') { @doc_spy } allow(@doc_spy).to receive('render_file') - post '/submit', 'band' => params + post '/submit', 'band' => create_band_params end it 'should succeed' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 7947e06..1e7a791 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,8 +1,15 @@ +ENV['RACK_ENV'] = 'test' + require_relative '../registration' +require_relative 'support/band_factory' require 'rspec' require 'rack/test' require 'mail' +RSpec.configure do |config| + config.include BandFactory +end + Mail.defaults do delivery_method :test # in practice you'd do this in spec_helper.rb end diff --git a/spec/support/band_factory.rb b/spec/support/band_factory.rb new file mode 100644 index 0000000..f14caf2 --- /dev/null +++ b/spec/support/band_factory.rb @@ -0,0 +1,59 @@ +module BandFactory + def create_band_params(options = {}) + opts = { + :songs => 1, + }.merge(options) + + num_songs = opts.delete(:songs) + + params = { + 'name' => 'Imbalance', + 'city' => 'Oslo', + 'website' => 'http://imbalance.no', + 'label' => 'Calculated Imperfection', + 'shortbio' => 'Thrash metal from Norway', + 'contact' => { + 'name' => 'Harald Eilertsen', + 'addr' => "Gamleveien 13\n1289 Snufstad", + 'phone' => '98765432', + 'email' => 'mail@imbalance.no' + }, + 'members' => { + '1' => { + 'name' => 'Harald Eilertsen', + 'instrument' => 'Bass/Vocals', + 'age' => '' + }, + '2' => { + 'name' => 'Welle', + 'instrument' => 'Drums', + 'age' => '' + }, + '3' => { + 'name' => 'Thormodr', + 'instrument' => 'Guitar', + 'age' => '' + } + }, + 'songs' => {} + } + + (1..num_songs).each do |i| + num = i.to_s + params['songs'][num] = create_song_params + end + + params + end + + def create_song_params + { + 'title' => 'Bestial by Nature', + 'time' => '02:80', + 'isrc' => '', + 'performers' => "Harald Eilertsen\nThormod Steinert\nLars Welle", + 'composers' => "Harald Eilertsen\nThormod Steinert", + 'notes' => 'Rævrukkje rum kjurr!' + } + end +end -- cgit v1.2.3