spec/skydrive/photo_spec.rb in skydrive-0.1.4 vs spec/skydrive/photo_spec.rb in skydrive-0.1.5
- old
+ new
@@ -1,253 +1,507 @@
+require 'spec_helper'
+describe Skydrive::Photo do
+ let :photo do
+ JSON.load %{
+ {
+ "id": "file.de57f4126ed7e411.DE57F4126ED7E411!128",
+ "from": {
+ "name": "Nuno Bento",
+ "id": "de57f4126ed7e411"
+ },
+ "name": "Maui-2012_0034.JPG",
+ "description": null,
+ "parent_id": "folder.de57f4126ed7e411.DE57F4126ED7E411!126",
+ "size": 561683,
+ "comments_count": 1,
+ "comments_enabled": true,
+ "tags_count": 0,
+ "tags_enabled": true,
+ "is_embeddable": true,
+ "picture": "http://storage.live.com/s1pKk5vzd-gdPanbzKYhB0nQGn8wGq5DSgqvrgIHU1NTXA4e2-spGkAhQjW1d9pcgKAGLB4NsEsSvDoREmdx5w-JiFrinEJJuEoz08Ws_IFupkX2bPSvy5qmths9ijwvDrXi1OBCWk9GW9Kt-qNNOAA9g/Maui09_0034.JPG:Thumbnail",
+ "source": "http://storage.live.com/s1pKk5vzd-gdPanbzKYhB0nQGn8wGq5DSgqvrgIHU1NTXA4e2-spGkAhQjW1d9pcgKAGLB4NsEsSvDoREmdx5w-JiFrinEJJuEoz08Ws_IFupkX2bPSvy5qmths9ijwvDrXi1OBCWk9GW9Kt-qNNOAA9g/Maui09_0034.JPG:HighRes",
+ "upload_location": "https://apis.live.net/v5.0/file.de57f4126ed7e411.DE57F4126ED7E411!128/content/",
+ "images": [
+ {
+ "height": 450,
+ "width": 600,
+ "source": "http://storage.live.com/s1pKk5vzd-gdPanbzKYhB0nQGn8wGq5DSgqvrgIHU1NTXA4e2-spGkAhQjW1d9pcgKAGLB4NsEsSvDoREmdx5w-JiFrinEJJuEoz08Ws_IFupkX2bPSvy5qmths9ijwvDrXi1OBCWk9GW9Kt-qNNOAA9g/Maui09_0034.JPG:WebReady",
+ "type": "normal"
+ }, {
+ "height": 132,
+ "width": 176,
+ "source": "http://storage.live.com/s1pKk5vzd-gdPanbzKYhB0nQGn8wGq5DSgqvrgIHU1NTXA4e2-spGkAhQjW1d9pcgKAGLB4NsEsSvDoREmdx5w-JiFrinEJJuEoz08Ws_IFupkX2bPSvy5qmths9ijwvDrXi1OBCWk9GW9Kt-qNNOAA9g/Maui09_0034.JPG:MobileReady",
+ "type": "album"
+ }, {
+ "height": 72,
+ "width": 96,
+ "source": "http://storage.live.com/s1pKk5vzd-gdPanbzKYhB0nQGn8wGq5DSgqvrgIHU1NTXA4e2-spGkAhQjW1d9pcgKAGLB4NsEsSvDoREmdx5w-JiFrinEJJuEoz08Ws_IFupkX2bPSvy5qmths9ijwvDrXi1OBCWk9GW9Kt-qNNOAA9g/Maui09_0034.JPG:Thumbnail",
+ "type": "thumbnail"
+ }, {
+ "height": 1200,
+ "width": 1600,
+ "source": "http://storage.live.com/s1pKk5vzd-gdPanbzKYhB0nQGn8wGq5DSgqvrgIHU1NTXA4e2-spGkAhQjW1d9pcgKAGLB4NsEsSvDoREmdx5w-JiFrinEJJuEoz08Ws_IFupkX2bPSvy5qmths9ijwvDrXi1OBCWk9GW9Kt-qNNOAA9g/Maui09_0034.JPG:HighRes",
+ "type": "full"
+ }
+ ],
+ "link": "https://skydrive.live.com/redir.aspx?cid\u003dde57f4126ed7e411\u0026page\u003dview\u0026resid\u003dDE57F4126ED7E411!128\u0026parid\u003dDE57F4126ED7E411!126",
+ "when_taken": "2008-03-24T23:41:53+0000",
+ "height": 1200,
+ "width": 1600,
+ "type": "photo",
+ "location": {
+ "latitude": 47.65316,
+ "longitude": -122.135911,
+ "altitude": 43
+ },
+ "camera_make": "MyManufacturer",
+ "camera_model": "MyModel",
+ "focal_ratio": 2.8,
+ "focal_length": 3.85,
+ "exposure_numerator": 1,
+ "exposure_denominator": 15,
+ "shared_with": {
+ "access": "Everyone (public)"
+ },
+ "created_time": "2012-12-03T18:14:03+0000",
+ "updated_time": "2012-12-03T18:31:01+0000"
+ }
+ }
+ end
+
+ subject { Skydrive::Photo.new(skydrive_test_client, photo)}
+
+ describe '#name' do
+ it "should return the name of the photo" do
+ subject.name.should == photo["name"]
+ end
+ end
+
+ describe '#description' do
+ it "should return the description of the photo" do
+ subject.description.should == photo["description"]
+ end
+ end
+
+ describe '#from' do
+ it "should return a user" do
+ subject.from.should be_a Skydrive::User
+ end
+
+ it "should return the info about the user who uploaded the photo" do
+ subject.from.name.should == photo["from"]["name"]
+ subject.from.id.should == photo["from"]["id"]
+ end
+ end
+
+ describe '#tags_count' do
+ it "should give the tags count of the photo" do
+ subject.tags_count.should == 0
+ end
+ end
+
+ describe '#tags_enabled' do
+ it "should return whether tags are enabled for the photo" do
+ subject.tags_enabled?.should == true
+ end
+ end
+
+ describe '#parent_id' do
+ it "should return the parent id of the photo" do
+ subject.parent_id.should == photo["parent_id"]
+ end
+ end
+
+ describe '#size' do
+ it "should return the size of the photo in bytes" do
+ subject.size.should == photo["size"]
+ end
+ end
+
+ describe '#comments_count' do
+ it "should return the comments associated with the photo" do
+ subject.comments_count.should == photo["comments_count"]
+ end
+ end
+
+ describe '#comments_enabled?' do
+ it "should return whether tags are enabled for the photo" do
+ subject.comments_enabled?.should == true
+ end
+ end
+
+ describe '#is_embeddable? ' do
+ it "should return whether the photo can be embedded" do
+ subject.is_embeddable?.should == true
+ end
+ end
+
+ describe '#picture' do
+ it "should return the URL of the photo's picture" do
+ subject.picture.should == photo["picture"]
+ end
+ end
+
+ describe '#source' do
+ it 'should return the download URL for the photo.' do
+ subject.source.should == photo["source"]
+ end
+ end
+
+ describe 'upload_location' do
+ it "should return the photo's upload location" do
+ subject.upload_location.should == photo["upload_location"]
+ end
+ end
+
+ describe '#images' do
+ it "should return info about the photo's sizes" do
+ subject.images.should == photo["images"]
+ end
+
+ it "should all have hieght, width, source and type" do
+ subject.images.should each { |image|
+ image.keys.should =~ ["height", "source", "type", "width"]
+ }
+ end
+ end
+
+ describe '#link' do
+ it "should return the url of the photo hosted in Skydrive" do
+ subject.link.should == photo["link"]
+ end
+ end
+
+ describe '#when_taken' do
+ it "should return the time when the photo was taken" do
+ subject.when_taken.should == Time.new(photo["when_taken"])
+ end
+ end
+
+ describe '#download_link' do
+ it "should give the download link for the photo" do
+ stub_request(:get, "https://apis.live.net/v5.0/file.de57f4126ed7e411.DE57F4126ED7E411!128/content?access_token=access_token&download=true&suppress_redirects=true").to_return(:status => 200, :body => {"location" => "http://dummylocation.com"}.to_json, :headers => {})
+ subject.download_link.should == "http://dummylocation.com"
+ end
+ end
+
+ describe '#height' do
+ it "should return the height of the photo" do
+ subject.height.should == photo["height"]
+ end
+ end
+
+ describe '#width' do
+ it "should return the width of the photo" do
+ subject.width.should == photo["width"]
+ end
+ end
+
+ describe '#location' do
+ it "should return the location where the photo was taken" do
+ subject.location.should == photo["location"]
+ end
+ it "should give latitude, longitude and altitude" do
+ subject.location.keys.should =~ ['latitude', 'longitude', 'altitude']
+ end
+ end
+
+
+ describe '#camera_make' do
+ it "should return the make of the camera with which the photo was taken" do
+ subject.camera_make.should == photo["camera_make"]
+ end
+ end
+
+ describe '#camera_model' do
+ it "should return the brand and model number of the camera that took the photo." do
+ subject.camera_model.should == photo["camera_model"]
+ end
+ end
+
+ describe '#focal_ratio' do
+ it "should return the f-number that the photo was taken at" do
+ subject.focal_ratio.should == photo["focal_ratio"]
+ end
+ end
+
+ describe '#focal_length' do
+ it "should return the focal length that the photo was taken at" do
+ subject.focal_length.should == photo["focal_length"]
+ end
+ end
+
+ describe '#exposure_numerator' do
+ it "should return the numerator of the shutter speed that the photo was taken at" do
+ subject.exposure_numerator.should == photo["exposure_numerator"]
+ end
+ end
+
+ describe '#exposure_denominator' do
+ it "should return the denominator of the shutter speed that the photo was taken at" do
+ subject.exposure_denominator.should == photo["exposure_denominator"]
+ end
+ end
+
+ describe '#download' do
+ it "should download the photo" do
+ stub_request(:get, "https://apis.live.net/v5.0/file.de57f4126ed7e411.DE57F4126ED7E411!128/content?access_token=access_token&download=true&suppress_redirects=true").to_return(:status => 200, :body => {"location" => "http://dummylocation.com/path?dummy_param=value"}.to_json, :headers => {})
+ stub_request(:get, "http://dummylocation.com/path?dummy_param=value").
+ to_return(:status => 200, :body => "\322\204\371\225Q", :headers => {})
+ subject.download.should == "\322\204\371\225Q"
+ end
+ end
+
+end
\ No newline at end of file