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