finskaya060525/TestTovarV2/Productedit.cs

188 lines
6.0 KiB
C#
Raw Normal View History

2025-05-30 09:22:56 +00:00
using Avalonia.Controls;
using TovarV2;
using Avalonia;
using Avalonia.Headless;
using Avalonia.Input;
using Avalonia.Media.Imaging;
namespace TestTovarV2
{
[TestFixture]
public class ProductEditTests
{
public Bitmap _testBitmap;
private ProductEdit _productWindow;
[OneTimeSetUp]
public void OneTimeSetup()
{
AppBuilder.Configure<App>()
.UseHeadless(new AvaloniaHeadlessPlatformOptions())
.SetupWithoutStarting();
}
[SetUp]
public void Setup()
{
ListPr.ListProd.Clear();
ListPr.productSelects.Clear();
for (int i = 0; i < 5; i++)
{
ListPr.ListProd.Add(new Product
{
Id = i,
nameProd = $"Product {i}",
priceProd = 10 + i,
quantityProd = 5,
bitmapProd = _testBitmap
});
}
ListPr.codeUser = 0;
_productWindow = new ProductEdit();
}
[Test]
public void NextPageOnClick_ShouldReturnLastTwoProducts_WhenFiveProductsInList()
{
_productWindow.PagesConfig(ListPr.ListProd);
_productWindow.NextPage_OnClick(null, null);
Assert.AreEqual("Product 2", _productWindow.currentProd[0].nameProd);
}
[Test]
public void PrevPageOnClick_ShouldReturnLastTwoProducts_WhenFiveProductsInList()
{
_productWindow.PagesConfig(ListPr.ListProd);
_productWindow.NextPage_OnClick(null, null);
_productWindow.PrevPage_OnClick(null, null);
Assert.AreEqual("Product 0", _productWindow.currentProd[0].nameProd);
}
[Test]
public void DelBtnOnClick_ShouldRemoveProduct_WhenFirstProductIsSelected()
{
int initialCount = ListPr.ListProd.Count;
var delButton = new Button { Tag = 0 };
_productWindow.DelBtn_Click(delButton, null);
Assert.AreEqual(initialCount - 1, ListPr.ListProd.Count);
}
[Test]
public void DelBtnOnClick_ShouldRemoveProduct_WhenSecondProductIsSelected()
{
int initialCount = ListPr.ListProd.Count;
var delButton = new Button { Tag = 1 };
_productWindow.DelBtn_Click(delButton, null);
Assert.AreEqual(initialCount - 1, ListPr.ListProd.Count);
}
[Test]
public void DelBtnOnClick_ShouldThrowArgumentOutOfRangeException_WhenSixProductIsSelected()
{
var delButton = new Button { Tag = 5 };
var ex = Assert.Throws<ArgumentOutOfRangeException>(() =>
{
_productWindow.DelBtn_Click(delButton, null);
});
Assert.That(ex.Message, Does.Contain("Index was out of range"));
}
[Test]
public void BtnInsertOnClick_ShouldOpenAddTovarWindow_WhenItIsPressed()
{
_productWindow.BtnInsert_OnClick(null, null);
Assert.IsTrue(AddTovar.IsOpen);
}
[Test]
public void BtnEditTovarOnClick_ShouldOpenEditTovarWindow_WhenProductIsSelected()
{
var selectedProduct = ListPr.ListProd[0];
_productWindow.ProdListPublic.SelectedItem = selectedProduct;
ListPr.productSelects.Clear();
_productWindow.BtnEditTovar_OnClick(null, null);
Assert.IsTrue(EditTovar.IsOpen, "EditTovar window should be open.");
}
[Test]
public void BtnEditTovarOnClick_ShouldThrowArgumentOutOfRangeException_WhenNoProductIsSelected()
{
_productWindow.ProdListPublic.SelectedItem = null;
ListPr.productSelects.Clear();
var ex = Assert.Throws<ArgumentOutOfRangeException>(() =>
{
_productWindow.BtnEditTovar_OnClick(null, null);
});
Assert.That(ex.Message, Does.Contain("Index was out of range"));
}
[Test]
public void AddToKorzBtnOnClick_ShouldAddProduct_WhenNotAlreadyInCart()
{
var btn = new Button { Tag = 0 };
_productWindow.AddToKorzBtn_OnClick(btn, null);
Assert.AreEqual(1, ListPr.productSelects.Count);
Assert.AreEqual("Product 0", ListPr.productSelects[0].nameProdKorz);
}
[Test]
public void AddToKorzBtnOnClick_ShouldNotAddDuplicate_WhenProductAlreadyInCart()
{
ListPr.productSelects.Add(new ProductSelect
{
nameProdKorz = "Product 0"
});
var btn = new Button { Tag = 0 };
_productWindow.AddToKorzBtn_OnClick(btn, null);
Assert.AreEqual(1, ListPr.productSelects.Count);
}
[Test]
public void BtnKorzinaOnClick_ShouldOpenKorzinaWindow_WhenKorzinaIsEmpty()
{
_productWindow.BtnKorzina_OnClick(null, null);
Assert.IsTrue(Korzina.IsOpen);
}
[Test]
public void BtnKorzinaOnClick_ShouldOpenKorzinaWindow_WhenKorzinaIsNotEmpty()
{
ListPr.productSelects.Clear();
ListPr.productSelects.Add(new ProductSelect
{
nameProdKorz = "Товар 1",
quantitySelect = 1,
priceProdKorz = 100
});
_productWindow.BtnKorzina_OnClick(null, null);
Assert.IsTrue(Korzina.IsOpen);
}
[Test]
public void BtnVyhodOnClick_ShouldOpenMainWindow_WhenItIsPressed()
{
_productWindow.BtnVyhod_OnClick(null, null);
Assert.IsTrue(MainWindow.IsOpen);
}
}
}