public void Book_UpdateMetadata_NotEqual_PendingUpdatesFound() { // Setup var book = CreateBook(new BookModel() { Features = new string[] { "talkingBook" } }); book.Model.MarkAsDatabaseVersion(); var metaData = new Bloom.Book.BookMetaData(); metaData.Features = new string[] { "talkingBook", "talkingBook:en" }; // Test book.UpdateMetadataIfNeeded(metaData); UpdateOperation pendingUpdates = book.Model.GetPendingUpdates(); // Verification var updateDict = pendingUpdates._updatedFieldValues; Assert.IsTrue(updateDict.Any(), "PendingUpdates.Any()"); var expectedResult = new Dictionary <string, string>(); expectedResult.Add("updateSource", "\"bloomHarvester\""); // This key should be present so Parse knows it's not a BloomDesktop upload expectedResult.Add("features", "[\"talkingBook\",\"talkingBook:en\"]"); CollectionAssert.AreEquivalent(updateDict, expectedResult); }
/// <summary> /// Modifies the book with newer metadata /// </summary> /// <param name="metaData">The new metadata to update with</param> internal void UpdateMetadataIfNeeded(Bloom.Book.BookMetaData metaData) { if (metaData == null) { // Don't bother trying to change anything if the new metadata object is null return; } if ((Model.Features == null && metaData.Features != null) || !Model.Features.SequenceEqual(metaData.Features)) { Model.Features = metaData.Features; } if (metaData.BrandingProjectName != Model.BrandingProjectName) { Model.BrandingProjectName = metaData.BrandingProjectName; } }