finskayMagazin/TestTovarV2/AddTovar.cs
2025-06-05 11:22:50 +03:00

156 lines
5.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Avalonia;
using Avalonia.Headless;
using Avalonia.Controls;
using TovarV2;
using Avalonia.Media.Imaging;
using System.IO;
using System.Linq;
namespace TestTovarV2
{
[TestFixture]
public class AddTovarTests
{
private AddTovar _addTovar;
[OneTimeSetUp]
public void OneTimeSetup()
{
AppBuilder.Configure<App>()
.UseHeadless(new AvaloniaHeadlessPlatformOptions())
.SetupWithoutStarting();
}
[SetUp]
public void Setup()
{
ListPr.ListProd.Clear();
ListPr.b = 0;
_addTovar = new AddTovar();
_addTovar.Show();
}
[TearDown]
public void TearDown()
{
_addTovar.Close();
ListPr.ListProd.Clear();
}
[Test]
public void AddTovarOkClick_ShouldAddProduct_WhenFieldsIsValid()
{
_addTovar.GetNameTov.Text = "New Product";
_addTovar.GetPriceTov.Text = "100";
_addTovar.GetQuantityTov.Text = "10";
_addTovar.bitmapToBind = new Bitmap(Path.Combine("Assets", "test_image.png"));
_addTovar.AddTovarOk_Click(null, null);
Assert.That(ListPr.ListProd.Count, Is.EqualTo(1));
Assert.That(ListPr.ListProd[0].nameProd, Is.EqualTo("New Product"));
Assert.That(ListPr.ListProd[0].priceProd, Is.EqualTo(100));
Assert.That(ListPr.ListProd[0].quantityProd, Is.EqualTo(10));
Assert.That(ListPr.ListProd[0].bitmapProd, Is.Not.Null);
Assert.That(ProductEdit.IsOpen, Is.True);
}
[Test]
public void AddTovarOkClick_ShouldShowError_WhenProductNameExists()
{
ListPr.ListProd.Add(new Product { nameProd = "Existing Product" });
_addTovar.GetNameTov.Text = "Existing Product";
_addTovar.AddTovarOk_Click(null, null);
Assert.That(ListPr.ListProd.Count, Is.EqualTo(1));
Assert.That(_addTovar.GetErrorMsg.Text, Is.EqualTo("Товар с таким именем уже имеется в каталоге"));
}
[Test]
public void AddTovarOkClick_ShouldAddProduct_WhenImageNotSelected()
{
_addTovar.GetNameTov.Text = "Product Without Image";
_addTovar.GetPriceTov.Text = "200";
_addTovar.GetQuantityTov.Text = "20";
_addTovar.bitmapToBind = null;
_addTovar.AddTovarOk_Click(null, null);
Assert.That(ListPr.ListProd[0].nameProd, Is.EqualTo("Product Without Image"));
Assert.That(ListPr.ListProd[0].bitmapProd, Is.Null);
}
[Test]
public void AddTovarOkClick_ShouldHandleInvalidNumberFormat_WhenFieldsIsInvalid()
{
_addTovar.GetNameTov.Text = "Invalid Input Product";
_addTovar.GetPriceTov.Text = "invalid";
_addTovar.GetQuantityTov.Text = "invalid";
Assert.DoesNotThrow(() => _addTovar.AddTovarOk_Click(null, null));
}
[Test]
public void AddTovarImgClick_ShouldUpdateImage_WhenFileSelected()
{
var testBitmap = new Bitmap(Path.Combine("Assets", "test_image.png"));
_addTovar.bitmapToBind = testBitmap;
_addTovar.AddTovarImg_Click(null, null);
Assert.That(_addTovar.GetImagePath.Source, Is.EqualTo(testBitmap));
}
[Test]
public void AddTovarOkClick_ShouldIncrementIdCounter_WhenFieldsIsValid()
{
var initialCounter = ListPr.b;
_addTovar.GetNameTov.Text = "Product 1";
_addTovar.GetPriceTov.Text = "100";
_addTovar.GetQuantityTov.Text = "10";
_addTovar.AddTovarOk_Click(null, null);
_addTovar.GetNameTov.Text = "Product 2";
_addTovar.AddTovarOk_Click(null, null);
Assert.That(ListPr.ListProd[0].Id, Is.EqualTo(initialCounter));
Assert.That(ListPr.ListProd[1].Id, Is.EqualTo(initialCounter + 1));
}
[Test]
public void AddTovarOkClick_ShouldHandleEmptyFields_WhenFieldsIsEmpty()
{
_addTovar.GetNameTov.Text = "";
_addTovar.GetPriceTov.Text = "";
_addTovar.GetQuantityTov.Text = "";
Assert.DoesNotThrow(() => _addTovar.AddTovarOk_Click(null, null));
}
[Test]
public void AddTovarOkClick_ShouldCloseWindow_WhenSuccessful()
{
_addTovar.GetNameTov.Text = "Test Close";
_addTovar.GetPriceTov.Text = "100";
_addTovar.GetQuantityTov.Text = "10";
_addTovar.AddTovarOk_Click(null, null);
Assert.That(AddTovar.IsOpen, Is.False);
}
[Test]
public void AddTovarOkClick_ShouldOpenProductEdit_WhenSuccessful()
{
_addTovar.GetNameTov.Text = "Test Open Edit";
_addTovar.GetPriceTov.Text = "100";
_addTovar.GetQuantityTov.Text = "10";
_addTovar.AddTovarOk_Click(null, null);
Assert.That(ProductEdit.IsOpen, Is.True);
}
}
}