using DeepDrftPublic.Seo; namespace DeepDrftTests; /// /// Unit tests for — the pure environment-branch composition of the robots.txt body /// (Phase 23 wave 23.1). The gate (Production vs. anything-else) is the load-bearing branch: Production /// allows + points at the sitemap and disallows the non-page routes; every non-production environment is a /// closed door with no sitemap pointer (Invariant E1). /// [TestFixture] public class RobotsTxtTests { private const string BaseUrl = "https://deepdrft.com"; [Test] public void Build_Production_AllowsAndPointsAtSitemap() { var body = RobotsTxt.Build(isProduction: true, BaseUrl); Assert.Multiple(() => { Assert.That(body, Does.Contain("User-agent: *")); Assert.That(body, Does.Contain("Allow: /")); Assert.That(body, Does.Contain("Sitemap: https://deepdrft.com/sitemap.xml")); }); } [Test] public void Build_Production_DisallowsFramePlayerAndApi() { var body = RobotsTxt.Build(isProduction: true, BaseUrl); Assert.Multiple(() => { Assert.That(body, Does.Contain("Disallow: /FramePlayer")); Assert.That(body, Does.Contain("Disallow: /api/")); }); } [Test] public void Build_NonProduction_DisallowsEverythingWithNoSitemapPointer() { var body = RobotsTxt.Build(isProduction: false, BaseUrl); Assert.Multiple(() => { Assert.That(body, Does.Contain("User-agent: *")); Assert.That(body, Does.Contain("Disallow: /")); Assert.That(body, Does.Not.Contain("Allow:")); Assert.That(body, Does.Not.Contain("Sitemap:")); }); } [Test] public void Build_Production_TrimsTrailingSlashOnBaseUrl() { var body = RobotsTxt.Build(isProduction: true, "https://deepdrft.com/"); Assert.That(body, Does.Contain("Sitemap: https://deepdrft.com/sitemap.xml")); } }