package org.springframework.social.flickr.connect;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.POST;
import static org.springframework.social.test.client.RequestMatchers.method;
import static org.springframework.social.test.client.RequestMatchers.requestTo;
import static org.springframework.social.test.client.ResponseCreators.withResponse;
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.social.flickr.api.Comment;
import org.springframework.social.flickr.api.Comments;
import org.springframework.social.flickr.api.ContentTypeEnum;
import org.springframework.social.flickr.api.ExtrasConstant;
import org.springframework.social.flickr.api.LicenseEnum;
import org.springframework.social.flickr.api.Licenses;
import org.springframework.social.flickr.api.Note;
import org.springframework.social.flickr.api.PermissionEnum;
import org.springframework.social.flickr.api.Perms;
import org.springframework.social.flickr.api.Photo;
import org.springframework.social.flickr.api.PhotoDetail;
import org.springframework.social.flickr.api.PhotoId;
import org.springframework.social.flickr.api.Photos;
import org.springframework.social.flickr.api.RotateEnum;
import org.springframework.social.flickr.api.SafetyLevelEnum;
import org.springframework.social.flickr.api.Sizes;
public class PhotoTemplateTest extends AbstractFlickrApiTest{
@Test
public void addTagsTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.addTags&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
String[] tags ={"tag"};
boolean result = flickr.photoOperations().addTags("id", tags);
assertStat(result);
}
@Test
public void removeTagsTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.removeTag&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result = flickr.photoOperations().removeTag("23");
assertStat(result);
}
@Test
public void deleteTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.delete&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result = flickr.photoOperations().delete("id");
assertStat(result);
}
@Test
public void getRecentTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?per_page=3&page=2&extras=date_upload%2Cowner_name&method=flickr.photos.getRecent&format=json&nojsoncallback=1"))
.andExpect(method(GET))
.andRespond(withResponse(jsonResource("recent"), responseHeaders));
String extras [] = {ExtrasConstant.DATE_UPLOAD,ExtrasConstant.OWNER_NAME};
Photos photos = flickr.photoOperations().getRecent("3", "2",extras );
assertPhotos(photos);
}
@Test
public void getFavoriteTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?per_page=3&page=2&photo_id=2679305152&method=flickr.photos.getFavorites&format=json&nojsoncallback=1"))
.andExpect(method(GET))
.andRespond(withResponse(jsonResource("favorite"), responseHeaders));
Photo photo = flickr.photoOperations().getFavorites("3", "2","2679305152" );
assertPersonList(photo);
}
@Test
public void getInfoTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?photo_id=23&method=flickr.photos.getInfo&format=json&nojsoncallback=1"))
.andExpect(method(GET))
.andRespond(withResponse(jsonResource("photodetail"), responseHeaders));
PhotoDetail photoDetail = flickr.photoOperations().getInfo("23");
assertPhotoDetail(photoDetail);
}
@Test
public void getSizesTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?photo_id=23&method=flickr.photos.getSizes&format=json&nojsoncallback=1"))
.andExpect(method(GET))
.andRespond(withResponse(jsonResource("sizes"), responseHeaders));
Sizes sizes = flickr.photoOperations().getSizes("23");
assertPhotoSizes(sizes);
}
@Test
public void getPermsTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?photo_id=23&method=flickr.photos.getPerms&format=json&nojsoncallback=1"))
.andExpect(method(GET))
.andRespond(withResponse(jsonResource("perms"), responseHeaders));
Perms perms= flickr.photoOperations().getPerms("23");
assertPermission(perms);
}
@Test
public void setSafetyLevelTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.setSafetyLevel&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result= flickr.photoOperations().setSafetyLevel("23", SafetyLevelEnum.MODERATE);
assertStat(result);
}
@Test
public void setPermsTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.setPerms&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("photoid"), responseHeaders));
Perms perms = new Perms();
perms.setId("23");
perms.setIsfamily(true);
perms.setIsfriend(true);
perms.setIspublic(true);
perms.setPermaddmeta(PermissionEnum.CONTACTS);
perms.setPermcomment(PermissionEnum.CONTACTS);
PhotoId photoid= flickr.photoOperations().setPerms(perms);
assertPhotoId(photoid);
}
@Test
public void setContentTypeTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.setContentType&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result= flickr.photoOperations().setContentType("23", ContentTypeEnum.SCREENSHORT);
assertStat(result);
}
@Test
public void setMetaTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.setMeta&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result= flickr.photoOperations().setMeta("23", "title","desc");
assertStat(result);
}
//For photo comments
@Test
public void addCommentTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.comments.addComment&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("comment"), responseHeaders));
Comment comment = flickr.photoCommentOperations().addComment("23", "commentText");
assertComment(comment);
}
@Test
public void deleteCommentTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.comments.deleteComment&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result= flickr.photoCommentOperations().deleteComment("commentID");
assertStat(result);
}
@Test
public void editCommentTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.comments.editComment&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result= flickr.photoCommentOperations().editComment("commentID","commenTtext");
assertStat(result);
}
@Test
public void getCommentListTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.comments.getList&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("comments"), responseHeaders));
Comments comments= flickr.photoCommentOperations().getList("23", null, null);
assertComments(comments);
}
//Photo License
@Test
public void getLicenseInfoTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.licenses.getInfo&format=json&nojsoncallback=1"))
.andExpect(method(GET))
.andRespond(withResponse(jsonResource("licenses"), responseHeaders));
Licenses licenses= flickr.photoLicenseOperations().getInfo();
assertLicense(licenses);
}
@Test
public void setLicenseTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.licenses.setLicense&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result= flickr.photoLicenseOperations().setLicense("23", LicenseEnum.AllRightsReserved);
assertStat(result);
}
//Photo Note
@Test
public void addNoteTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.notes.add&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("note"), responseHeaders));
Note note = new Note();
note.set_content("test");
note.setH(2);
String id= flickr.photoNoteOperations().add("23",note );
assertNoteId(id);
}
@Test
public void deleteNoteTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.notes.delete&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
boolean result = flickr.photoNoteOperations().delete("23");
assertStat(result);
}
@Test
public void editNoteTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.notes.edit&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("stat"), responseHeaders));
Note note = new Note();
note.set_content("test");
note.setH(2);
boolean result = flickr.photoNoteOperations().edit("23",note);
assertStat(result);
}
//Photo Rotation
@Test
public void rotateTest(){
mockServer.expect(requestTo("http://api.flickr.com/services/rest/?method=flickr.photos.transform.rotate&format=json&nojsoncallback=1"))
.andExpect(method(POST))
.andRespond(withResponse(jsonResource("photoid"), responseHeaders));
PhotoId photoid= flickr.photoOperations().rotate("23", RotateEnum.NINETY);
assertPhotoId(photoid);
}
private void assertNoteId(String id) {
Assert.assertEquals("72157629917179921", id);
}
private void assertLicense(Licenses licenses) {
Assert.assertEquals(9, licenses.getLicense().size());
}
private void assertComments(Comments comments) {
Assert.assertEquals(2, comments.getComment().size());
}
private void assertComment(Comment comment) {
Assert.assertEquals("73470061-6955318342-72157629916928349", comment.getId());
}
private void assertPhotoId(PhotoId photoid) {
Assert.assertEquals("1e77a29be3", photoid.getSecret());
}
private void assertStat(boolean result){
Assert.assertEquals(true, result);
}
private void assertPermission(Perms perms) {
Assert.assertEquals("6955318342", perms.getId());
}
private void assertPhotoSizes(Sizes sizes) {
Assert.assertEquals(9, sizes.getSize().size());
}
private void assertPhotos(Photos photos){
Assert.assertEquals(3, photos.getPhoto().size());
}
private void assertPersonList(Photo photo) {
Assert.assertEquals(10, photo.getPerson2().size());
}
private void assertPhotoDetail(PhotoDetail photoDetail) {
Assert.assertEquals("6955318342", photoDetail.getId());
}
}