picasa 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +4 -9
  3. data/Gemfile +4 -4
  4. data/README.md +4 -12
  5. data/extra/Thorfile +0 -3
  6. data/lib/picasa.rb +1 -8
  7. data/lib/picasa/api/album.rb +11 -11
  8. data/lib/picasa/api/base.rb +0 -3
  9. data/lib/picasa/api/comment.rb +6 -8
  10. data/lib/picasa/api/photo.rb +9 -9
  11. data/lib/picasa/api/tag.rb +6 -8
  12. data/lib/picasa/client.rb +2 -2
  13. data/lib/picasa/connection.rb +14 -51
  14. data/lib/picasa/exceptions.rb +1 -0
  15. data/lib/picasa/file.rb +8 -0
  16. data/lib/picasa/http.rb +28 -0
  17. data/lib/picasa/presenter/album.rb +15 -15
  18. data/lib/picasa/presenter/album_list.rb +10 -10
  19. data/lib/picasa/presenter/comment.rb +6 -6
  20. data/lib/picasa/presenter/comment_list.rb +10 -10
  21. data/lib/picasa/presenter/media.rb +5 -5
  22. data/lib/picasa/presenter/photo.rb +15 -15
  23. data/lib/picasa/presenter/tag.rb +3 -3
  24. data/lib/picasa/presenter/tag_list.rb +10 -10
  25. data/lib/picasa/utils.rb +11 -13
  26. data/lib/picasa/version.rb +1 -1
  27. data/picasa.gemspec +2 -1
  28. data/test/api/album_test.rb +163 -20
  29. data/test/api/comment_test.rb +95 -10
  30. data/test/api/photo_test.rb +27 -11
  31. data/test/api/tag_test.rb +84 -13
  32. data/test/cassettes/album-404.yml +52 -0
  33. data/test/cassettes/album-create.yml +107 -0
  34. data/test/cassettes/album-destroy.yml +55 -0
  35. data/test/cassettes/album-list.yml +85 -0
  36. data/test/cassettes/album-show.yml +123 -0
  37. data/test/cassettes/auth-failed.yml +50 -0
  38. data/test/cassettes/auth-success.yml +64 -0
  39. data/test/cassettes/comment-400.yml +56 -0
  40. data/test/cassettes/comment-create.yml +88 -0
  41. data/test/cassettes/comment-destroy.yml +53 -0
  42. data/test/cassettes/comment-list.yml +87 -0
  43. data/test/cassettes/photo-412.yml +58 -0
  44. data/test/cassettes/photo-create.yml +1908 -0
  45. data/test/cassettes/photo-destroy.yml +55 -0
  46. data/test/cassettes/tag-create.yml +85 -0
  47. data/test/cassettes/tag-destroy.yml +53 -0
  48. data/test/cassettes/tag-list.yml +79 -0
  49. data/test/client_test.rb +10 -10
  50. data/test/connection_test.rb +0 -35
  51. data/test/helper.rb +21 -7
  52. data/test/utils_test.rb +0 -6
  53. metadata +37 -40
  54. data/test/fixtures/album/album-create.txt +0 -21
  55. data/test/fixtures/album/album-list-with-tag.txt +0 -105
  56. data/test/fixtures/album/album-list.txt +0 -105
  57. data/test/fixtures/album/album-show-with-max-results.txt +0 -131
  58. data/test/fixtures/album/album-show-with-tag-and-many-photos.txt +0 -156
  59. data/test/fixtures/album/album-show-with-tag-and-one-photo.txt +0 -105
  60. data/test/fixtures/album/album-show.txt +0 -169
  61. data/test/fixtures/auth/success.txt +0 -14
  62. data/test/fixtures/comment/comment-list.txt +0 -65
  63. data/test/fixtures/exceptions/forbidden.txt +0 -12
  64. data/test/fixtures/exceptions/not_found.txt +0 -14
  65. data/test/fixtures/exceptions/precondition_failed.txt +0 -14
  66. data/test/fixtures/json.txt +0 -435
  67. data/test/fixtures/photo/photo-created.txt +0 -21
  68. data/test/fixtures/photo/photo-list-all-with-q.txt +0 -556
  69. data/test/fixtures/photo/photo-list-all.txt +0 -623
  70. data/test/fixtures/photo/photo-list-user.txt +0 -388
  71. data/test/fixtures/presenters/album_list.xml +0 -88
  72. data/test/fixtures/presenters/album_show.xml +0 -152
  73. data/test/fixtures/presenters/album_show_with_one_photo.xml +0 -88
  74. data/test/fixtures/presenters/comment_list.xml +0 -48
  75. data/test/fixtures/presenters/tag_list.xml +0 -51
  76. data/test/fixtures/tag/tag-list.txt +0 -68
  77. data/test/presenter/album_list_test.rb +0 -67
  78. data/test/presenter/album_test.rb +0 -189
  79. data/test/presenter/author_test.rb +0 -17
  80. data/test/presenter/base_test.rb +0 -50
  81. data/test/presenter/comment_list_test.rb +0 -67
  82. data/test/presenter/comment_test.rb +0 -56
  83. data/test/presenter/content_test.rb +0 -18
  84. data/test/presenter/link_test.rb +0 -21
  85. data/test/presenter/media_test.rb +0 -29
  86. data/test/presenter/photo_test.rb +0 -90
  87. data/test/presenter/tag_list_test.rb +0 -67
  88. data/test/presenter/tag_test.rb +0 -48
  89. data/test/presenter/thumbnail_test.rb +0 -24
