Ejemplo n.º 1
0
        public static DraftSuggestions GetTagSuggestion(
            Guid contentId,
            IEnumerable <string> highlights,
            IEnumerable <string> existingTags)
        {
            var matchingTags    = ExtractTagSuggestion(highlights);
            var draftSuggestion = new DraftSuggestions(existingTags)
            {
                Id = contentId
            };

            draftSuggestion.SetTagSuggestions(matchingTags);
            return(draftSuggestion);
        }
        public async Task GivenExistingNews_WhenGettingRelatedSuggestion_ThenReturnsCollection()
        {
            // Arrange
            var suggestedDraft   = CreateDraftEntity();
            var draftSuggestions = new DraftSuggestions
            {
                Id     = Guid.NewGuid(),
                Tags   = new [] { "tag1", "tag2" },
                Drafts = new[]
                {
                    new Draft
                    {
                        Id        = suggestedDraft.Id,
                        CreatedAt = suggestedDraft.CreatedAt,
                    }
                }
            };

            string urlRequest = Endpoint.Replace("{id}", draftSuggestions.Id.ToString());
            var    endpoint   = GetUriWithQueryString(urlRequest, ("take", 10));

            Factory.DraftSuggestionsRepositoryMock.Setup(m => m.Get(draftSuggestions.Id)).Returns(Task.FromResult(draftSuggestions));
            Factory.DraftRepositoryMock.Setup(m => m.Get(suggestedDraft.Id)).Returns(Task.FromResult(suggestedDraft));

            // Act
            var response = await Client.GetAsync(endpoint.PathAndQuery);

            // Assert
            response.ShouldBeSuccessful();
            var envelope = await response.ShouldBeOfType <DraftSuggestionsDto>();

            envelope.ShouldBeSuccessful();

            envelope.Payload.Id.Should().Be(draftSuggestions.Id);
            envelope.Payload.Tags.Should().BeEquivalentTo(draftSuggestions.Tags);
            envelope.Payload.Drafts.Should().HaveCount(draftSuggestions.Drafts.Count());

            var suggestion = envelope.Payload.Drafts.First();

            suggestion.Id.Should().Be(suggestedDraft.Id);
            suggestion.Title.Should().Be(suggestedDraft.Title);
            suggestion.Url.Should().Be(suggestedDraft.Uri);
        }