finskaya060525/TestTovarV2/EditTovar.cs
2025-05-30 12:22:56 +03:00

185 lines
6.3 KiB
C#

using Avalonia;
using Avalonia.Headless;
using TovarV2;
using Bitmap = Avalonia.Media.Imaging.Bitmap;
namespace TestTovarV2
{
[TestFixture]
public class EditTovarTests
{
private EditTovar _editTovarWindow;
public Bitmap _testBitmap;
[OneTimeSetUp]
public void OneTimeSetup()
{
AppBuilder.Configure<App>()
.UseHeadless(new AvaloniaHeadlessPlatformOptions())
.SetupWithoutStarting();
var emptyPngPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Assets", "picture.png");
_testBitmap = new Bitmap(emptyPngPath);
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
_testBitmap?.Dispose();
}
[SetUp]
public void Setup()
{
ListPr.ListProd.Clear();
ListPr.ListProd.Add(new Product
{
nameProd = "TestProduct",
priceProd = 1,
quantityProd = 2,
bitmapProd = _testBitmap
});
ListPr.productForEdit = 0;
_editTovarWindow = new EditTovar();
_editTovarWindow.Show();
}
[TearDown]
public void TearDown()
{
_editTovarWindow.Close();
}
[Test]
public void IsOpenWindow_ShouldReturnTrue_WhenItOpened()
{
Assert.IsTrue(EditTovar.IsOpen);
_editTovarWindow.Close();
}
[Test]
public void IsOpenWindow_ShouldReturnFalse_WhenItClosed()
{
Assert.IsTrue(EditTovar.IsOpen);
_editTovarWindow.Close();
Assert.IsFalse(EditTovar.IsOpen);
}
[Test]
public void CompareProductData_ShouldReturnTrue_WhenCorrectData()
{
Assert.AreEqual("TestProduct", _editTovarWindow.GetNameTov.Text);
Assert.AreEqual("1", _editTovarWindow.GetPriceTov.Text);
Assert.AreEqual("2", _editTovarWindow.GetQuantityTov.Text);
Assert.AreEqual(_testBitmap, _editTovarWindow.GetImagePath.Source);
}
[Test]
public void EditOkClick_ShouldReturnUpdatedProduct_UpdateProductInList()
{
_editTovarWindow.GetNameTov.Text = "NewTestProduct";
_editTovarWindow.GetPriceTov.Text = "10";
_editTovarWindow.GetQuantityTov.Text = "20";
_editTovarWindow.bitmapToBind = _testBitmap;
_editTovarWindow.EditOk_Click(null, null);
var editedProduct = ListPr.ListProd[ListPr.productForEdit];
Assert.AreEqual("NewTestProduct", editedProduct.nameProd);
Assert.AreEqual(10, editedProduct.priceProd);
Assert.AreEqual(20, editedProduct.quantityProd);
Assert.AreEqual(_testBitmap, editedProduct.bitmapProd);
}
[Test]
public void EditOkClick_ShouldReturnUpdatedProduct_WhenNameIsEmpty()
{
_editTovarWindow.GetNameTov.Text = "";
_editTovarWindow.GetPriceTov.Text = "10";
_editTovarWindow.GetQuantityTov.Text = "20";
_editTovarWindow.bitmapToBind = _testBitmap;
_editTovarWindow.EditOk_Click(null, null);
var editedProduct = ListPr.ListProd[ListPr.productForEdit];
Assert.AreEqual("", editedProduct.nameProd);
Assert.AreEqual(10, editedProduct.priceProd);
Assert.AreEqual(20, editedProduct.quantityProd);
Assert.AreEqual(_testBitmap, editedProduct.bitmapProd);
}
[Test]
public void EditOkClick_ShouldThrowFormatException_WhenPriceIsEmpty()
{
_editTovarWindow.GetNameTov.Text = "NewTestProduct";
_editTovarWindow.GetPriceTov.Text = "";
_editTovarWindow.GetQuantityTov.Text = "20";
_editTovarWindow.bitmapToBind = _testBitmap;
var ex = Assert.Throws<FormatException>(() =>
{
_editTovarWindow.EditOk_Click(null, null);
});
Assert.That(ex.Message, Does.Contain("input string"));
}
[Test]
public void EditOkClick_ShouldThrowFormatException_WhenQuantityIsEmpty()
{
_editTovarWindow.GetNameTov.Text = "NewTestProduct";
_editTovarWindow.GetPriceTov.Text = "10";
_editTovarWindow.GetQuantityTov.Text = "";
_editTovarWindow.bitmapToBind = _testBitmap;
var ex = Assert.Throws<FormatException>(() =>
{
_editTovarWindow.EditOk_Click(null, null);
});
Assert.That(ex.Message, Does.Contain("input string"));
}
[Test]
public void EditOkClick_ShouldReturnUpdatedProduct_WhenImageIsEmpty()
{
_editTovarWindow.GetNameTov.Text = "NewTestProduct";
_editTovarWindow.GetPriceTov.Text = "10";
_editTovarWindow.GetQuantityTov.Text = "20";
_editTovarWindow.bitmapToBind = null;
_editTovarWindow.EditOk_Click(null, null);
var editedProduct = ListPr.ListProd[ListPr.productForEdit];
Assert.AreEqual("NewTestProduct", editedProduct.nameProd);
Assert.AreEqual(10, editedProduct.priceProd);
Assert.AreEqual(20, editedProduct.quantityProd);
Assert.AreEqual(null, editedProduct.bitmapProd);
}
[Test]
public void EditTovarConstructor_ShoulInitializeFieldsFromListProd_WhenItOpened()
{
ListPr.ListProd = new List<Product>()
{
new Product()
{
nameProd = "TestProduct",
priceProd = 100,
quantityProd = 5,
bitmapProd = _testBitmap
}
};
ListPr.productForEdit = 0;
var editWindow = new EditTovar();
Assert.AreEqual("TestProduct", editWindow.GetNameTov.Text);
Assert.AreEqual("100", editWindow.GetPriceTov.Text);
Assert.AreEqual("5", editWindow.GetQuantityTov.Text);
Assert.IsNotNull(editWindow.GetImagePath.Source);
}
}
}