data/lib/picasa/utils.rb CHANGED
@@ -4,23 +4,21 @@ require "cgi"
4
4
  module Picasa
5
5
  module Utils
6
6
  def safe_retrieve(hash, *keys)
7
+ result = retrieve(hash, keys)
8
+ if result.kind_of?(Hash) && result.has_key?('$t') && result.keys.size == 1
9
+ result['$t']
10
+ else
11
+ result
12
+ end
13
+ end
14
+
15
+ def retrieve(hash, keys)
7
16
  return if !hash.kind_of?(Hash) || !hash.has_key?(keys.first)
8
17
 
9
18
  if keys.size == 1
10
19
  hash[keys.first]
11
20
  elsif keys.size > 1
12
- Utils.safe_retrieve(hash[keys.first], *keys[1..-1])
13
- end
14
- end
15
-
16
- # Ported from activesupport gem
17
- def array_wrap(object)
18
- if object.nil?
19
- []
20
- elsif object.respond_to?(:to_ary)
21
- object.to_ary || [object]
22
- else
23
- [object]
21
+ Utils.retrieve(hash[keys.first], keys[1..-1])
24
22
  end
25
23
  end
26
24
 
@@ -47,6 +45,6 @@ module Picasa
47
45
  end.join("&")
48
46
  end
49
47
 
50
- module_function :safe_retrieve, :array_wrap, :map_to_integer, :map_to_boolean, :map_to_date, :inline_query
48
+ module_function :safe_retrieve, :retrieve, :map_to_integer, :map_to_boolean, :map_to_date, :inline_query
51
49
  end
52
50
  end
@@ -1,3 +1,3 @@
1
1
  module Picasa
2
- VERSION = "0.5.4"
2
+ VERSION = "0.6.0"
3
3
  end
data/picasa.gemspec CHANGED
@@ -15,8 +15,9 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Picasa::VERSION
17
17
 
18
- gem.add_dependency "multi_xml"
18
+ gem.add_dependency "httparty"
19
19
 
20
20
  gem.add_development_dependency "webmock"
21
21
  gem.add_development_dependency "mocha"
22
+ gem.add_development_dependency "vcr"
22
23
  end
@@ -3,44 +3,187 @@ require "helper"
3
3
 
4
4
  describe Picasa::API::Album do
5
5
  describe "#list" do
