Sha256: 8ec1d0a651f5fe1a2129e97bc25763fffc24e9ddf87b4d696e10be6d3f22a32d

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

shared_examples 'RMD::Base::Playlist' do
  describe '#success?' do
    subject { playlist.success? }

    before do
      allow(playlist).to receive(:songs).and_return(songs)
    end

    context 'when songs is nil' do
      let(:songs) { nil }
      it { is_expected.to eq false }
    end

    context 'when songs is blank' do
      let(:songs) { [] }
      it { is_expected.to eq false }
    end

    context 'otherwise' do
      let(:songs) { ['songs'] }
      it { is_expected.to eq true }
    end
  end

  describe '#song_elements' do
    let(:page) { double('Page') }
    let(:song_element) { double('playlistElement') }
    let(:song_elements) { [song_element] }
    subject { playlist.send(:song_elements) }

    before do
      expect(playlist).to receive(:page).and_return(page)
      expect(page).to receive(:search) .with(element_css)
        .and_return(song_elements)
    end

    it { is_expected.to eq song_elements }
  end

  describe '#page' do
    let(:agent) { instance_double('Mechanize') }
    let(:page) { double('Page') }
    subject { playlist.send(:page) }

    before do
      expect(playlist).to receive(:agent).and_return(agent)
      expect(agent).to receive(:get).with(link).and_return(page)
    end

    it { is_expected.to eq page }
  end

  describe '#agent' do
    it 'creates agent' do
      expect(playlist.send(:agent)).to be_a(Mechanize)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rmd-0.1.1 spec/support/playlist_share_examples.rb
rmd-0.1.0 spec/support/playlist_share_examples.rb