public void Add_ValidModelLicenseTypeWithResultPost_ReturnsRedirect()
        {
            var computerFake = new Computer
                                   {
                                       LicenseType = "WinXP",
                                   };

            var computerDataService = new Mock<IDataService<Computer>>();
            computerDataService.Setup(c => c.Insert(It.IsAny<Computer>(), It.IsAny<Guid>())).Verifiable();

            var windowsLicenseDataServiceMock = new Mock<IDataService<WindowsLicense>>();
            windowsLicenseDataServiceMock.Setup(w => w.SelectOne(It.IsAny<Expression<Func<WindowsLicense, bool>>>()))
                .Returns(new WindowsLicense
                             {
                                 Id = "123456",
                                 LicenseType = computerFake.LicenseType,
                             });

            var controller = new ComputerController(computerDataService.Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    windowsLicenseDataServiceMock.Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Add(computerFake);

            Assert.IsInstanceOf<RedirectToRouteResult>(result);
            computerDataService.VerifyAll();
        }
        public void Add_ReturnsView()
        {
            var controller = new ComputerController(new Mock<IDataService<Computer>>().Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object);

            ActionResult result = controller.Add();

            Assert.IsInstanceOf<ViewResult>(result);

            var view = (ViewResult) result;
            Assert.IsInstanceOf<Computer>(view.Model);
        }
        public void Add_ValidModelNoLicenseTypePost_ReturnsRedirect()
        {
            var computerDataService = new Mock<IDataService<Computer>>();
            computerDataService.Setup(c => c.Insert(It.IsAny<Computer>(), It.IsAny<Guid>())).Verifiable();

            var controller = new ComputerController(computerDataService.Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Add(new Computer());

            Assert.IsInstanceOf<RedirectToRouteResult>(result);
            computerDataService.VerifyAll();
        }
        public void Manifest_ReturnsView()
        {
            var fakeComputer = new Computer
                                   {
                                       Id = Guid.NewGuid(),
                                       ManifestHtml =
                                           @"
                                                <html>
                                                    <head><title>LB0124</title></head>
                                                    <body>
                                                        <p>Hello World LB0124</p>
                                                    </body>
                                                </html>"
                                   };

            var computerDataService = new Mock<IDataService<Computer>>();

            computerDataService.Setup(c => c.SelectOne(It.IsAny<Expression<Func<Computer, bool>>>()))
                .Returns(fakeComputer);

            var controller = new ComputerController(computerDataService.Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Manifest(fakeComputer.Id);

            Assert.IsInstanceOf<ViewResult>(result);
        }
        public void Index_WithQuery_ReturnsView()
        {
            var computerDataService = new Mock<IDataService<Computer>>();

            computerDataService.Setup(c => c.SelectAll(It.IsAny<Expression<Func<Computer, bool>>>(),
                It.IsAny<Expression<Func<Computer, object>>>(), 0, 100))
                .Returns(new List<Computer>
                             {
                                 new Computer()
                             });

            var controller = new ComputerController(computerDataService.Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Index("LB0123");

            Assert.IsInstanceOf<ViewResult>(result);

            var view = (ViewResult) result;

            Assert.IsNotNull(view.ViewData.Model);
            Assert.IsInstanceOf<List<Computer>>(view.ViewData.Model);
        }
        public void Edit_ValidModel_ReturnsRedirect()
        {
            var computerFake = new Computer
                                   {
                                       WindowsLicense = "1234",
                                   };

            var computerDataServiceMock = new Mock<IDataService<Computer>>();
            computerDataServiceMock.Setup(c => c.Update(It.IsAny<Computer>())).Verifiable();
            computerDataServiceMock.Setup(c => c.SelectOne(It.IsAny<Expression<Func<Computer, bool>>>()))
                .Returns(computerFake);

            var formsAuthenticationServiceMock = new Mock<IFormsAuthenticationService>();
            formsAuthenticationServiceMock.Setup(f => f.GetVolunteerID(null))
                .Returns(Guid.NewGuid());

            var volunterDataServiceMock = new Mock<IDataService<Volunteer>>();
            volunterDataServiceMock.Setup(v => v.SelectOne(It.IsAny<Expression<Func<Volunteer, bool>>>()))
                .Returns(new Volunteer());

            var windowsLicenseFake = new WindowsLicense();
            var windowsLicenseDataServiceMock = new Mock<IDataService<WindowsLicense>>();
            windowsLicenseDataServiceMock.Setup(w => w.SelectOne(It.IsAny<Expression<Func<WindowsLicense, bool>>>()))
                .Returns(windowsLicenseFake);
            windowsLicenseDataServiceMock.Setup(w => w.Update(windowsLicenseFake)).Verifiable();

            var controller = new ComputerController(computerDataServiceMock.Object,
                                                    formsAuthenticationServiceMock.Object,
                                                    windowsLicenseDataServiceMock.Object,
                                                    volunterDataServiceMock.Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Edit(computerFake);

            Assert.IsInstanceOf<RedirectToRouteResult>(result);
            computerDataServiceMock.VerifyAll();
            windowsLicenseDataServiceMock.VerifyAll();
        }
        public void Edit_ReturnsView()
        {
            var computerDataServiceMock = new Mock<IDataService<Computer>>();
            computerDataServiceMock.Setup(c => c.SelectOne(It.IsAny<Expression<Func<Computer, bool>>>()))
                .Returns(new Computer());

            var controller = new ComputerController(computerDataServiceMock.Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Edit(Guid.NewGuid());

            Assert.IsInstanceOf<ViewResult>(result);

            var view = (ViewResult) result;
            Assert.IsInstanceOf<Computer>(view.Model);
        }
        public void Edit_InvalidModel_ReturnsView()
        {
            var controller = new ComputerController(new Mock<IDataService<Computer>>().Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            controller.ModelState.AddModelError("test", "error");

            ActionResult result = controller.Edit(new Computer());

            Assert.IsInstanceOf<ViewResult>(result);
        }
        public void Deliver_ValidPost_ReturnsRedirect()
        {
            var computerDataService = new Mock<IDataService<Computer>>();
            computerDataService.Setup(c => c.SelectOne(It.IsAny<Expression<Func<Computer, bool>>>()))
                .Returns(new Computer());

            var recipientDataServiceMock = new Mock<IDataService<Recipient>>();
            recipientDataServiceMock.Setup(r => r.SelectAll(It.IsAny<Expression<Func<Recipient, bool>>>(),
                It.IsAny<Expression<Func<Recipient, object>>>(), 0, 100))
                .Returns(new List<Recipient>());

            var controller = new ComputerController(computerDataService.Object,
                                                      new Mock<IFormsAuthenticationService>().Object,
                                                      new Mock<IDataService<WindowsLicense>>().Object,
                                                      new Mock<IDataService<Volunteer>>().Object,
                                                      recipientDataServiceMock.Object);

            var result = controller.Deliver(new DeliverComputerViewModel());

            Assert.IsInstanceOf<RedirectToRouteResult>(result);
        }
        public void Add_ValidModelWithLicenseTypeNoResultsPost_ReturnsView()
        {
            var controller = new ComputerController(new Mock<IDataService<Computer>>().Object,
                                                    new Mock<IFormsAuthenticationService>().Object,
                                                    new Mock<IDataService<WindowsLicense>>().Object,
                                                    new Mock<IDataService<Volunteer>>().Object,
                                                    new Mock<IDataService<Recipient>>().Object);

            ActionResult result = controller.Add(new Computer
                                                     {
                                                         LicenseType = "WinXP",
                                                     });

            Assert.IsInstanceOf<ViewResult>(result);
        }