6
- it "gives correct parsed body fragment" do
7
- stub_request(:get, "https://picasaweb.google.com/data/feed/api/user/w.wnetrzak").to_return(fixture("album/album-list.txt"))
6
+ before do
7
+ VCR.use_cassette("album-list") do
8
+ @album_list = Picasa::API::Album.new(:user_id => "w.wnetrzak").list
9
+ end
10
+ end
11
+
12
+ it "has author name" do
13
+ assert_equal "Wojciech Wnętrzak", @album_list.author.name
14
+ end
15
+
16
+ it "has author uri" do
17
+ assert_equal "https://picasaweb.google.com/106136347770555028022", @album_list.author.uri
18
+ end
19
+
20
+ it "has links" do
21
+ assert_equal 4, @album_list.links.size
22
+ end
23
+
24
+ it "has title" do
25
+ assert_equal "106136347770555028022", @album_list.title
26
+ end
8
27
 
9
- album_list = Picasa::API::Album.new(:user_id => "w.wnetrzak").list
28
+ it "has updated" do
29
+ assert_equal "2012-11-01T04:47:09+00:00", @album_list.updated.to_s
30
+ end
31
+
32
+ it "has icon" do
33
+ expected = "https://lh3.googleusercontent.com/-6ezHc54U8x0/AAAAAAAAAAI/AAAAAAAAAAA/PBuxm7Ehn6E/s64-c/106136347770555028022.jpg"
34
+ assert_equal expected, @album_list.icon
35
+ end
36
+
37
+ it "has generator" do
38
+ assert_equal "Picasaweb", @album_list.generator
39
+ end
40
+
41
+ it "has total_results" do
42
+ assert_equal 1, @album_list.total_results
43
+ end
44
+
45
+ it "has start_index" do
46
+ assert_equal 1, @album_list.start_index
47
+ end
10
48
 
11
- assert_equal 2, album_list.total_results
49
+ it "has items_per_page" do
50
+ assert_equal 1000, @album_list.items_per_page
51
+ end
52
+
53
+ it "has user" do
54
+ assert_equal "106136347770555028022", @album_list.user
55
+ end
56
+
57
+ it "has nickname" do
58
+ assert_equal "Wojciech Wnętrzak", @album_list.nickname
59
+ end
60
+
61
+ it "has thumbnail" do
62
+ expected = "https://lh3.googleusercontent.com/-6ezHc54U8x0/AAAAAAAAAAI/AAAAAAAAAAA/PBuxm7Ehn6E/s64-c/106136347770555028022.jpg"
63
+ assert_equal expected, @album_list.thumbnail
64
+ end
65
+
66
+ it "has entries" do
67
+ assert_equal 1, @album_list.entries.size
12
68
  end
13
69
  end
14
70
 
15
71
  describe "#show" do
16
- it "gives correct parsed body fragment" do
17
- stub_request(:get, "https://picasaweb.google.com/data/feed/api/user/w.wnetrzak/albumid/5243667126168669553").to_return(fixture("album/album-show.txt"))
72
+ before do
73
+ VCR.use_cassette("album-show") do
74
+ @album = Picasa::API::Album.new(:user_id => "w.wnetrzak").show("5239555770355467953")
75
+ end
76
+ end
77
+
78
+ it "has author name" do
79
+ assert_equal "Wojciech Wnętrzak", @album.author.name
80
+ end
81
+
82
+ it "has author uri" do
83
+ assert_equal "https://picasaweb.google.com/106136347770555028022", @album.author.uri
84
+ end
85
+
86
+ it "has links" do
87
+ assert_equal 5, @album.links.size
88
+ end
89
+
90
+ it "has published" do
91
+ assert_nil @album.published
92
+ end
18
93
 
19
- album_show = Picasa::API::Album.new(:user_id => "w.wnetrzak").show("5243667126168669553")
94
+ it "has updated" do
95
+ assert_equal "2012-10-25T00:32:52+00:00", @album.updated.to_s
96
+ end
97
+
98
+ it "has title" do
99
+ assert_equal "test", @album.title
100
+ end
101
+
102
+ it "has summary" do
103
+ assert_nil @album.summary
104
+ end
105
+
106
+ it "has rights" do
107
+ assert_equal "public", @album.rights
108
+ end
109
+
110
+ it "has id" do
111
+ assert_equal "5239555770355467953", @album.id
112
+ end
20
113
 
