Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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;
            }
        }