Sha256: bedabc7d2c84f7729d5273b1ab3b5d6c38a8b07e3497b726e515df65526c82c1

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
require File.expand_path(File.dirname(__FILE__) + '/../test_app')

set :environment, :test

require 'nokogiri'
require 'fileutils'

describe Rack::MusicIndex do
  def app
    Sinatra::Application
  end

  before do
    @mp3 = fixture('/foo/test2.mp3')
  end

  after do
    if File.exist?(@mp3)
      FileUtils.rm(@mp3)
    end
  end

  it 'should index mp3s as podcast' do
    get '/foo'

    last_response.should be_ok

    xml = Nokogiri::XML(last_response.body)

    channel = xml.xpath('//channel')[0]
    items = xml.xpath('//item')
    item = items[0]

    channel.xpath('title')[0].content.should eql('/foo')
    channel.xpath('description')[0].content.should eql('Generated by Rack::MusicIndex')

    items.size.should eql(1)
    item.xpath('title')[0].content.should eql('test.mp3')
    item.xpath('link')[0].content.should eql('http://example.org/foo/test.mp3')
    item.xpath('guid')[0].content.should eql('http://example.org/foo/test.mp3')
    item.xpath('enclosure')[0]['url'].should eql('http://example.org/foo/test.mp3')
  end

  it 'should reflect file changes without restart' do
    get '/foo'

    xml = Nokogiri::XML(last_response.body)
    xml.xpath('//item').size.should eql(1)

    open(@mp3, 'w') do |f|
      f.write('xxx')
    end

    get '/foo'

    xml = Nokogiri::XML(last_response.body)
    xml.xpath('//item').size.should eql(2)

    FileUtils.rm(@mp3)

    get '/foo'

    xml = Nokogiri::XML(last_response.body)
    xml.xpath('//item').size.should eql(1)
  end

  it 'should return mp3' do
    get '/foo/test.mp3'

    last_response.should be_ok
    last_response['Content-Type'].should eql('audio/mpeg')
    last_response.body.should eql(open(fixture('/foo/test.mp3'), 'rb').read)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-musicindex-0.0.2 spec/rack/musicindex_spec.rb