21
- assert_equal "Wojciech Wnętrzak", album_show.author.name
114
+ it "has etag" do
115
+ assert_equal "W/\"D0YDQ3s-fyp7ImA9WhNSEU8.\"", @album.etag
116
+ end
117
+
118
+ it "has name" do
119
+ assert_equal "Test", @album.name
120
+ end
121
+
122
+ it "has location" do
123
+ assert_equal "gdzieś", @album.location
124
+ end
125
+
126
+ it "has access" do
127
+ assert_equal "public", @album.access
128
+ end
129
+
130
+ it "has timestamp" do
131
+ assert_equal "1219906800000", @album.timestamp
132
+ end
133
+
134
+ it "has numphotos" do
135
+ assert_equal 6, @album.numphotos
136
+ end
137
+
138
+ it "has user" do
139
+ assert_equal "106136347770555028022", @album.user
140
+ end
141
+
142
+ it "has nickname" do
143
+ assert_equal "Wojciech Wnętrzak", @album.nickname
144
+ end
145
+
146
+ it "has photo entries" do
147
+ assert_equal 6, @album.entries.size
148
+ end
149
+
150
+ it "has allow_prints" do
151
+ assert_equal true, @album.allow_prints
152
+ end
153
+
154
+ it "has allow_downloads" do
155
+ assert_equal true, @album.allow_downloads
22
156
  end
23
157
  end
24
158
 
25
- describe "#create" do
26
- it "gives correct parsed body fragment" do
27
- stub_request(:post, "https://www.google.com/accounts/ClientLogin").to_return(fixture("auth/success.txt"))
28
- stub_request(:post, "https://picasaweb.google.com/data/feed/api/user/w.wnetrzak@gmail.com").to_return(fixture("album/album-create.txt"))
159
+ describe "exceptions" do
160
+ it "raises NotFound exception when album does not exist" do
161
+ VCR.use_cassette("album-404") do
162
+ assert_raises Picasa::NotFoundError, "Invalid entity id: non-existing" do
163
+ Picasa::API::Album.new(:user_id => "w.wnetrzak").show("non-exisiting")
164
+ end
165
+ end
166
+ end
167
+ end
29
168
 
30
- album_show = Picasa::API::Album.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret").create(:title => "album")
169
+ describe "#create" do
170
+ it "creates album" do
171
+ VCR.use_cassette("album-create") do
172
+ attributes = {:title => "gem-test", :summary => "created from test suite", :access => "protected",
173
+ :location => "Gilowice", :keywords => "test"}
174
+ album = Picasa::API::Album.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).create(attributes)
31
175
 
32
- assert_equal "Wojciech Wnętrzak", album_show.author.name
176
+ assert_equal "gem-test", album.title
177
+ end
33
178
  end
34
179
  end
35
180
 
36
181
  describe "#destroy" do
37
182
  it "gives true when success" do
38
- stub_request(:post, "https://www.google.com/accounts/ClientLogin").to_return(fixture("auth/success.txt"))
39
- stub_request(:delete, "https://picasaweb.google.com/data/entry/api/user/w.wnetrzak@gmail.com/albumid/123").to_return(:status => 200, :body => "")
40
-
41
- result = Picasa::API::Album.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret").destroy("123")
42
-
43
- assert_equal true, result
183
+ VCR.use_cassette("album-destroy") do
184
+ result = Picasa::API::Album.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).destroy("5805920347758933777")
185
+ assert_equal true, result
186
+ end
44
187
  end
45
188
  end
46
189
  end
@@ -3,6 +3,12 @@ require "helper"
3
3
 
4
4
  describe Picasa::API::Comment do
5
5
  describe "#list" do
6
+ before do
7
+ VCR.use_cassette("comment-list") do
8
+ @comment_list = Picasa::API::Comment.new(:user_id => "w.wnetrzak").list(:album_id => "5239555770355467953")
9
+ end
10
+ end
11
+
6
12
  it "throws ArgumentError when photo_id provided without album_id" do
7
13
  comment = Picasa::API::Comment.new(:user_id => "w.wnetrzak")
8
14
 
@@ -11,16 +17,80 @@ describe Picasa::API::Comment do
11
17
  end
12
18
  end
13
19
 
