public ActionResult LeggInn(RedigerArtikkel artikkel)
        {
            if (!(bool)Session["AdminInnlogget"])
            {
                return RedirectToAction("Innlogging", "Admin");
            }

            if (!ModelState.IsValid)
            {
                return View();
            }

            var thumbnailUrl = Util.LagThumbnailUrl(artikkel.BildeUrl);

            var kategori = _kategoriLogikk.HentEnKategori(artikkel.KategoriID);

            var nyArtikkel = new Artikkel()
            {
                AntallPaaLager = artikkel.AntallPaaLager,
                Beskrivelse = artikkel.Beskrivelse,
                BildeUrl = artikkel.BildeUrl,
                Pris = artikkel.Pris,
                ThumbnailUrl = thumbnailUrl,
                Kategori = kategori
            };

            var ok = _artikkelLogikk.LeggInn(nyArtikkel);

            if (!ok)
            {
                return View();
            }

            return RedirectToAction("Liste");
        }
        public void LeggInn_POST_ikke_innlogget()
        {
            var controller = new ArtikkelController(new ArtikkelLogikk(new ArtikkelRepositoryStub()),
                                                        new KategoriLogikk(new KategoriRepositoryStub()));
            var sessionMock = new TestControllerBuilder();
            sessionMock.InitializeController(controller);

            controller.Session["AdminInnlogget"] = false;

            var forventetArtikkel = new RedigerArtikkel();

            // Act

            var actionResult = (RedirectToRouteResult)controller.LeggInn(forventetArtikkel);

            // Assert

            Assert.AreEqual(actionResult.RouteName, "");
            Assert.AreEqual(actionResult.RouteValues.Values.ElementAt(0), "Innlogging");
            Assert.AreEqual(actionResult.RouteValues.Values.ElementAt(1), "Admin");
        }
        public ActionResult Rediger(int id)
        {
            if (!(bool)Session["AdminInnlogget"])
            {
                return RedirectToAction("Innlogging", "Admin");
            }

            var artikkel = _artikkelLogikk.HentEnArtikkel(id);
            var redigerArtikkel = new RedigerArtikkel()
            {
                AntallPaaLager = artikkel.AntallPaaLager,
                Beskrivelse = artikkel.Beskrivelse,
                BildeUrl = artikkel.BildeUrl,
                KategoriID = artikkel.Kategori.ID,
                Pris = artikkel.Pris
            };

            var kategorier = _kategoriLogikk.HentAlleKategorier();
            var kategoriliste = new SelectList(kategorier, "ID", "Navn");
            ViewBag.Kategorier = kategorier;

            return View(redigerArtikkel);
        }
        public void LeggInn_POST_model_feil()
        {
            var controller = new ArtikkelController(new ArtikkelLogikk(new ArtikkelRepositoryStub()),
                                                        new KategoriLogikk(new KategoriRepositoryStub()));
            var sessionMock = new TestControllerBuilder();
            sessionMock.InitializeController(controller);

            controller.Session["AdminInnlogget"] = true;

            var forventetArtikkel = new RedigerArtikkel();

            controller.ViewData.ModelState.AddModelError("Beskrivelse", "Mangler beskrivelse");

            // Act

            var actionResult = (ViewResult)controller.LeggInn(forventetArtikkel);

            // Assert

            Assert.IsTrue(actionResult.ViewData.ModelState.Count == 1);
            Assert.AreEqual(actionResult.ViewName, "");
        }
        public void Rediger_POST_ok()
        {
            //ARRANGE

            var controller = new ArtikkelController(new ArtikkelLogikk(new ArtikkelRepositoryStub()), new KategoriLogikk(new KategoriRepositoryStub()));
            var sessionMock = new TestControllerBuilder();
            sessionMock.InitializeController(controller);

            controller.Session["AdminInnlogget"] = true;

            var forventetArtikkel = new RedigerArtikkel()
            {
                KategoriID = 1,
                Beskrivelse = "iPhone 5",
                Pris = 1000,
                AntallPaaLager = 5,
                BildeUrl = "http://i.imgur.com/A9VXpL7.jpg"
            };

            // Act

            var actionResult = (RedirectToRouteResult)controller.Rediger(1, forventetArtikkel);

            // Assert

            Assert.AreEqual(actionResult.RouteName, "");
            Assert.AreEqual(actionResult.RouteValues.Values.ElementAt(0), "Liste");
        }
        public void Rediger_POST_ikke_funnet()
        {
            var controller = new ArtikkelController(new ArtikkelLogikk(new ArtikkelRepositoryStub()), new KategoriLogikk(new KategoriRepositoryStub()));
            var sessionMock = new TestControllerBuilder();
            sessionMock.InitializeController(controller);

            controller.Session["AdminInnlogget"] = true;
            var forventetArtikkel = new RedigerArtikkel()
            {
                KategoriID = 0,
                Beskrivelse = "iPhone 5",
                Pris = 1000,
                AntallPaaLager = 5,
                BildeUrl = "http://i.imgur.com/A9VXpL7.jpg"
            };

            var actionResult = (ViewResult)controller.Rediger(0, forventetArtikkel);

            Assert.AreEqual(actionResult.ViewName, "");
        }
        public void Rediger_POST_feil_validering()
        {
            var controller = new ArtikkelController(new ArtikkelLogikk(new ArtikkelRepositoryStub()), new KategoriLogikk(new KategoriRepositoryStub()));
            var sessionMock = new TestControllerBuilder();
            sessionMock.InitializeController(controller);

            controller.Session["AdminInnlogget"] = true;
            var forventetArtikkel = new RedigerArtikkel();
            controller.ViewData.ModelState.AddModelError("KategoriID", "Mangler kategori ID");
            controller.ViewData.ModelState.AddModelError("Beskrivelse", "Mangler beskrivelse");
            controller.ViewData.ModelState.AddModelError("Pris", "Mangler pris");
            controller.ViewData.ModelState.AddModelError("BildeUrl", "Mangler Bilde URL");

            var resultat = (ViewResult)controller.Rediger(1);

            Assert.IsTrue(resultat.ViewData.ModelState.Count == 4);
            Assert.AreEqual(resultat.ViewName, "");
        }