using FluentAssertions;
using SatelliteProvider.Common.Configs;
using SatelliteProvider.Services.TileDownloader;

namespace SatelliteProvider.Tests;

public class UavTileFilePathTests
{
    [Theory]
    [InlineData("./tiles", 18, 76800, 50331)]
    [InlineData("/var/lib/sat/tiles", 16, 12345, 67890)]
    public void BuildUavTileFilePath_MatchesContract(string root, int zoom, int x, int y)
    {
        // Arrange
        var storage = new StorageConfig { TilesDirectory = root };

        // Act
        var path = UavTileUploadHandler.BuildUavTileFilePath(storage, zoom, x, y);

        // Assert
        var expected = Path.Combine(root, "uav", zoom.ToString(), x.ToString(), y + ".jpg");
        path.Should().Be(expected,
            "UAV file paths follow `./tiles/uav/{zoom}/{x}/{y}.jpg` per `uav-tile-upload.md` v1.0.0");
    }
}
