public void TestUpdateTerms() { var unitOfWorkProvider = CreateMockUnitOfWorkProvider(); var resourceRepository = new MockResourceRepository(unitOfWorkProvider); var termList = new List <TermData> { new TermData // create term and assign category { XmlId = "null", Position = 0, Text = "new-term", TermCategoryName = "category" }, new TermData // update term and create category { XmlId = "id-1", Position = 0, Text = "updated-term", TermCategoryName = "null" }, new TermData // term and category already exists { XmlId = "id-2", Position = 0, Text = "term", TermCategoryName = "category" } }; var bookData = new BookData { Terms = termList }; var subtask = new UpdateTermsSubtask(resourceRepository); subtask.UpdateTerms(41, bookData); var createdTerms = resourceRepository.CreatedObjects.OfType <Term>().ToList(); var createdCategories = resourceRepository.CreatedObjects.OfType <TermCategory>().ToList(); var updatedTerms = resourceRepository.UpdatedObjects.OfType <Term>().ToList(); var updatedCategories = resourceRepository.UpdatedObjects.OfType <TermCategory>().ToList(); Assert.AreEqual(0, updatedCategories.Count); Assert.AreEqual(1, createdCategories.Count); Assert.AreEqual(1, updatedTerms.Count); Assert.AreEqual(1, createdTerms.Count); Assert.AreEqual("null", createdCategories.First().Name); Assert.AreEqual("new-term", createdTerms.First().Text); Assert.AreEqual("updated-term", updatedTerms.First().Text); }
protected override void ExecuteWorkImplementation() { m_projectId = m_nullableProjectId ?? throw new InvalidOperationException("Required ProjectId wasn't set in ResourceSessionDirector"); // Updating Project data is not required, because data has been already updated m_importedResourceVersionIds = new List <long>(); m_bookVersionId = new UpdateBookVersionSubtask(m_resourceRepository).UpdateBookVersion(m_projectId, m_userId, m_bookData); var updateEditionNoteSubtask = new UpdateEditionNoteSubtask(m_resourceRepository); var editionNoteVersionId = updateEditionNoteSubtask.UpdateEditionNote(m_projectId, m_bookVersionId, m_userId, m_bookData); if (editionNoteVersionId != null) { m_importedResourceVersionIds.Add(editionNoteVersionId.Value); } //TODO update: transformations new UpdateAuthorsSubtask(m_projectRepository, m_personRepository).UpdateAuthors(m_projectId, m_bookData); new UpdateResponsiblePersonSubtask(m_projectRepository, m_personRepository).UpdateResponsiblePersonList(m_projectId, m_bookData); var updateMetadataSubtask = new UpdateMetadataSubtask(m_metadataRepository); updateMetadataSubtask.UpdateMetadata(m_projectId, m_userId, m_bookData); // Categories are not updated from import (XMD doesn't contain detailed categorization) //new UpdateCategoriesSubtask(m_categoryRepository).UpdateCategoryList(m_projectId, m_bookData); new UpdateLiteraryKindsSubtask(m_catalogValueRepository, m_metadataRepository).UpdateLiteraryKinds(m_projectId, m_bookData); new UpdateLiteraryGenresSubtask(m_catalogValueRepository, m_metadataRepository).UpdateLiteraryGenres(m_projectId, m_bookData); new UpdateLiteraryOriginalsSubtask(m_catalogValueRepository, m_metadataRepository).UpdateLiteraryOriginals(m_projectId, m_bookData); new UpdateKeywordsSubtask(m_projectRepository, m_catalogValueRepository).UpdateKeywords(m_projectId, m_bookData); var updateTermsSubtask = new UpdateTermsSubtask(m_resourceRepository); updateTermsSubtask.UpdateTerms(m_projectId, m_bookData); var updatePagesSubtask = new UpdatePagesSubtask(m_resourceRepository); updatePagesSubtask.UpdatePages(m_projectId, m_bookVersionId, m_userId, m_bookData, updateTermsSubtask.ResultTermCache); m_importedResourceVersionIds.AddRange(updatePagesSubtask.ImportedResourceVersionIds); var updateChaptersSubtask = new UpdateChaptersSubtask(m_resourceRepository); updateChaptersSubtask.UpdateChapters(m_projectId, m_userId, m_bookData, updatePagesSubtask.ResultPageResourceList); m_importedResourceVersionIds.AddRange(updateChaptersSubtask.ImportedResourceVersionIds); var updateHeadwordsSubtask = new UpdateHeadwordsSubtask(m_resourceRepository); updateHeadwordsSubtask.UpdateHeadwords(m_projectId, m_bookVersionId, m_userId, m_bookData, updatePagesSubtask.ResultPageResourceList); m_importedResourceVersionIds.AddRange(updateHeadwordsSubtask.ImportedResourceVersionIds); var updateTracksSubtask = new UpdateTracksSubtask(m_resourceRepository); updateTracksSubtask.UpdateTracks(m_projectId, m_userId, m_bookData); updateTracksSubtask.UpdateFullBookTracks(m_projectId, m_userId, m_bookData); m_importedResourceVersionIds.AddRange(updateTracksSubtask.ImportedResourceVersionIds); new UpdateHistoryLogSubtask(m_projectRepository).UpdateHistoryLog(m_projectId, m_userId, m_message, m_bookData); }