14
- it "gives correct parsed body fragment" do
15
- stub_request(:get, "https://picasaweb.google.com/data/feed/api/user/w.wnetrzak?kind=comment").to_return(fixture("comment/comment-list.txt"))
20
+ it "has author name" do
21
+ assert_equal "Wojciech Wnętrzak", @comment_list.author.name
22
+ end
23
+
24
+ it "has author uri" do
25
+ assert_equal "https://picasaweb.google.com/106136347770555028022", @comment_list.author.uri
26
+ end
27
+
28
+ it "has links" do
29
+ assert_equal 5, @comment_list.links.size
30
+ end
31
+
32
+ it "has title" do
33
+ assert_equal "test", @comment_list.title
34
+ end
35
+
36
+ it "has updated" do
37
+ assert_equal "2012-10-25T00:32:51+00:00", @comment_list.updated.to_s
38
+ end
39
+
40
+ it "has icon" do
41
+ expected = "https://lh6.googleusercontent.com/-ZqXRf3HicvI/SLakNnjixrE/AAAAAAAAAkc/3EAZ0eF3-CQ/s160-c/Test.jpg"
42
+ assert_equal expected, @comment_list.icon
43
+ end
44
+
45
+ it "has generator" do
46
+ assert_equal "Picasaweb", @comment_list.generator
47
+ end
48
+
49
+ it "has total_results" do
50
+ assert_equal 1, @comment_list.total_results
51
+ end
52
+
53
+ it "has start_index" do
54
+ assert_equal 1, @comment_list.start_index
55
+ end
56
+
57
+ it "has items_per_page" do
58
+ assert_equal 500, @comment_list.items_per_page
59
+ end
60
+
61
+ it "has user" do
62
+ assert_equal "106136347770555028022", @comment_list.user
63
+ end
16
64
 
17
- comment_list = Picasa::API::Comment.new(:user_id => "w.wnetrzak").list
65
+ it "has nickname" do
66
+ assert_equal "Wojciech Wnętrzak", @comment_list.nickname
67
+ end
68
+
69
+ it "has entries" do
70
+ assert_equal 1, @comment_list.entries.size
71
+ end
18
72
 
19
- assert_equal 1, comment_list.entries.size
73
+ it "has content" do
74
+ assert_equal "beautiful place", @comment_list.entries.first.content
75
+ end
76
+
77
+ it "has id" do
78
+ expected = "z13fufdr3znxifia004cgjbgjkmwyr5ot4g-1351125171797000"
79
+ assert_equal expected, @comment_list.entries.first.id
20
80
  end
21
81
  end
22
82
 
23
83
  describe "#create" do
84
+ it "creates comment" do
85
+ VCR.use_cassette("comment-create") do
86
+ attributes = {:album_id => "5793892606777564353", :photo_id => "5806295577614146146", :content => "żółć"}
87
+
88
+ comment = Picasa::API::Comment.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).create(attributes)
89
+
90
+ assert_equal "żółć", comment.content
91
+ end
92
+ end
93
+
24
94
  it "raises ArgumentError when no album_id" do
25
95
  comment = Picasa::API::Comment.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret")
26
96
  assert_raises Picasa::ArgumentError, /album_id/ do
@@ -44,6 +114,17 @@ describe Picasa::API::Comment do
44
114
  end
45
115
 
46
116
  describe "#destroy" do
117
+ it "destroys comment" do
118
+ VCR.use_cassette("comment-destroy") do
119
+ comment_id = "z13aebo5hvi5gjtj004cgjbgjkmwyr5ot4g-1351896079590000"
120
+ attributes = {:album_id => "5793892606777564353", :photo_id => "5806295577614146146"}
121
+
122
+ result = Picasa::API::Comment.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).destroy(comment_id, attributes)
123
+
124
+ assert_equal true, result
125
+ end
126
+ end
127
+
47
128
  it "raises ArgumentError when no photo_id" do
48
129
  comment = Picasa::API::Comment.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret")
49
130
  assert_raises Picasa::ArgumentError, /photo_id/ do
@@ -57,14 +138,18 @@ describe Picasa::API::Comment do
57
138
  comment.destroy("wtf", :photo_id => "455")
58
139
  end
59
140
  end
141
+ end
60
142
 
