public void UploadBook_FillsInMetaData()
{
var bookFolder = MakeBook("My incomplete book", "", "", "data");
File.WriteAllText(Path.Combine(bookFolder, "thumbnail.png"), @"this should be a binary picture");
Login();
string s3Id = _transfer.UploadBook(bookFolder, new NullProgress());
_transfer.WaitUntilS3DataIsOnServer(BloomS3Client.UnitTestBucketName, bookFolder);
var dest = _workFolderPath.CombineForPath("output");
Directory.CreateDirectory(dest);
var newBookFolder = _transfer.DownloadBook(BloomS3Client.UnitTestBucketName, s3Id, dest);
var metadata = BookMetaData.FromString(File.ReadAllText(Path.Combine(newBookFolder, BookInfo.MetaDataFileName)));
Assert.That(string.IsNullOrEmpty(metadata.Id), Is.False, "should have filled in missing ID");
Assert.That(metadata.Uploader.ObjectId, Is.EqualTo(_parseClient.UserId), "should have set uploader to id of logged-in user");
Assert.That(metadata.DownloadSource, Is.EqualTo(s3Id));
var record = _parseClient.GetSingleBookRecord(metadata.Id);
string baseUrl = record.baseUrl;
Assert.That(baseUrl.StartsWith("https://s3.amazonaws.com/BloomLibraryBooks"), "baseUrl should start with s3 prefix");
string order = record.bookOrder;
Assert.That(order, Is.StringContaining("My+incomplete+book.BloomBookOrder"), "order url should include correct file name");
Assert.That(order.StartsWith(BloomLinkArgs.kBloomUrlPrefix + BloomLinkArgs.kOrderFile + "="), "order url should start with Bloom URL prefix");
Assert.That(File.Exists(Path.Combine(newBookFolder, "My incomplete book.BloomBookOrder")), "Should have created, uploaded and downloaded the book order");
}