using Avalonia.Controls; using TovarV2; using Avalonia; using Avalonia.Headless; using Avalonia.Input; using Avalonia.Media.Imaging; namespace TestTovarV2 { [TestFixture] public class ProductEditTests { private ProductEdit _productEditWindow; public Bitmap _testBitmap; [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 < 4; i++) { ListPr.ListProd.Add(new Product { Id = i, nameProd = $"Test {i}", priceProd = 1 + i, quantityProd = 4, bitmapProd = _testBitmap }); } ListPr.codeUser = 0; _productEditWindow = new ProductEdit(); } [Test] public void AddToKorzBtnOnClick_ShouldNotAddDuplicate_WhenProductInCart() { ListPr.productSelects.Add(new ProductSelect { nameProdKorz = "Test 0" }); var btn = new Button { Tag = 0 }; _productEditWindow.AddToKorzBtn_OnClick(btn, null); Assert.That(1 == ListPr.productSelects.Count); } [Test] public void AddToKorzBtnOnClick_ShouldAddProduct_WhenProductNotInCart() { var btn = new Button { Tag = 0 }; _productEditWindow.AddToKorzBtn_OnClick(btn, null); Assert.That(1 == ListPr.productSelects.Count); Assert.That("Test 0" == ListPr.productSelects[0].nameProdKorz); } [Test] public void BtnKorzinaOnClick_ShouldOpenKorzinaWindow_WhenKorzinaEmpty() { _productEditWindow.BtnKorzina_OnClick(null, null); Assert.That(Korzina.IsOpen); } [Test] public void NextPageOnClick_ShouldReturnLastProducts_WhenProductsInList() { _productEditWindow.PagesConfig(ListPr.ListProd); _productEditWindow.NextPage_OnClick(null, null); Assert.That("Test 2" == _productEditWindow.currentProd[0].nameProd); Assert.That("Test 3" == _productEditWindow.currentProd[1].nameProd); } [Test] public void PrevPageOnClick_ShouldReturnLastProducts_WhenProductsInList() { _productEditWindow.PagesConfig(ListPr.ListProd); _productEditWindow.NextPage_OnClick(null, null); _productEditWindow.PrevPage_OnClick(null, null); Assert.That("Test 0" == _productEditWindow.currentProd[0].nameProd); Assert.That("Test 1" == _productEditWindow.currentProd[1].nameProd); } [Test] public void BtnEditTovarOnClick_ShouldOpenEditTovarWindow_WhenProductIsSelected() { var selectedProduct = ListPr.ListProd[0]; _productEditWindow.ProdListPublic.SelectedItem = selectedProduct; ListPr.productSelects.Clear(); _productEditWindow.BtnEditTovar_OnClick(null, null); Assert.That(EditTovar.IsOpen); } [Test] public void BtnEditTovarOnClick_ShouldThrowArgumentOutOfRangeException_WhenProductIsNotSelected() { _productEditWindow.ProdListPublic.SelectedItem = null; ListPr.productSelects.Clear(); var ex = Assert.Throws(() => { _productEditWindow.BtnEditTovar_OnClick(null, null); }); Assert.That(ex.Message, Does.Contain("Index was out of range")); } [Test] public void DelBtnOnClick_ShouldDeleteProduct_WhenFirstProductIsSelected() { int initialCount = ListPr.ListProd.Count; var delButton = new Button { Tag = 0 }; _productEditWindow.DelBtn_Click(delButton, null); Assert.That(initialCount - 1 == ListPr.ListProd.Count); } [Test] public void DelBtnOnClick_ShouldDeleteProduct_WhenSecondProductIsSelected() { int initialCount = ListPr.ListProd.Count; var delButton = new Button { Tag = 1 }; _productEditWindow.DelBtn_Click(delButton, null); Assert.That(initialCount - 1 == ListPr.ListProd.Count); } [Test] public void BtnInsertOnClick_ShouldOpenAddTovarWindow_WhenButtonIsPressed() { _productEditWindow.BtnInsert_OnClick(null, null); Assert.That(AddTovar.IsOpen); } [Test] public void BtnVyhodOnClick_ShouldOpenMainWindow_WhenButtonIsPressed() { _productEditWindow.BtnVyhod_OnClick(null, null); Assert.That(MainWindow.IsOpen); } } }