using Avalonia; using Avalonia.Controls; using Avalonia.Headless; using Avalonia.Media.Imaging; using NUnit.Framework; using System.IO; using TovarV2; namespace TestTovarV2 { [TestFixture] public class AddTovarTests { private AddTovar _addTovarWindow; private Bitmap _testBitmap; [OneTimeSetUp] public void GlobalSetup() { AppBuilder.Configure() .UseHeadless(new AvaloniaHeadlessPlatformOptions()) .SetupWithoutStarting(); var testImagePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Assets", "picture.png"); _testBitmap = new Bitmap(testImagePath); } [SetUp] public void Setup() { _addTovarWindow = new AddTovar(); _addTovarWindow.Show(); _addTovarWindow.GetNameTov.Text = ""; _addTovarWindow.GetPriceTov.Text = ""; _addTovarWindow.GetQuantityTov.Text = ""; _addTovarWindow.bitmapToBind = null; ListPr.ListProd.Clear(); ListPr.b = 1; } [TearDown] public void TearDown() { _addTovarWindow.Close(); } [OneTimeTearDown] public void GlobalTearDown() { _testBitmap?.Dispose(); } [Test] public void IsOpenWindow_ShouldReturnTrue_WhenItOpened() { Assert.IsTrue(AddTovar.IsOpen); _addTovarWindow.Close(); } [Test] public void IsOpenWindow_ShouldReturnFalse_WhenItClosed() { Assert.IsTrue(AddTovar.IsOpen); _addTovarWindow.Close(); Assert.IsFalse(AddTovar.IsOpen); } [Test] public void AddTovarOk_ShouldReturnAddedProduct_WhenEnteredDataIsCorrect() { _addTovarWindow.GetNameTov.Text = "TestProduct"; _addTovarWindow.GetPriceTov.Text = "1"; _addTovarWindow.GetQuantityTov.Text = "2"; _addTovarWindow.bitmapToBind = _testBitmap; _addTovarWindow.AddTovarOk_Click(null, null); Assert.AreEqual(1, ListPr.ListProd.Count); Assert.AreEqual("TestProduct", ListPr.ListProd[0].nameProd); } [Test] public void AddTovarOk_ShouldThrowAssertionException_WhenEnteredNameIsEmpty() { _addTovarWindow.GetNameTov.Text = ""; _addTovarWindow.GetPriceTov.Text = "1"; _addTovarWindow.GetQuantityTov.Text = "2"; _addTovarWindow.bitmapToBind = _testBitmap; _addTovarWindow.AddTovarOk_Click(null, null); var ex = Assert.Throws(() => { Assert.AreEqual("TestProduct", ListPr.ListProd[0].nameProd); }); Assert.That(ex.Message, Does.Contain("Expected string length 11 but was 0")); } [Test] public void AddTovarOk_ShouldThrowFormatException_WhenEnteredPriceIsEmpty() { _addTovarWindow.GetNameTov.Text = "TestProduct"; _addTovarWindow.GetPriceTov.Text = ""; _addTovarWindow.GetQuantityTov.Text = "2"; _addTovarWindow.bitmapToBind = _testBitmap; var ex = Assert.Throws(() => { _addTovarWindow.AddTovarOk_Click(null, null); }); Assert.That(ex.Message, Does.Contain("input string")); } [Test] public void AddTovarOk_ShouldThrowFormatException_WhenEnteredQuantityIsEmpty() { _addTovarWindow.GetNameTov.Text = "TestProduct"; _addTovarWindow.GetPriceTov.Text = "1"; _addTovarWindow.GetQuantityTov.Text = ""; _addTovarWindow.bitmapToBind = _testBitmap; var ex = Assert.Throws(() => { _addTovarWindow.AddTovarOk_Click(null, null); }); Assert.That(ex.Message, Does.Contain("input string")); } [Test] public void AddTovarOk_ShouldReturnAddedProduct_WhenImageIsEmpty() { _addTovarWindow.GetNameTov.Text = "TestProduct"; _addTovarWindow.GetPriceTov.Text = "1"; _addTovarWindow.GetQuantityTov.Text = "2"; _addTovarWindow.bitmapToBind = null; _addTovarWindow.AddTovarOk_Click(null, null); Assert.AreEqual(1, ListPr.ListProd.Count); Assert.AreEqual("TestProduct", ListPr.ListProd[0].nameProd); Assert.IsNull(ListPr.ListProd[0].bitmapProd); } [Test] public void AddTovarOk_ShouldReturnError_WhenEnteredNameAlreadyExists() { ListPr.ListProd.Add(new Product { nameProd = "TestProduct", priceProd = 1, quantityProd = 2, bitmapProd = _testBitmap }); _addTovarWindow.GetNameTov.Text = "TestProduct"; _addTovarWindow.GetPriceTov.Text = "1"; _addTovarWindow.GetQuantityTov.Text = "2"; _addTovarWindow.bitmapToBind = _testBitmap; _addTovarWindow.AddTovarOk_Click(null, null); Assert.AreEqual("Товар с таким именем уже имеется в каталоге", _addTovarWindow.GetErrorMsg.Text); Assert.AreEqual(1, ListPr.ListProd.Count); } [Test] public void SetBitmap_ShouldReturnSelectedImage_WhenItIsSelected() { _addTovarWindow.bitmapToBind = _testBitmap; _addTovarWindow.GetImagePath.Source = _addTovarWindow.bitmapToBind; Assert.AreEqual(_testBitmap, _addTovarWindow.GetImagePath.Source); } } }