Just released another version of LINQ.Flickr. The release is out with several bug fixes, code optimization, new feature and overall mocking support. I have used Typemock for the unit test of the product. In coming posts, I will show how powerful mock can be in faking routine like upload photo. But, you can dig it right away, if you go by the release page and download a copy of the product. Truly speaking, testing was never fun for serviced API till mock engine is at my hand.
The release is not all about re-factoring and mocking , but now you can query, add , delete photo comment , query people and popular tags and do more that are mentioned in the release page.
Now, doing complex query is even more fun. lets take this.
var query = from photo in _context.Photos
where photo.Id == photoId && photo.PhotoSize == PhotoSize.Medium
select new FlickrPhoto
Id = photo.Id,
Description = photo.Description,
Title = photo.Title,
Url = photo.Url,
User = photo.User,
Comments = ((from comment in _context.Photos.Comments
where comment.PhotoId == photoId
select new PhotoComment
Author = comment.Author,
AuthorName = comment.AuthorName,
PermaLink = comment.PermaLink,
PhotoId = comment.PhotoId,
Text = comment.Text,
Tags = photo.PhotoTags.Select(tag => tag.Title).ToArray<string>()
FlickrPhoto newPhoto = query.Single();
The query is about getting the photo info for a specific photo id and I have now combined it with tags, comments to make it more useful. Also, few posts back, I have mentioned about using a RestToCollecitonBuilder to build an object on REST response, it is in action in this release as well.
Finally, don't forget the link and it's www.codeplex.com/linqflickr . In the end, this project is not about querying Flickr and getting photo out of it, but it could be a great learning tool for Mocking, for building custom LINQ provider (with LinqExtender) and other things that you might need to know like, how to define a service endpoint by interface.