Exemple #1
0
        public void ShouldAssignExistingTagIfItIsADuplicate()
        {
            var webpage = new BasicMappedWebpage();

            webpage.Tags.Should().HaveCount(0);
            A.CallTo(() => _getExistingTag.GetTag("test")).Returns(null);

            _sut.SetTags(_tags,
                         webpage);

            webpage.Tags.Should().HaveCount(1);
            webpage.Tags.ElementAt(0).Name.Should().Be("test");
        }
Exemple #2
0
        public void SetTags(List <string> taglist, Document document)
        {
            var tagsToAdd =
                taglist.Where(
                    s => !document.Tags.Select(tag => tag.Name).Contains(s, StringComparer.InvariantCultureIgnoreCase))
                .ToList();
            var tagsToRemove =
                document.Tags.Where(
                    tag => !taglist.Contains(tag.Name, StringComparer.InvariantCultureIgnoreCase)).ToList();

            foreach (var item in tagsToAdd)
            {
                var tag   = _getExistingTag.GetTag(item);
                var isNew = tag == null;
                if (isNew)
                {
                    tag = new Tag {
                        Name = item
                    };
                    _tagRepository.Add(tag);
                }
                if (!document.Tags.Contains(tag))
                {
                    document.Tags.Add(tag);
                }

                if (!tag.Documents.Contains(document))
                {
                    tag.Documents.Add(document);
                }
                _tagRepository.Update(tag);
            }

            foreach (var tag in tagsToRemove)
            {
                document.Tags.Remove(tag);
                tag.Documents.Remove(document);
                _tagRepository.Update(tag);
            }
        }