public void BaseControllerRedirectBackActuallyRedirects()
        {
            // prepare
            var context = HttpMocks.GetControllerContextMock().Object;
            var contr = new UnprotectedBase { ControllerContext = context };

            // act
            var result = contr.RedirectBack();

            // assert
            result.Should().BeOfType<RedirectToRouteResult>();
        }
        public void BaseControllerRedirectBackAllEmptyGoesToHomeIndex()
        {
            // prepare
            var session = new HttpSessionMock();
            var context = HttpMocks.GetControllerContextMock(HttpMocks.GetHttpContextMock(sessionMock: session)).Object;
            var contr = new UnprotectedBase { ControllerContext = context };

            // act
            var result = contr.RedirectBack();

            // assert
            result.Should().BeRedirectToRouteResult().WithController("home").WithAction("index");
            result.As<RedirectToRouteResult>().RouteValues.Should().NotContainKey("id");
        }
        public void BaseControllerRedirectBackNoParmsGoesToSessionControllerActionId()
        {
            // prepare
            var session = new HttpSessionMock();
            session["ReturnControllerAction"] = new ReturnControllerActionIdentifier
            {
                ControllerName = "TestableCtr",
                ActionName = "TestAction",
                EntityId = "123456-654321",
                BookmarkTag = null
            };
            var context = HttpMocks.GetControllerContextMock(HttpMocks.GetHttpContextMock(sessionMock: session)).Object;
            var contr = new UnprotectedBase { ControllerContext = context };

            // act
            var result = contr.RedirectBack();

            // assert
            result.As<RedirectToRouteResult>().RouteValues.Should().ContainKeys("controller", "action", "id");
            result.As<RedirectToRouteResult>().RouteValues["controller"].Should().Be("TestableCtr");
            result.As<RedirectToRouteResult>().RouteValues["action"].Should().Be("TestAction");
            result.As<RedirectToRouteResult>().RouteValues["id"].Should().Be("123456-654321");
        }
        public void BaseControllerRedirectBackWithParmTagStoresTag()
        {
            // prepare
            var session = new HttpSessionMock();
            session["ReturnControllerAction"] = new ReturnControllerActionIdentifier
            {
                ControllerName = "FallbackCtr",
                ActionName = "FallbackAction",
                EntityId = "abcdef123",
                BookmarkTag = "FallbackTag"
            };

            var contr = new UnprotectedBase();
            var context = HttpMocks.GetControllerContextMock(HttpMocks.GetHttpContextMock(sessionMock: session), controller: contr).Object;
            contr.ControllerContext = context;

            // act
            var result = contr.RedirectBack("DirectedCtrl", "DirectedAction", "505050", "DirectTag");

            // assert
            contr.TempData.Should().ContainKey("bookmarkTag");
            contr.TempData["bookmarkTag"].Should().Be("DirectTag");
        }
        public void BaseControllerRedirectBackWithParmsGoesToSpecifiedControllerIndex()
        {
            // prepare
            var session = new HttpSessionMock();
            session["ReturnControllerAction"] = new ReturnControllerActionIdentifier
            {
                ControllerName = "FallbackCtr",
                ActionName = "FallbackAction",
                EntityId = "abcdef123",
                BookmarkTag = "FallbackTag"
            };
            var context = HttpMocks.GetControllerContextMock(HttpMocks.GetHttpContextMock(sessionMock: session)).Object;
            var contr = new UnprotectedBase { ControllerContext = context };

            // act
            var result = contr.RedirectBack("DirectedCtrl");

            // assert
            result.As<RedirectToRouteResult>().RouteValues.Should().ContainKeys("controller", "action");
            result.As<RedirectToRouteResult>().RouteValues.Should().NotContainKey("id");
            result.As<RedirectToRouteResult>().RouteValues["controller"].Should().Be("DirectedCtrl");
            result.As<RedirectToRouteResult>().RouteValues["action"].Should().Be("Index");
        }
        public void BaseControllerRedirectBackNoParmsGoesToSessionControllerIndex()
        {
            // prepare
            var session = new HttpSessionMock();
            session["ReturnControllerAction"] = new ReturnControllerActionIdentifier
            {
                ControllerName = "TestableCtr",
                ActionName = null,
                EntityId = null,
                BookmarkTag = null
            };
            var context = HttpMocks.GetControllerContextMock(HttpMocks.GetHttpContextMock(sessionMock: session)).Object;
            var contr = new UnprotectedBase { ControllerContext = context };

            // act
            var result = contr.RedirectBack();

            // assert
            result.Should().BeRedirectToRouteResult().WithController("TestableCtr").WithAction("Index");
            result.As<RedirectToRouteResult>().RouteValues.Should().NotContainKey("id");
        }