private static async Task GenerateXml(StringBuilder output, GetSiteMapQueryResult <SiteMap> result, IOptions <CampaignConfiguration> configuration)
        {
            using var xml = XmlWriter.Create(output, new XmlWriterSettings { Indent = true, Async = true });
            await xml.WriteStartDocumentAsync();

            xml.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");

            var baseUrl = configuration.Value.OuterApi.BaseUrl;

            foreach (var url in result.Page.Content.Urls)
            {
                xml.WriteStartElement("url");

                xml.WriteElementString("loc",
                                       string.Compare(url.PageType, "hub", StringComparison.OrdinalIgnoreCase) == 0
                        ? $"{baseUrl}{url.Slug}"
                        : $"{baseUrl}{url.Hub}/{url.Slug}");

                await xml.WriteEndElementAsync();
            }

            await xml.WriteEndElementAsync();

            await xml.FlushAsync();
        }
Exemplo n.º 2
0
        public async Task The_Site_Map_Is_Returned(
            GetSiteMapQueryResult <SiteMap> mediatorResult, [Frozen] Mock <IMediator> mockMediator,
            [Greedy] HomeController controller)
        {
            mockMediator.Setup(o => o.Send(It.IsAny <GetSiteMapQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var controllerResult = await controller.SiteMap() as ContentResult;

            controllerResult.Should().NotBeNull();
            controllerResult.ContentType.Should().Be("application/xml");
            controllerResult.Content.Should().NotBeNullOrWhiteSpace();
        }
        public async Task Then_The_Site_Map_Is_Returned(
            GetSiteMapQueryResult mediatorResult,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] SiteMapController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(It.IsAny <GetSiteMapQuery>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var controllerResult = await controller.GetFullSiteMapAsync(CancellationToken.None) as OkObjectResult;

            var actualResult = controllerResult.Value as GetSiteMapResponse;

            Assert.IsNotNull(actualResult);
            actualResult.Map.MainContent.Pages.Should().NotBeNull();
        }