[InlineData(0, 0, 2, 1)]                                                                               // bu parametreler fiyat argümanlarına geçirilir. ve metot testini yapar.
        public void FiyatlarDogruAktariliyorMu(decimal fiyat1, decimal fiyat2, decimal fiyat3, decimal fiyat4) //IAMBARI'I İMPLEMENTE EDEN SAHTE OBJE KULLANIMI
        {
            //Düzenle(Arrange)
            var controller = new AnasayfaController();

            controller.ambar = new SahteAmbarFiyati30TLdenKucukUrunler
            {
                Urunler = new[] {
                    new Urun {
                        Isim = "Mazejik", Aciklama = "Kaliteli ağrı kesici", Kategori = "Ağrı kesiciler", Fiyat = fiyat1
                    },
                    new Urun {
                        Isim = "Asprin", Aciklama = "Sıradan ağrı kesici", Kategori = "Ağrı kesiciler", Fiyat = fiyat2
                    },
                    new Urun {
                        Isim = "Aprana", Aciklama = "Güçlü ağrılar için", Kategori = "Ağrı kesiciler", Fiyat = fiyat3
                    },
                    new Urun {
                        Isim = "4. Sahte Ürün", Aciklama = "Güçlü ağrılar için", Kategori = "Ağrı kesiciler", Fiyat = fiyat4
                    }
                }
            };

            //Harekete Geç(Act)
            var ViewModeli = (controller.Index() as ViewResult)?.ViewData.Model as IEnumerable <Urun>; // actual

            //Test Et(Assert)
            Assert.Equal(controller.ambar.Urunler, ViewModeli, Karsilastirici.Olustur <Urun>((u1, u2) => u1.Isim == u2.Isim && u1.Fiyat == u2.Fiyat));
        }
        public void TumKatalogGosteriliyorMu()
        {
            var controller = new AnasayfaController();
            // Sahne Al(Perform,Act)
            //Index Action metotta POST REQUEST'TE arguman(parametre) olarak alınan Model'i getirelim.
            var AlinanModel = (controller.Index() as ViewResult)?.ViewData.Model as IEnumerable <Urun>;

            // Teyit Et(Assert, iki bilgi eşit mi vb.)//1.si  beklenen, 2.si gerçek/şu an ki sonuç
            Assert.Equal(OrnekVeriAmbari.Veri.Urunler, AlinanModel, Karsilastirici.Olustur <Urun>((u1, u2) => u1.Isim == u2.Isim && u1.Fiyat == u2.Fiyat));
        }
        public void Index()
        {
            // Arrange
            AnasayfaController controller = new AnasayfaController();

            // Act
            ViewResult result = controller.Index() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
        public void Fiyati30TLAltindakiTumUrunlerGosteriliyorMu() //IAMBARI'I İMPLEMENTE EDEN SAHTE OBJE KULLANIMI
        {
            //Düzenle(Arrange)
            var controller = new AnasayfaController();

            controller.ambar = new SahteAmbarFiyati30TLdenKucukUrunler();                              //Bu ambar sahtedir/gerçek ürünlerle alakası yok.
            //Harekete Geç(Act)
            var ViewModeli = (controller.Index() as ViewResult)?.ViewData.Model as IEnumerable <Urun>; // actual

            //Test Et(Assert)
            Assert.Equal(controller.ambar.Urunler, ViewModeli, Karsilastirici.Olustur <Urun>((u1, u2) => u1.Isim == u2.Isim && u1.Fiyat == u2.Fiyat));
        }
        public void AmbarUrunleriSadeceVeSadeceBirKereCagrildiMi_Index_AnasayfaMetodu() // MOQ KULLANIMI
        {
            //Düzenle
            var sahte = new Mock <IAmbar>();

            sahte.SetupGet(ambar => ambar.Urunler).Returns(new[] { new Urun {
                                                                       Isim = "Ürün 1", Aciklama = "Açıklama", Fiyat = 100
                                                                   } });                                                             //IAmbar üzerindeki Ürünler özelliğine SetupGet ve Return ile sahte obje atadım.
            var controller = new AnasayfaController();

            controller.ambar = sahte.Object; // sahte obje Object ile getirilir.
            //Harekete Geç
            var sonuc = controller.Index();

            //Denetle
            sahte.VerifyGet(ambar => ambar.Urunler, Times.Once); //Ambar ürünlerinin controller'den index metodu çağrılışında sadece bir kere çekilip çekilmediğini denetledim
        }