using TourMonitor.Web; namespace TourMonitor.Tests; public class CalendarPageTests { [Fact] public void Hotel_RendersMonthsWithPricesAndEmptyCells() { var start = new DateTime(2026, 10, 5); var html = CalendarPage.Hotel( "Sunrise Tucana Resort", 9099454, new[] { ("2026-10-05", 475_447, (int?)null, "/package_details/offer-1", 410_000, 550_000), ("2026-10-06", 460_000, (int?)null, "/package_details/offer-2", 460_000, 460_000), }, start, windowDays: 3, baseUrl: "http://192.168.1.6:8084"); Assert.Contains("Sunrise Tucana Resort", html); Assert.Contains("Октябрь", html); Assert.Contains("475\u00A0447", html); Assert.Contains("460\u00A0000", html); Assert.Contains("
", html); Assert.Contains("Цена из последнего сканирования", html); Assert.Contains("410\u00A0000–550\u00A0000", html); } [Fact] public void Hotel_ShowsDeltaArrows_WithPercent() { var html = CalendarPage.Hotel( "Sunrise Tucana Resort", 9099454, new[] { ("2026-10-05", 475_447, (int?)540_000, "", 0, 0), // дешевле ("2026-10-06", 460_000, (int?)450_000, "", 0, 0), // дороже ("2026-10-07", 500_000, (int?)500_000, "", 0, 0), // без изменений }, new DateTime(2026, 10, 5), windowDays: 3, baseUrl: ""); Assert.Contains("↓ 12%", html); Assert.Contains("↑ 2%", html); Assert.Contains("=", html); } [Fact] public void Hotel_NoArrow_WhenNoPreviousScan() { var html = CalendarPage.Hotel( "Sunrise Tucana Resort", 9099454, new[] { ("2026-10-05", 475_447, (int?)null, "", 0, 0) }, new DateTime(2026, 10, 5), windowDays: 1, baseUrl: ""); Assert.DoesNotContain("475\u00A0447", html); Assert.Contains("460\u00A0000", html); } [Fact] public void Hotel_ShowsCheapestRoomRange_InCellsAndHint() { var html = CalendarPage.Hotel( "Sunrise Tucana Resort", 9099454, new[] { ("2026-10-05", 475_447, (int?)null, "/package_details/offer-1", 290_494, 574_875), ("2026-10-06", 460_000, (int?)null, "", 100_000, 130_000), }, new DateTime(2026, 10, 5), windowDays: 2, baseUrl: ""); Assert.Contains("290\u00A0494–574\u00A0875", html); Assert.Contains("100\u00A0000–130\u00A0000", html); } [Fact] public void Index_ListsHotelsWithLinks() { var html = CalendarPage.Index( "Мониторинг туров", new[] { (9099454, "Sunrise Tucana Resort"), (9151153, "Posh Club By Sunrise Tucana Resort") }, "http://192.168.1.6:8084"); Assert.Contains("Sunrise Tucana Resort", html); Assert.Contains("Posh Club By Sunrise Tucana Resort", html); Assert.Contains("/prices/9099454", html); Assert.Contains("/prices/9151153", html); } }