public void GetReturnsByCenaManja()
        {
            // Arrange
            List <Proizvod> proizvodi = new List <Proizvod>();

            proizvodi.Add(new Proizvod()
            {
                Id = 1, Naziv = "Proizvod", Cena = 300
            });
            proizvodi.Add(new Proizvod()
            {
                Id = 2, Naziv = "Proizvod2", Cena = 200
            });

            var mockRepository = new Mock <IProizvodRepository>();

            mockRepository.Setup(x => x.GetByCena(300)).Returns(proizvodi.AsEnumerable().Where(p => p.Cena < 300));
            var controller = new ProizvodiController(mockRepository.Object);

            // Act
            IEnumerable <Proizvod> result = controller.GetByCena(300);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreNotEqual(proizvodi.Count, result.ToList().Count);
            Assert.AreEqual(proizvodi.ElementAt(1), result.ElementAt(0));
        }
        public void GetReturnsByNazivKategorije()
        {
            // Arrange
            KategorijaProizvoda kp = new KategorijaProizvoda()
            {
                Id = 1, Naziv = "Testna Kategorija"
            };

            List <Proizvod> proizvodi = new List <Proizvod>();

            proizvodi.Add(new Proizvod()
            {
                Id = 1, Naziv = "Proizvod", KategorijaProizvodaId = kp.Id
            });
            proizvodi.Add(new Proizvod()
            {
                Id = 2, Naziv = "Proizvod2", KategorijaProizvodaId = kp.Id
            });

            var mockRepository = new Mock <IProizvodRepository>();

            mockRepository.Setup(x => x.GetByKategorija(kp.Naziv)).Returns(proizvodi.AsEnumerable().Where(p => p.KategorijaProizvodaId == kp.Id));
            var controller = new ProizvodiController(mockRepository.Object);

            // Act
            IEnumerable <Proizvod> result = controller.GetByKategorija(kp.Naziv);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(proizvodi.Count, result.ToList().Count);
            Assert.AreEqual(proizvodi.ElementAt(0), result.ElementAt(0));
            Assert.AreEqual(proizvodi.ElementAt(1), result.ElementAt(1));
        }
        public void GetReturnsMultipleObjects()
        {
            // Arrange
            List <Proizvod> proizvodi = new List <Proizvod>();

            proizvodi.Add(new Proizvod()
            {
                Id = 1, Naziv = "Proizvod"
            });
            proizvodi.Add(new Proizvod()
            {
                Id = 2, Naziv = "Proizvod2"
            });

            var mockRepository = new Mock <IProizvodRepository>();

            mockRepository.Setup(x => x.GetAll()).Returns(proizvodi.AsEnumerable());
            var controller = new ProizvodiController(mockRepository.Object);

            // Act
            IEnumerable <Proizvod> result = controller.Get();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(proizvodi.Count, result.ToList().Count);
            Assert.AreEqual(proizvodi.ElementAt(0), result.ElementAt(0));
            Assert.AreEqual(proizvodi.ElementAt(1), result.ElementAt(1));
        }
        public void DeleteReturnsNotFound()
        {
            // Arrange
            var mockRepository = new Mock <IProizvodRepository>();
            var controller     = new ProizvodiController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Delete(10);

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(NotFoundResult));
        }
        public void PutReturnsBadRequest()
        {
            // Arrange
            var mockRepository = new Mock <IProizvodRepository>();
            var controller     = new ProizvodiController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Put(10, new Proizvod {
                Id = 9, Naziv = "Proizvod"
            });

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(BadRequestResult));
        }
        public void DeleteReturnsOk()
        {
            // Arrange
            var mockRepository = new Mock <IProizvodRepository>();

            mockRepository.Setup(x => x.GetById(10)).Returns(new Proizvod {
                Id = 10
            });
            var controller = new ProizvodiController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Delete(10);

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(OkResult));
        }
        public void PostMethodSetsLocationHeader()
        {
            // Arrange
            var mockRepository = new Mock <IProizvodRepository>();
            var controller     = new ProizvodiController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Post(new Proizvod {
                Id = 10, Naziv = "Proizovd"
            });
            var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <Proizvod>;

            // Assert
            Assert.IsNotNull(createdResult);
            Assert.AreEqual("DefaultApi", createdResult.RouteName);
            Assert.AreEqual(10, createdResult.RouteValues["id"]);
        }
        public void GetReturnsProductWithSameId()
        {
            // Arrange
            var mockRepository = new Mock <IProizvodRepository>();

            mockRepository.Setup(x => x.GetById(42)).Returns(new Proizvod {
                Id = 42
            });

            var controller = new ProizvodiController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Get(42);
            var contentResult = actionResult as OkNegotiatedContentResult <Proizvod>;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);
            Assert.AreEqual(42, contentResult.Content.Id);
        }