module BandFactory def create_band_params(options = {}) opts = { :songs => 1, :name => 'Band name', :city => 'Somewhere', :website => 'http://bandsite.com', :label => 'A Record Label', :bio => 'A short bio about the band', :contact_name => 'Contact Name', :contact_addr => "Streetname 666\n1234Someplace Nice", :contact_phone => '98765432', :contact_email => 'band@example.com', :members => [ { :name => 'Member 1', :instrument => 'Instrument 1', :age => '24' }, { :name => 'Member 2', :instrument => 'Instrument 2', :age => '0' }, { :name => 'Member 3', :instrument => '', :age => '' }, ], }.merge(options) num_songs = opts.delete(:songs) params = { 'name' => opts[:name], 'city' => opts[:city], 'website' => opts[:website], 'label' => opts[:label], 'shortbio' => opts[:bio], 'contact' => { 'name' => opts[:contact_name], 'addr' => opts[:contact_addr], 'phone' => opts[:contact_phone], 'email' => opts[:contact_email] }, 'members' => {}, 'songs' => {} } (1..opts[:members].length).each do |i| params['members'][i.to_s] = {} params['members'][i.to_s]['name'] = opts[:members][i-1][:name] params['members'][i.to_s]['instrument'] = opts[:members][i-1][:instrument] params['members'][i.to_s]['age'] = opts[:members][i-1][:age] end (1..num_songs).each do |i| num = i.to_s params['songs'][num] = create_song_params end params end def create_song_params { 'title' => 'A song title', 'time' => '02:30', 'isrc' => '', 'performers' => "Performer 1\nPerformer 2\nPerformer 3", 'composers' => "Composer 1\nComposer 2", 'notes' => 'Some notes' } end end