using Elfisa.Avalonia.ViewModels;
using Xunit;

namespace Elfisa.Tests;

// Логика дрилдаула прайса: извлечение дозировки (МГ) и базового наименования.
public class PriceLogicTests
{
    [Theory]
    [InlineData("Нурофен таб. 200мг №10", "200мг")]
    [InlineData("Парацетамол 500 мг таб", "500 мг")]
    [InlineData("Витамин D3 2000 МЕ", "2000 МЕ")]
    [InlineData("Настойка 25мл", "25мл")]
    [InlineData("Метформин 1000мг", "1000мг")]
    [InlineData("Бинт стерильный", "")]
    [InlineData("", "")]
    [InlineData(null, "")]
    public void ExtractDosage_finds_unit(string? name, string expected)
        => Assert.Equal(expected, PriceListViewModel.ExtractDosage(name));

    [Fact]
    public void BuildBaseName_prefers_trade_name()
        => Assert.Equal("Нурофен", PriceListViewModel.BuildBaseName("Нурофен таб 200мг", "Нурофен", "200мг"));

    [Fact]
    public void BuildBaseName_strips_dosage()
        => Assert.Equal("Аспирин", PriceListViewModel.BuildBaseName("Аспирин 500мг", null, "500мг"));

    [Fact]
    public void BuildBaseName_keeps_name_without_dosage()
        => Assert.Equal("Бинт стерильный", PriceListViewModel.BuildBaseName("Бинт стерильный", null, ""));

    [Fact]
    public void BuildBaseName_empty_returns_empty()
        => Assert.Equal("", PriceListViewModel.BuildBaseName("", null, ""));
}
