diff --git a/generators/echonest_unit_test/templates/unit_test.rb.erb b/generators/echonest_unit_test/templates/unit_test.rb.erb index 04cd2ed..7ae5c4b 100644 --- a/generators/echonest_unit_test/templates/unit_test.rb.erb +++ b/generators/echonest_unit_test/templates/unit_test.rb.erb @@ -9,30 +9,30 @@ describe "<%=name.capitalize%>Result" do end it "should parse xml" do - EchoNest::AudioResult.parse(@xml) + EchoNest::<%=name.capitalize%>Result.parse(@xml) end it "should have artist" do - audio = EchoNest::<%=name.capitalize%>Result.parse(@xml) - audio.artist.should be_kind_of(EchoNest::Artist) - audio.artist.name.should == "Wavves" - audio.artist.id.should == "music://id.echonest.com/~/AR/ARVVZQP11E2835DBCB" + <%=name%> = EchoNest::<%=name.capitalize%>Result.parse(@xml) + <%=name%>.artist.should be_kind_of(EchoNest::Artist) + <%=name%>.artist.name.should == "Wavves" + <%=name%>.artist.id.should == "music://id.echonest.com/~/AR/ARVVZQP11E2835DBCB" end it "should have results" do - audio = EchoNest::<%=name.capitalize%>Result.parse(@xml) - audio.results.should be_kind_of(EchoNest::BlogResults) + <%=name%> = EchoNest::<%=name.capitalize%>Result.parse(@xml) + <%=name%>.results.should be_kind_of(EchoNest::BlogResults) #TODO: Fill in these values as found in fixture - audio.results.found.should == "51" - audio.results.shown.should == "15" - audio.results.start.should == "0" - audio.results.docs.should be_kind_of(Array) - audio.results.docs.length.should == 15 + <%=name%>.results.found.should == "51" + <%=name%>.results.shown.should == "15" + <%=name%>.results.start.should == "0" + <%=name%>.results.docs.should be_kind_of(Array) + <%=name%>.results.docs.length.should == 15 end describe "result" do it "should be an <%=name.capitalize%>Doc" do - audio = EchoNest::AudioResult.parse(@xml) + <%=name%> = EchoNest::AudioResult.parse(@xml) doc = audio.results.docs[0] doc.should be_kind_of(EchoNest::<%=name.capitalize%>Doc) #TODO: Create tests based on attributes in resource diff --git a/lib/echonest.rb b/lib/echonest.rb index 6149629..4ebdc82 100644 --- a/lib/echonest.rb +++ b/lib/echonest.rb @@ -19,4 +19,7 @@ def self.api_key require "echonest/audio_doc.rb" require "echonest/audio_results.rb" require "echonest/audio_result.rb" +require "echonest/blog_doc.rb" +require "echonest/blog_results.rb" +require "echonest/blog_result.rb" diff --git a/lib/echonest/artist.rb b/lib/echonest/artist.rb index b640503..fdc61cf 100644 --- a/lib/echonest/artist.rb +++ b/lib/echonest/artist.rb @@ -15,5 +15,10 @@ def get_audio AudioResult.parse request.fetch end + def get_blogs + request = ApiRequest.new("get_audio", {:id => id}) + BlogResult.parse request.fetch + end + end end diff --git a/lib/echonest/blog_doc.rb b/lib/echonest/blog_doc.rb new file mode 100644 index 0000000..93aaf18 --- /dev/null +++ b/lib/echonest/blog_doc.rb @@ -0,0 +1,13 @@ + +module EchoNest + class BlogDoc + include HappyMapper + + tag :doc + + element :name, String + element :url, String + element :summary, String + element :date_found, String + end +end diff --git a/lib/echonest/blog_result.rb b/lib/echonest/blog_result.rb new file mode 100644 index 0000000..611670d --- /dev/null +++ b/lib/echonest/blog_result.rb @@ -0,0 +1,12 @@ + +module EchoNest + class BlogResult + include HappyMapper + + tag :response + + has_one :artist, Artist + has_one :results, BlogResults + + end +end diff --git a/lib/echonest/blog_results.rb b/lib/echonest/blog_results.rb new file mode 100644 index 0000000..0691daa --- /dev/null +++ b/lib/echonest/blog_results.rb @@ -0,0 +1,15 @@ + +module EchoNest + class BlogResults + include HappyMapper + + tag :results + + attribute :found, String + attribute :shown, String + attribute :start, String + + has_many :docs, BlogDoc + + end +end diff --git a/spec/echonest/blog_result_spec.rb b/spec/echonest/blog_result_spec.rb new file mode 100644 index 0000000..40fee2d --- /dev/null +++ b/spec/echonest/blog_result_spec.rb @@ -0,0 +1,48 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe "BlogResult" do + + describe "#parse" do + + before(:each) do + @xml = File.read(File.dirname(__FILE__) + "/../fixtures/blog/radiohead.xml") + end + + it "should parse xml" do + EchoNest::BlogResult.parse(@xml) + end + + it "should have artist" do + blog = EchoNest::BlogResult.parse(@xml) + blog.artist.should be_kind_of(EchoNest::Artist) + blog.artist.name.should == "Radiohead" + blog.artist.id.should == "music://id.echonest.com/~/AR/ARH6W4X1187B99274F" + end + + it "should have results" do + blog = EchoNest::BlogResult.parse(@xml) + blog.results.should be_kind_of(EchoNest::BlogResults) + #TODO: Fill in these values as found in fixture + blog.results.found.should == "131" + blog.results.shown.should == "2" + blog.results.start.should == "0" + blog.results.docs.should be_kind_of(Array) + blog.results.docs.length.should == 2 + end + + describe "result" do + it "should be an BlogDoc" do + blog = EchoNest::BlogResult.parse(@xml) + doc = blog.results.docs[0] + doc.should be_kind_of(EchoNest::BlogDoc) + #TODO: Create tests based on attributes in resource + doc.name.should == "Radiohead live at Santa Barbara 28.8.08 « Misspeak Music" + doc.url.should == "http://misspeakmusic.wordpress.com/2008/09/01/radiohead-live-at-santa-barbara-28808/" + doc.summary.should == "[blog text removed]" + doc.date_found.should == "2008-10-14 16:38:15.582000" + end + end + end + + +end diff --git a/spec/fixtures/blog/radiohead.xml b/spec/fixtures/blog/radiohead.xml new file mode 100644 index 0000000..f0c9e8b --- /dev/null +++ b/spec/fixtures/blog/radiohead.xml @@ -0,0 +1,32 @@ + + + + 0 + Success + + + 5ZAOMB3BUR8QUN4PE + music://id.echonest.com/~/AR/ARH6W4X1187B99274F + 0 + 2 + + + Radiohead + music://id.echonest.com/~/AR/ARH6W4X1187B99274F + music://id.echonest.com/5ZAOMB3BUR8QUN4PE/AR/1 + + + + Radiohead live at Santa Barbara 28.8.08 « Misspeak Music + http://misspeakmusic.wordpress.com/2008/09/01/radiohead-live-at-santa-barbara-28808/ + [blog text removed] + 2008-10-14 16:38:15.582000 + + + Apartment 41: Radiohead's Santa Barbara Webcast + http://coldbrains41.blogspot.com/2008/08/radioheads-santa-barbara-webcast-video.html + [blog text removed] + 2008-10-14 16:38:15.582000 + + +