Sha256: 2964e0ab17aa38fc6ee4dfeb61f01862fa993c708ecf1b161e7033855bc4efa3

Contents?: true

Size: 1.83 KB

Versions: 7

Compression:

Stored size: 1.83 KB

Contents

require 'spec_helper'

describe 'Song' do
  let(:song_ref_one_name) { generate_uuid }
  let(:song_ref_one) { SongRef.create(uuid: generate_uuid, name: song_ref_one_name) }
  
  let(:show) { Show.create(uuid: generate_uuid) }
  let(:set_one_uuid) { generate_uuid }
  let(:set_one) do
    ShowSet.create(uuid: set_one_uuid) do |s|
      s.show = show
      s.position = 0
      s.encore = false
    end         
  end
  let(:song_one_uuid) { generate_uuid }  
  let(:song_spec) { {uuid: song_one_uuid, position: 0, segued: true, show_set_uuid: set_one.uuid, name: song_ref_one.name} }
  let(:song) { Song.create_from(song_spec) }
  
  context '#create_from' do        
    context 'song_ref' do
      subject { song_ref_one }
      its(:songs) { should include song }
    end
    
    context 'occurences' do
      before(:each) { song }
      subject { song_ref_one.song_occurences.find_by_show_uuid(show.uuid) }
      its(:song_ref) { should == song_ref_one }      
    end    
  end

  context '#remove_from' do
    before(:each) do
      song
      Song.remove_from(song_spec)
    end    

    context 'song_ref' do
      subject { song_ref_one }
      its(:songs) { should == []}
    end

    context 'occurences' do
      subject { song_ref_one.song_occurences.find_by_show_uuid(show.uuid) }
      it { should == nil }
    end
  end

  context '#update_from' do
    let(:new_set_uuid) { generate_uuid }
    let(:new_show_set) do
      ShowSet.create(uuid: new_set_uuid) do |s|
        s.show = show
        s.position = 1
        s.encore = true
      end 
    end

    subject do
      Song.create_from(song_spec)      
      song_spec[:show_set_uuid] = new_show_set[:uuid]
      song_spec[:segued] = false
      Song.update_from(song_spec)
    end

    it { should_not == nil }
    its(:show_set) { should == new_show_set }
    its(:segued) { should == false }
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gdshowsdb-2.0.0 spec/gdshowsdb/models/song_spec.rb
gdshowsdb-1.0.3 spec/gdshowsdb/models/song_spec.rb
gdshowsdb-1.0.2 spec/gdshowsdb/models/song_spec.rb
gdshowsdb-1.0.1 spec/gdshowsdb/models/song_spec.rb
gdshowsdb-1.0.0 spec/gdshowsdb/models/song_spec.rb
gdshowsdb-0.9.1 spec/gdshowsdb/models/song_spec.rb
gdshowsdb-0.9.0 spec/gdshowsdb/models/song_spec.rb