156 lines
5.2 KiB
C#
156 lines
5.2 KiB
C#
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);
|
||
}
|
||
}
|
||
} |