61
- it "gives true when success" do
62
- stub_request(:post, "https://www.google.com/accounts/ClientLogin").to_return(fixture("auth/success.txt"))
63
- stub_request(:delete, "https://picasaweb.google.com/data/entry/api/user/w.wnetrzak@gmail.com/albumid/123/photoid/456/commentid/987").to_return(:status => 200, :body => "")
64
-
65
- result = Picasa::API::Comment.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret").destroy("987", :album_id => "123", :photo_id => "456")
143
+ describe "exceptions" do
144
+ it "raises BadRequest exception when bad comment id given" do
145
+ VCR.use_cassette("comment-400") do
146
+ comment_id = "13fufdr3znxifia004cgjbgjkmwyr5ot4g-1351125171797000"
147
+ attributes = {:album_id => "5793892606777564353", :photo_id => "5806295577614146146"}
66
148
 
67
- assert_equal true, result
149
+ assert_raises Picasa::BadRequestError, "Invalid entity id: non-existing" do
150
+ Picasa::API::Comment.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).destroy(comment_id, attributes)
151
+ end
152
+ end
68
153
  end
69
154
  end
70
155
  end
@@ -3,14 +3,14 @@ require "helper"
3
3
 
4
4
  describe Picasa::API::Photo do
5
5
  describe "#create" do
6
- it "gives correct parsed body fragment" do
7
- stub_request(:post, "https://www.google.com/accounts/ClientLogin").to_return(fixture("auth/success.txt"))
8
- stub_request(:post, "https://picasaweb.google.com/data/feed/api/user/w.wnetrzak@gmail.com/albumid/123").to_return(fixture("photo/photo-created.txt"))
6
+ it "creates photo" do
7
+ VCR.use_cassette("photo-create") do
8
+ attributes = {:file_path => image_path("lena.jpg"), :title => "Lena"}
9
9
 
10
- photo = Picasa::API::Photo.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret")
11
- photo_create = photo.create("123", :title => "test", :binary => "binary", :content_type => "image/png")
10
+ photo = Picasa::API::Photo.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).create("5793892606777564353", attributes)
12
11
 
13
- assert_equal 27040, photo_create.size
12
+ assert_equal "Lena", photo.title
13
+ end
14
14
  end
15
15
 
16
16
  it "raises ArgumentError when no title" do
@@ -33,14 +33,30 @@ describe Picasa::API::Photo do
33
33
  photo.create("123", :title => "test", :binary => "binary")
34
34
  end
35
35
  end
36
+ end
36
37
 
37
- it "guesses required attributes from file path" do
38
- stub_request(:post, "https://www.google.com/accounts/ClientLogin").to_return(fixture("auth/success.txt"))
39
- stub_request(:post, "https://picasaweb.google.com/data/feed/api/user/w.wnetrzak@gmail.com/albumid/123").to_return(fixture("photo/photo-created.txt"))
38
+ describe "#destroy" do
39
+ it "destroys photo" do
40
+ VCR.use_cassette("photo-destroy") do
41
+ album_id = "5793892606777564353"
42
+ photo_id = "5806295577614146146"
43
+ result = Picasa::API::Photo.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).destroy(album_id, photo_id)
40
44
 
41
- photo = Picasa::API::Photo.new(:user_id => "w.wnetrzak@gmail.com", :password => "secret")
45
+ assert_equal true, result
46
+ end
47
+ end
48
+ end
42
49
 
43
- assert photo.create("123", :file_path => image_path("lena.jpg"))
50
+ describe "exceptions" do
51
+ it "raises PreconditionFailedError exception when photo not fresh" do
52
+ VCR.use_cassette("photo-412") do
53
+ album_id = "5793892606777564353"
54
+ photo_id = "5806295577614146146"
55
+
56
+ assert_raises Picasa::PreconditionFailedError, "Mismatch: etags = [Not-Fresh], version = [8]" do
57
+ Picasa::API::Photo.new(:user_id => "w.wnetrzak@gmail.com", :authorization_header => AuthHeader).destroy(album_id, photo_id, :etag => "Not-Fresh")
58
+ end
59
+ end
44
60
  end
45
61
  end
46
62
  end