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() .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(() => { _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(() => { _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); } } }