private bool IsChapterChanged(ChapterResource dbChapter, BookContentItemData bookContentItem, long newPageResourceResourceId, long?newParentResourceId) { return(bookContentItem.ItemOrder != dbChapter.Position || newPageResourceResourceId != dbChapter.ResourceBeginningPage.Id || newParentResourceId != dbChapter.ParentResource?.Id || bookContentItem.Text != dbChapter.Name); }
public void TestUpdateChapters() { var unitOfWorkProvider = CreateMockUnitOfWorkProvider(); var resourceRepository = new MockResourceRepository(unitOfWorkProvider); var contentItem1 = new BookContentItemData { Text = "Chapter 40", ItemOrder = 2, Page = new BookPageData { Text = "40r", Position = 1, XmlId = "new-xml-40-r" }, SubContentItems = new List <BookContentItemData>() }; var contentItem2 = new BookContentItemData { Text = "Chapter 41", ItemOrder = 1, Page = new BookPageData { Text = "40v", Position = 2, XmlId = "new-xml-40-v" }, SubContentItems = new List <BookContentItemData>() }; contentItem2.SubContentItems.Add(contentItem1); var bookData = new BookData { BookContentItems = new List <BookContentItemData> { contentItem2 } }; var subtask = new UpdateChaptersSubtask(resourceRepository); var pageResources = resourceRepository.GetProjectLatestPages(0).ToList(); subtask.UpdateChapters(41, 2, bookData, pageResources); var createdChapters = resourceRepository.CreatedObjects.OfType <ChapterResource>().ToList(); var updatedResources = resourceRepository.UpdatedObjects.OfType <Resource>().ToList(); Assert.AreEqual(2, createdChapters.Count); Assert.AreEqual(1, updatedResources.Count); var firstChapter = createdChapters.First(x => x.Name == "Chapter 40"); var secondChapter = createdChapters.First(x => x.Name == "Chapter 41"); var deletedChapter = updatedResources.First(); Assert.AreEqual(2, firstChapter.Position); Assert.AreEqual(1, secondChapter.Position); Assert.IsTrue(deletedChapter.IsRemoved); Assert.IsNotNull(firstChapter.ParentResource); Assert.IsNull(secondChapter.ParentResource); Assert.AreEqual(90, firstChapter.ResourceBeginningPage.Id); Assert.AreEqual(80, secondChapter.ResourceBeginningPage.Id); }