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

163 lines
5.3 KiB
C#

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