diff --git a/.gitignore b/.gitignore index eb8e985..d80f764 100644 --- a/.gitignore +++ b/.gitignore @@ -1,48 +1,8 @@ -# rcov generated coverage - -# rdoc generated rdoc - -# yard generated doc .yardoc - -# bundler .bundle - -# jeweler generated pkg - -# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore: -# -# * Create a file at ~/.gitignore -# * Include files you want ignored -# * Run: git config --global core.excludesfile ~/.gitignore -# -# After doing this, these files will be ignored in all your git projects, -# saving you from having to 'pollute' every project you touch with them -# -# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line) -# -# For MacOS: -# -#.DS_Store - -# For TextMate -#*.tmproj -#tmtags - -# For emacs: -#*~ -#\#* -#.\#* - -# For vim: -#*.swp - -# For redcar: -#.redcar - -# For rubinius: -#*.rbc +.DS_Store +tmp \ No newline at end of file diff --git a/Gemfile b/Gemfile index 73de3bc..f26a6f1 100644 --- a/Gemfile +++ b/Gemfile @@ -1,16 +1,14 @@ source "http://rubygems.org" -# Add dependencies required to use your gem here. -# Example: -# gem "activesupport", ">= 2.3.5" -# Add dependencies to develop your gem here. -# Include everything needed to run rake, tests, features, etc. group :development do - gem "shoulda", ">= 0" gem "bundler", "~> 1.0.0" gem "jeweler", "~> 1.6.4" gem "rcov", ">= 0" gem "rdoc", ">= 0" + + gem "rspec" + gem "vcr" + gem "webmock" end gem "nokogiri", ">= 0" diff --git a/Gemfile.lock b/Gemfile.lock index 0bb1691..5b73673 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,9 @@ GEM remote: http://rubygems.org/ specs: + addressable (2.2.6) + crack (0.3.1) + diff-lcs (1.1.3) git (1.2.5) jeweler (1.6.4) bundler (~> 1.0) @@ -10,7 +13,18 @@ GEM rake (0.9.2) rcov (0.9.9) rdoc (3.8) - shoulda (2.11.3) + rspec (2.7.0) + rspec-core (~> 2.7.0) + rspec-expectations (~> 2.7.0) + rspec-mocks (~> 2.7.0) + rspec-core (2.7.0) + rspec-expectations (2.7.0) + diff-lcs (~> 1.1.2) + rspec-mocks (2.7.0) + vcr (1.11.3) + webmock (1.7.7) + addressable (~> 2.2, > 2.2.5) + crack (>= 0.1.7) PLATFORMS ruby @@ -21,4 +35,6 @@ DEPENDENCIES nokogiri rcov rdoc - shoulda + rspec + vcr + webmock diff --git a/spec/requests/artist_spec.rb b/spec/requests/artist_spec.rb new file mode 100644 index 0000000..55dcbfb --- /dev/null +++ b/spec/requests/artist_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper' + +describe "artist" do + it "return valid instance", :vcr do + artist = MusicBrainz::Artist.find('69b39eab-6577-46a4-a9f5-817839092033') + artist.should be_a_kind_of(MusicBrainz::Artist) + end + + it "search by name", :vcr do + matches = MusicBrainz::Artist.search('Kasabian') + matches.should have_at_least(1).item + matches.first[:name].should eql('Kasabian') + end + # + # should "get correct result by name" do + # @artist = MusicBrainz::Artist.find_by_name('Kasabian') + # assert_equal("69b39eab-6577-46a4-a9f5-817839092033", @artist.id) + # end + # + # setup do + # @artist = MusicBrainz::Artist.find('69b39eab-6577-46a4-a9f5-817839092033') + # end + # + # should "return valid instance" do + # assert_instance_of(MusicBrainz::Artist, @artist) + # end + # + # should "contain correct data" do + # assert_equal("69b39eab-6577-46a4-a9f5-817839092033", @artist.id) + # assert_equal("Group", @artist.type) + # assert_equal("Kasabian", @artist.name) + # assert_equal("GB", @artist.country) + # assert_equal("1999", @artist.date_begin) + # end + # + # should "load release groups" do + # release_groups = @artist.release_groups + # assert_operator(16, :<=, release_groups.length) + # assert_equal('533cbc5f-ec7e-32ab-95f3-8d1f804a5176', release_groups.first.id) + # assert_equal('Single', release_groups.first.type) + # assert_equal('Club Foot', release_groups.first.title) + # assert_equal(Time.utc(2004, 5, 10), release_groups.first.first_release_date) + # end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..d83f4ad --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,19 @@ +require 'rubygems' +require 'bundler' +begin + Bundler.setup(:default, :development) +rescue Bundler::BundlerError => e + $stderr.puts e.message + $stderr.puts "Run `bundle install` to install missing gems" + exit e.status_code +end +require "vcr" +require "musicbrainz" + +# HTTPI.log = false +Dir[File.dirname(__FILE__)+"/../lib/*.rb"].each{ |f| require f } +Dir[File.dirname(__FILE__)+"/../spec/support/*.rb"].each{ |f| require f } + +RSpec.configure do |config| + config.mock_with :rspec +end \ No newline at end of file diff --git a/spec/support/vcr.rb b/spec/support/vcr.rb new file mode 100644 index 0000000..06f5fbd --- /dev/null +++ b/spec/support/vcr.rb @@ -0,0 +1,13 @@ +VCR.config do |c| + c.cassette_library_dir = File.join(File.dirname(__FILE__), '..', '..', 'tmp', 'vcr') + c.stub_with :webmock + c.default_cassette_options = { :record => :new_episodes } +end + +RSpec.configure do |c| + c.treat_symbols_as_metadata_keys_with_true_values = true + c.around(:each, :vcr) do |example| + name = example.metadata[:full_description].gsub(/\s/, '_') + VCR.use_cassette(name) { example.call } + end +end \ No newline at end of file diff --git a/test/helper.rb b/test/helper.rb index db7fc13..50661f8 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -1,7 +1,7 @@ require 'rubygems' require 'bundler' begin - Bundler.setup(:default, :development) + Bundler.setup(:default, :test) rescue Bundler::BundlerError => e $stderr.puts e.message $stderr.puts "Run `bundle install` to install missing gems"