From 813b6f0383a1a71d03d5101f44bbc2550a916c0f Mon Sep 17 00:00:00 2001 From: Thomas Wolfe Date: Fri, 31 May 2013 20:32:45 -0500 Subject: [PATCH 1/5] track_search now works, will be moved to it's own recording model. --- lib/musicbrainz/models/base_model.rb | 8 ++++-- lib/musicbrainz/models/track.rb | 3 +- spec/models/release_group_spec.rb | 1 - spec/models/track_spec.rb | 41 ++++++++++++++++++---------- 4 files changed, 34 insertions(+), 19 deletions(-) diff --git a/lib/musicbrainz/models/base_model.rb b/lib/musicbrainz/models/base_model.rb index d11841e..f7af924 100644 --- a/lib/musicbrainz/models/base_model.rb +++ b/lib/musicbrainz/models/base_model.rb @@ -24,11 +24,15 @@ module MusicBrainz MusicBrainz.client end - def search(hash) + def search(hash, resource=nil) hash = escape_strings(hash) query_val = build_query(hash) underscore_name = self.name[13..-1].underscore - client.load(underscore_name.to_sym, { query: query_val, limit: 10 }, { binding: underscore_name.insert(-1,"_search").to_sym }) + if resource # only needed since "track" is really a "recording", ugly + client.load(resource, { query: query_val, limit: 10 }, { binding: underscore_name.insert(-1,"_search").to_sym }) + else + client.load(underscore_name.to_sym, { query: query_val, limit: 10 }, { binding: underscore_name.insert(-1,"_search").to_sym }) + end end class ::String diff --git a/lib/musicbrainz/models/track.rb b/lib/musicbrainz/models/track.rb index 4e9203c..8390abf 100644 --- a/lib/musicbrainz/models/track.rb +++ b/lib/musicbrainz/models/track.rb @@ -14,7 +14,8 @@ module MusicBrainz end def search(artist_name, track_name) - super({artist: artist_name, recording: track_name}) + # this model really should be named "recording" I'd rename, but I don't want to break anything + super({recording: track_name, artist: artist_name}, "recording") end end end diff --git a/spec/models/release_group_spec.rb b/spec/models/release_group_spec.rb index 8e292ab..8d7c3d9 100644 --- a/spec/models/release_group_spec.rb +++ b/spec/models/release_group_spec.rb @@ -61,7 +61,6 @@ describe MusicBrainz::ReleaseGroup do allow_any_instance_of(MusicBrainz::Client).to receive(:get_contents) .with('http://musicbrainz.org/ws/2/release-group/6f33e0f0-cde2-38f9-9aee-2c60af8d1a61?inc=url-rels') .and_return({ status: 200, body: response}) - release_group = MusicBrainz::ReleaseGroup.find_by_artist_and_title('Kasabian', 'Empire') expect(release_group.id).to eq '6f33e0f0-cde2-38f9-9aee-2c60af8d1a61' end diff --git a/spec/models/track_spec.rb b/spec/models/track_spec.rb index 764be74..acefb8e 100644 --- a/spec/models/track_spec.rb +++ b/spec/models/track_spec.rb @@ -3,21 +3,32 @@ require "spec_helper" describe MusicBrainz::Track do - it "gets no exception while loading release info" do - expect { - MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - }.to_not raise_error(Exception) - end + describe '.find' do + it "gets no exception while loading release info" do + lambda { + MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") + }.should_not raise_error(Exception) + end - it "gets correct instance" do - track = MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - expect(track).to be_an_instance_of(MusicBrainz::Track) - end + it "gets correct instance" do + track = MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") + track.should be_an_instance_of(MusicBrainz::Track) + end - it "gets correct track data" do - track = MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - expect(track.recording_id).to eq "b3015bab-1540-4d4e-9f30-14872a1525f7" - expect(track.title).to eq "Empire" - expect(track.length).to eq 233013 - end + it "gets correct track data" do + track = MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") + track.recording_id.should == "b3015bab-1540-4d4e-9f30-14872a1525f7" + track.title.should == "Empire" + track.length.should == 233013 + end + end + + describe '.search' do + it "searches tracks (aka recordings) by artist name and title" do + matches = MusicBrainz::Track.search('Local H', 'Bound for the floor') + matches.length.should be > 0 + matches.first[:title].should == 'Empire' + matches.first[:type].should == 'Album' + end + end end From 2d4c1c42fdcf6513c01a78d7343057ffeb64e8a7 Mon Sep 17 00:00:00 2001 From: Thomas Wolfe Date: Tue, 5 Nov 2013 20:15:09 -0600 Subject: [PATCH 2/5] Use magic encoding to ret rid of "invalid multibyte chat (US-ASCII)" errors. track_search is now renamed recording_search. recording_search now works (I mixed up the inputs). --- Gemfile | 4 +++ README.md | 20 ++++++++++-- lib/mb.rb | 1 + lib/musicbrainz.rb | 8 ++++- lib/musicbrainz/bindings/artist.rb | 2 +- .../bindings/artist_release_groups.rb | 1 + lib/musicbrainz/bindings/artist_search.rb | 2 +- lib/musicbrainz/bindings/recording.rb | 20 ++++++++++++ .../{track_search.rb => recording_search.rb} | 4 +-- lib/musicbrainz/bindings/release.rb | 1 + lib/musicbrainz/bindings/release_group.rb | 1 + .../bindings/release_group_releases.rb | 1 + .../bindings/release_group_search.rb | 2 +- lib/musicbrainz/bindings/release_tracks.rb | 1 + lib/musicbrainz/bindings/track.rb | 1 + lib/musicbrainz/client.rb | 1 + .../client_modules/caching_proxy.rb | 1 + .../client_modules/failsafe_proxy.rb | 1 + .../client_modules/transparent_proxy.rb | 1 + lib/musicbrainz/configuration.rb | 1 + lib/musicbrainz/deprecated.rb | 1 + lib/musicbrainz/middleware.rb | 1 + lib/musicbrainz/models/artist.rb | 1 + lib/musicbrainz/models/base_model.rb | 19 +++++++---- lib/musicbrainz/models/recording.rb | 20 ++++++++++++ lib/musicbrainz/models/release.rb | 1 + lib/musicbrainz/models/release_group.rb | 1 + lib/musicbrainz/models/track.rb | 6 +--- lib/musicbrainz/version.rb | 1 + ...earch_spec.rb => recording_search_spec.rb} | 6 ++-- spec/bindings/release_group_search_spec.rb | 2 +- spec/bindings/release_spec.rb | 2 +- spec/client_modules/cache_spec.rb | 2 +- spec/deprecated/cache_config_spec.rb | 2 +- spec/deprecated/proxy_config_spec.rb | 2 +- spec/models/artist_spec.rb | 2 +- spec/models/base_model_spec.rb | 2 +- spec/models/recording_spec.rb | 32 +++++++++++++++++++ spec/models/release_group_spec.rb | 2 +- spec/models/release_spec.rb | 2 +- spec/models/track_spec.rb | 11 +------ spec/spec_helper.rb | 1 + 42 files changed, 151 insertions(+), 42 deletions(-) create mode 100644 lib/musicbrainz/bindings/recording.rb rename lib/musicbrainz/bindings/{track_search.rb => recording_search.rb} (92%) create mode 100644 lib/musicbrainz/models/recording.rb rename spec/bindings/{track_search_spec.rb => recording_search_spec.rb} (88%) create mode 100644 spec/models/recording_spec.rb diff --git a/Gemfile b/Gemfile index 851fabc..cb50039 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,6 @@ source 'https://rubygems.org' gemspec + +group :test do + gem "debugger" +end diff --git a/README.md b/README.md index 7f82a58..5b626cc 100644 --- a/README.md +++ b/README.md @@ -121,11 +121,10 @@ MusicBrainz::Release.find(id) } ``` -MusicBrainz::Track +MusicBrainz::Track (depreciated, now called Recording) ```ruby # Class Methods MusicBrainz::Track.find(id) -MusicBrainz::ReleaseGroup.search(artist_name, track_name) # Fields { @@ -136,6 +135,23 @@ MusicBrainz::ReleaseGroup.search(artist_name, track_name) } ``` +MusicBrainz::Recording +```ruby +# Class Methods +MusicBrainz::Recording.find(id) +MusicBrainz::Recording.search(track_name, artist_name) + +# Fields +{ + :id => Integer, + :mbid => Integer, + :title => String, + :artist => String, + :releases => String, + :score => Integer +} +``` + ### Testing ``` bundle exec rspec diff --git a/lib/mb.rb b/lib/mb.rb index b979ca1..d45c9fa 100644 --- a/lib/mb.rb +++ b/lib/mb.rb @@ -1,2 +1,3 @@ +# -*- encoding : utf-8 -*- require "musicbrainz" MB = MusicBrainz diff --git a/lib/musicbrainz.rb b/lib/musicbrainz.rb index cbc3049..18b701a 100644 --- a/lib/musicbrainz.rb +++ b/lib/musicbrainz.rb @@ -1,3 +1,7 @@ +# -*- encoding : utf-8 -*- +#!/bin/env ruby +# encoding: utf-8 + require "digest/sha1" require "fileutils" require "date" @@ -20,6 +24,7 @@ require "musicbrainz/models/artist" require "musicbrainz/models/release_group" require "musicbrainz/models/release" require "musicbrainz/models/track" +require "musicbrainz/models/recording" require "musicbrainz/bindings/artist" require "musicbrainz/bindings/artist_search" @@ -32,7 +37,8 @@ require "musicbrainz/bindings/release_group_releases" require "musicbrainz/bindings/release" require "musicbrainz/bindings/release_tracks" require "musicbrainz/bindings/track" -require "musicbrainz/bindings/track_search" +require "musicbrainz/bindings/recording" +require "musicbrainz/bindings/recording_search" module MusicBrainz GH_PAGE_URL = "http://git.io/brainz" diff --git a/lib/musicbrainz/bindings/artist.rb b/lib/musicbrainz/bindings/artist.rb index aeb97f0..552f585 100644 --- a/lib/musicbrainz/bindings/artist.rb +++ b/lib/musicbrainz/bindings/artist.rb @@ -1,4 +1,4 @@ -# encoding: UTF-8 +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module Artist diff --git a/lib/musicbrainz/bindings/artist_release_groups.rb b/lib/musicbrainz/bindings/artist_release_groups.rb index 78612ed..126f74f 100644 --- a/lib/musicbrainz/bindings/artist_release_groups.rb +++ b/lib/musicbrainz/bindings/artist_release_groups.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module ArtistReleaseGroups diff --git a/lib/musicbrainz/bindings/artist_search.rb b/lib/musicbrainz/bindings/artist_search.rb index f693612..e626835 100644 --- a/lib/musicbrainz/bindings/artist_search.rb +++ b/lib/musicbrainz/bindings/artist_search.rb @@ -1,4 +1,4 @@ -# encoding: UTF-8 +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module ArtistSearch diff --git a/lib/musicbrainz/bindings/recording.rb b/lib/musicbrainz/bindings/recording.rb new file mode 100644 index 0000000..6ddc2e3 --- /dev/null +++ b/lib/musicbrainz/bindings/recording.rb @@ -0,0 +1,20 @@ +# -*- encoding : utf-8 -*- +module MusicBrainz + module Bindings + module Recording + def parse(xml) + xml = xml.xpath('./recording') unless xml.xpath('./recording').empty? + { + id: (xml.attribute('id').value rescue nil), + mbid: (xml.attribute('id').value rescue nil), # Old shit + title: (xml.xpath('./title').text.gsub(/[`’]/, "'") rescue nil), + artist: (xml.xpath('./artist-credit/name-credit/artist/name').text rescue nil), + releases: (xml.xpath('./release-list/release/title').map{ |xml| xml.text } rescue []), + score: (xml.attribute('score').value.to_i rescue nil) + } + end + + extend self + end + end +end diff --git a/lib/musicbrainz/bindings/track_search.rb b/lib/musicbrainz/bindings/recording_search.rb similarity index 92% rename from lib/musicbrainz/bindings/track_search.rb rename to lib/musicbrainz/bindings/recording_search.rb index 512a9a8..1b1f7d5 100644 --- a/lib/musicbrainz/bindings/track_search.rb +++ b/lib/musicbrainz/bindings/recording_search.rb @@ -1,7 +1,7 @@ -# encoding: UTF-8 +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings - module TrackSearch + module RecordingSearch def parse(xml) xml.xpath('./recording-list/recording').map do |xml| { diff --git a/lib/musicbrainz/bindings/release.rb b/lib/musicbrainz/bindings/release.rb index f00bd90..19501d5 100644 --- a/lib/musicbrainz/bindings/release.rb +++ b/lib/musicbrainz/bindings/release.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module Release diff --git a/lib/musicbrainz/bindings/release_group.rb b/lib/musicbrainz/bindings/release_group.rb index 7ac95d4..ba9c54a 100644 --- a/lib/musicbrainz/bindings/release_group.rb +++ b/lib/musicbrainz/bindings/release_group.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module ReleaseGroup diff --git a/lib/musicbrainz/bindings/release_group_releases.rb b/lib/musicbrainz/bindings/release_group_releases.rb index 4ce7133..aeef95e 100644 --- a/lib/musicbrainz/bindings/release_group_releases.rb +++ b/lib/musicbrainz/bindings/release_group_releases.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module ReleaseGroupReleases diff --git a/lib/musicbrainz/bindings/release_group_search.rb b/lib/musicbrainz/bindings/release_group_search.rb index 7766dee..3a0133b 100644 --- a/lib/musicbrainz/bindings/release_group_search.rb +++ b/lib/musicbrainz/bindings/release_group_search.rb @@ -1,4 +1,4 @@ -# encoding: UTF-8 +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module ReleaseGroupSearch diff --git a/lib/musicbrainz/bindings/release_tracks.rb b/lib/musicbrainz/bindings/release_tracks.rb index a14835a..b91ccd6 100644 --- a/lib/musicbrainz/bindings/release_tracks.rb +++ b/lib/musicbrainz/bindings/release_tracks.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module ReleaseTracks diff --git a/lib/musicbrainz/bindings/track.rb b/lib/musicbrainz/bindings/track.rb index a2c0a43..a03bec0 100644 --- a/lib/musicbrainz/bindings/track.rb +++ b/lib/musicbrainz/bindings/track.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Bindings module Track diff --git a/lib/musicbrainz/client.rb b/lib/musicbrainz/client.rb index 24e1e06..b53cfa6 100644 --- a/lib/musicbrainz/client.rb +++ b/lib/musicbrainz/client.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class Client include ClientModules::TransparentProxy diff --git a/lib/musicbrainz/client_modules/caching_proxy.rb b/lib/musicbrainz/client_modules/caching_proxy.rb index 0d3ecaf..e109925 100644 --- a/lib/musicbrainz/client_modules/caching_proxy.rb +++ b/lib/musicbrainz/client_modules/caching_proxy.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module ClientModules module CachingProxy diff --git a/lib/musicbrainz/client_modules/failsafe_proxy.rb b/lib/musicbrainz/client_modules/failsafe_proxy.rb index 554f844..2361243 100644 --- a/lib/musicbrainz/client_modules/failsafe_proxy.rb +++ b/lib/musicbrainz/client_modules/failsafe_proxy.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module ClientModules module FailsafeProxy diff --git a/lib/musicbrainz/client_modules/transparent_proxy.rb b/lib/musicbrainz/client_modules/transparent_proxy.rb index e3386f6..387c411 100644 --- a/lib/musicbrainz/client_modules/transparent_proxy.rb +++ b/lib/musicbrainz/client_modules/transparent_proxy.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module ClientModules module TransparentProxy diff --git a/lib/musicbrainz/configuration.rb b/lib/musicbrainz/configuration.rb index 039e5b7..1fdcdc2 100644 --- a/lib/musicbrainz/configuration.rb +++ b/lib/musicbrainz/configuration.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class Configuration attr_accessor :app_name, :app_version, :contact, diff --git a/lib/musicbrainz/deprecated.rb b/lib/musicbrainz/deprecated.rb index b8df3d3..1cc1b94 100644 --- a/lib/musicbrainz/deprecated.rb +++ b/lib/musicbrainz/deprecated.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz module Deprecated module ProxyConfig diff --git a/lib/musicbrainz/middleware.rb b/lib/musicbrainz/middleware.rb index c3bc1b8..cbd3fc8 100644 --- a/lib/musicbrainz/middleware.rb +++ b/lib/musicbrainz/middleware.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class Middleware < Faraday::Middleware def call(env) diff --git a/lib/musicbrainz/models/artist.rb b/lib/musicbrainz/models/artist.rb index ae3b5d7..635d5ee 100644 --- a/lib/musicbrainz/models/artist.rb +++ b/lib/musicbrainz/models/artist.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class Artist < BaseModel field :id, String diff --git a/lib/musicbrainz/models/base_model.rb b/lib/musicbrainz/models/base_model.rb index f7af924..a8975bb 100644 --- a/lib/musicbrainz/models/base_model.rb +++ b/lib/musicbrainz/models/base_model.rb @@ -24,15 +24,16 @@ module MusicBrainz MusicBrainz.client end - def search(hash, resource=nil) + def find(hash) + underscored_name = underscore_name.to_sym + client.load(underscored_name, hash, { binding: underscored_name, create_model: underscored_name }) + end + + def search(hash) hash = escape_strings(hash) query_val = build_query(hash) - underscore_name = self.name[13..-1].underscore - if resource # only needed since "track" is really a "recording", ugly - client.load(resource, { query: query_val, limit: 10 }, { binding: underscore_name.insert(-1,"_search").to_sym }) - else - client.load(underscore_name.to_sym, { query: query_val, limit: 10 }, { binding: underscore_name.insert(-1,"_search").to_sym }) - end + underscored_name = underscore_name + client.load(underscored_name.to_sym, { query: query_val, limit: 10 }, { binding: underscored_name.insert(-1,"_search").to_sym }) end class ::String @@ -57,6 +58,10 @@ module MusicBrainz hash end + def underscore_name + self.name[13..-1].underscore + end + # these probably should be private... but I'm not sure how to get it to work in a module... # private_class_method :build_query, :escape_strings end diff --git a/lib/musicbrainz/models/recording.rb b/lib/musicbrainz/models/recording.rb new file mode 100644 index 0000000..a635569 --- /dev/null +++ b/lib/musicbrainz/models/recording.rb @@ -0,0 +1,20 @@ +module MusicBrainz + class Recording < BaseModel + field :id, Integer + field :mbid, Integer + field :title, String + field :artist, String + field :releases, String + field :score, Integer + + class << self + def find(id) + super({ id: id }) + end + + def search(track_name, artist_name) + super({recording: track_name, artist: artist_name}) + end + end + end +end diff --git a/lib/musicbrainz/models/release.rb b/lib/musicbrainz/models/release.rb index 9f49133..f2c9390 100644 --- a/lib/musicbrainz/models/release.rb +++ b/lib/musicbrainz/models/release.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class Release < BaseModel field :id, String diff --git a/lib/musicbrainz/models/release_group.rb b/lib/musicbrainz/models/release_group.rb index 66062c2..d9264bb 100644 --- a/lib/musicbrainz/models/release_group.rb +++ b/lib/musicbrainz/models/release_group.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class ReleaseGroup < BaseModel field :id, String diff --git a/lib/musicbrainz/models/track.rb b/lib/musicbrainz/models/track.rb index 8390abf..7a46641 100644 --- a/lib/musicbrainz/models/track.rb +++ b/lib/musicbrainz/models/track.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz class Track < BaseModel field :position, Integer @@ -12,11 +13,6 @@ module MusicBrainz create_model: :track }) end - - def search(artist_name, track_name) - # this model really should be named "recording" I'd rename, but I don't want to break anything - super({recording: track_name, artist: artist_name}, "recording") - end end end end diff --git a/lib/musicbrainz/version.rb b/lib/musicbrainz/version.rb index 935724e..889e1b8 100644 --- a/lib/musicbrainz/version.rb +++ b/lib/musicbrainz/version.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- module MusicBrainz VERSION = "0.7.7" end diff --git a/spec/bindings/track_search_spec.rb b/spec/bindings/recording_search_spec.rb similarity index 88% rename from spec/bindings/track_search_spec.rb rename to spec/bindings/recording_search_spec.rb index a47c827..2b11f9e 100644 --- a/spec/bindings/track_search_spec.rb +++ b/spec/bindings/recording_search_spec.rb @@ -1,10 +1,10 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" -describe MusicBrainz::Bindings::TrackSearch do +describe MusicBrainz::Bindings::RecordingSearch do describe '.parse' do - it "gets correct Track (really recording) data" do + it "gets correct Recording data" do response = 'King FredToo Much JoyGreen Eggs and Crack' expect(described_class.parse(Nokogiri::XML.parse(response).remove_namespaces!.xpath('/metadata'))).to eq [ { diff --git a/spec/bindings/release_group_search_spec.rb b/spec/bindings/release_group_search_spec.rb index 438d68f..e7a611a 100644 --- a/spec/bindings/release_group_search_spec.rb +++ b/spec/bindings/release_group_search_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/bindings/release_spec.rb b/spec/bindings/release_spec.rb index ac7093a..49324e7 100644 --- a/spec/bindings/release_spec.rb +++ b/spec/bindings/release_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/client_modules/cache_spec.rb b/spec/client_modules/cache_spec.rb index 0abc00e..dfeb16f 100644 --- a/spec/client_modules/cache_spec.rb +++ b/spec/client_modules/cache_spec.rb @@ -1,4 +1,4 @@ -# encoding: utf-8 +# -*- encoding : utf-8 -*- require "ostruct" require "spec_helper" diff --git a/spec/deprecated/cache_config_spec.rb b/spec/deprecated/cache_config_spec.rb index 8a80f4f..921f461 100644 --- a/spec/deprecated/cache_config_spec.rb +++ b/spec/deprecated/cache_config_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/deprecated/proxy_config_spec.rb b/spec/deprecated/proxy_config_spec.rb index 3558948..9a65fc0 100644 --- a/spec/deprecated/proxy_config_spec.rb +++ b/spec/deprecated/proxy_config_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/models/artist_spec.rb b/spec/models/artist_spec.rb index 8bc396e..f45ec97 100644 --- a/spec/models/artist_spec.rb +++ b/spec/models/artist_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/models/base_model_spec.rb b/spec/models/base_model_spec.rb index 1f5dc5f..ac32f94 100644 --- a/spec/models/base_model_spec.rb +++ b/spec/models/base_model_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/models/recording_spec.rb b/spec/models/recording_spec.rb new file mode 100644 index 0000000..e6dc071 --- /dev/null +++ b/spec/models/recording_spec.rb @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- + +require "spec_helper" + +describe MusicBrainz::Recording do + describe '.find' do + it "gets no exception while loading release info" do + lambda { + MusicBrainz::Recording.find("b3015bab-1540-4d4e-9f30-14872a1525f7") + }.should_not raise_error(Exception) + end + + it "gets correct instance" do + track = MusicBrainz::Recording.find("b3015bab-1540-4d4e-9f30-14872a1525f7") + track.should be_an_instance_of(MusicBrainz::Recording) + end + + it "gets correct track data" do + track = MusicBrainz::Recording.find("b3015bab-1540-4d4e-9f30-14872a1525f7") + track.title.should == "Empire" + end + end + + describe '.search' do + it "searches tracks (aka recordings) by artist name and title" do + matches = MusicBrainz::Recording.search('Bound for the floor', 'Local H') + matches.length.should be > 0 + matches.first[:title].should == "Bound for the Floor" + matches.first[:artist].should == "Local H" + end + end +end diff --git a/spec/models/release_group_spec.rb b/spec/models/release_group_spec.rb index 8d7c3d9..d88387d 100644 --- a/spec/models/release_group_spec.rb +++ b/spec/models/release_group_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/models/release_spec.rb b/spec/models/release_spec.rb index 7453fd7..7e6d371 100644 --- a/spec/models/release_spec.rb +++ b/spec/models/release_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" diff --git a/spec/models/track_spec.rb b/spec/models/track_spec.rb index acefb8e..1b08c29 100644 --- a/spec/models/track_spec.rb +++ b/spec/models/track_spec.rb @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- encoding : utf-8 -*- require "spec_helper" @@ -22,13 +22,4 @@ describe MusicBrainz::Track do track.length.should == 233013 end end - - describe '.search' do - it "searches tracks (aka recordings) by artist name and title" do - matches = MusicBrainz::Track.search('Local H', 'Bound for the floor') - matches.length.should be > 0 - matches.first[:title].should == 'Empire' - matches.first[:type].should == 'Album' - end - end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1440536..5df3849 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,4 @@ +# -*- encoding : utf-8 -*- require "rubygems" require "bundler/setup" require "musicbrainz" From b77fcac50be3f3ee9cf6c6daa101f5e609ce8063 Mon Sep 17 00:00:00 2001 From: Thomas Wolfe Date: Wed, 6 Nov 2013 17:46:17 -0600 Subject: [PATCH 3/5] added a comment to explain self.name[13..-1] since I can't think of a more intutive way to handle that. --- lib/musicbrainz/models/base_model.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/musicbrainz/models/base_model.rb b/lib/musicbrainz/models/base_model.rb index a8975bb..eec8006 100644 --- a/lib/musicbrainz/models/base_model.rb +++ b/lib/musicbrainz/models/base_model.rb @@ -59,6 +59,7 @@ module MusicBrainz end def underscore_name + # self.name[13..-1] => removes MusicBrainz:: self.name[13..-1].underscore end From 4dd3db1158b1a5392b59fc1fd6a5dc2f0d9d2d5f Mon Sep 17 00:00:00 2001 From: Thomas Wolfe Date: Mon, 11 Nov 2013 21:13:21 -0600 Subject: [PATCH 4/5] accidentally set id/mbid as an integer rather than string. --- lib/musicbrainz/models/recording.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/musicbrainz/models/recording.rb b/lib/musicbrainz/models/recording.rb index a635569..6c211aa 100644 --- a/lib/musicbrainz/models/recording.rb +++ b/lib/musicbrainz/models/recording.rb @@ -1,7 +1,7 @@ module MusicBrainz class Recording < BaseModel - field :id, Integer - field :mbid, Integer + field :id, String + field :mbid, String field :title, String field :artist, String field :releases, String From f85f74bc2b24abfcae3f7813aa8fdd0dac9c8d4b Mon Sep 17 00:00:00 2001 From: Diego d'Ursel Date: Tue, 12 May 2015 19:00:38 +0200 Subject: [PATCH 5/5] Migrate 'should' syntax to 'expect' --- spec/models/recording_spec.rb | 14 +++++++------- spec/models/track_spec.rb | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/spec/models/recording_spec.rb b/spec/models/recording_spec.rb index e6dc071..026f067 100644 --- a/spec/models/recording_spec.rb +++ b/spec/models/recording_spec.rb @@ -5,28 +5,28 @@ require "spec_helper" describe MusicBrainz::Recording do describe '.find' do it "gets no exception while loading release info" do - lambda { + expect { MusicBrainz::Recording.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - }.should_not raise_error(Exception) + }.to_not raise_error(Exception) end it "gets correct instance" do track = MusicBrainz::Recording.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - track.should be_an_instance_of(MusicBrainz::Recording) + expect(track).to be_an_instance_of(MusicBrainz::Recording) end it "gets correct track data" do track = MusicBrainz::Recording.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - track.title.should == "Empire" + expect(track.title).to eq "Empire" end end describe '.search' do it "searches tracks (aka recordings) by artist name and title" do matches = MusicBrainz::Recording.search('Bound for the floor', 'Local H') - matches.length.should be > 0 - matches.first[:title].should == "Bound for the Floor" - matches.first[:artist].should == "Local H" + expect(matches.length).to be > 0 + expect(matches.first[:title]).to eq "Bound for the Floor" + expect(matches.first[:artist]).to eq "Local H" end end end diff --git a/spec/models/track_spec.rb b/spec/models/track_spec.rb index 1b08c29..81ccf4a 100644 --- a/spec/models/track_spec.rb +++ b/spec/models/track_spec.rb @@ -5,21 +5,21 @@ require "spec_helper" describe MusicBrainz::Track do describe '.find' do it "gets no exception while loading release info" do - lambda { + expect { MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - }.should_not raise_error(Exception) + }.to_not raise_error(Exception) end it "gets correct instance" do track = MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - track.should be_an_instance_of(MusicBrainz::Track) + expect(track).to be_an_instance_of(MusicBrainz::Track) end it "gets correct track data" do track = MusicBrainz::Track.find("b3015bab-1540-4d4e-9f30-14872a1525f7") - track.recording_id.should == "b3015bab-1540-4d4e-9f30-14872a1525f7" - track.title.should == "Empire" - track.length.should == 233013 + expect(track.recording_id).to eq "b3015bab-1540-4d4e-9f30-14872a1525f7" + expect(track.title).to eq "Empire" + expect(track.length).to eq 233013 end end end