public void GridViewRowCommand_CommandDel_RemoveUserRedirect()
        {
            // Arrange
            var actualUrl          = string.Empty;
            var actualRedirectFlag = SPRedirectFlags.Default;
            var actualRedirect     = false;
            var actualUserRemoved  = false;

            ShimSPContext.CurrentGet = () => new ShimSPContext()
            {
                WebGet = () => new ShimSPWeb()
                {
                    AllUsersGet = () => new ShimSPUserCollection()
                    {
                        ItemGetString = itemName => new ShimSPUser()
                    },
                    GroupsGet = () => new ShimSPGroupCollection().Bind(
                        new SPGroup[]
                    {
                        new ShimSPGroup()
                        {
                            CanCurrentUserEditMembershipGet = () => true,
                            RemoveUserSPUser = user => actualUserRemoved = true
                        }
                    }),
                    UrlGet = () => DummyUrl
                }
            };

            ShimSPUtility.RedirectStringSPRedirectFlagsHttpContext = (url, flags, context) =>
            {
                actualUrl          = url;
                actualRedirectFlag = flags;
                actualRedirect     = true;
                return(true);
            };

            var eventArgsSend = new ShimGridViewCommandEventArgs()
            {
            };

            var commandEventArgs = new ShimCommandEventArgs(eventArgsSend)
            {
                CommandNameGet     = () => "Del",
                CommandArgumentGet = () => DummyString
            };

            // Act
            _privateObject.Invoke(GridView1RowCommandMethodName, this, eventArgsSend.Instance);

            // Assert
            this.ShouldSatisfyAllConditions(
                () => actualUrl.ShouldBe("epmlive/sitepermissions.aspx?"),
                () => actualRedirectFlag.ShouldBe(SPRedirectFlags.RelativeToLayoutsPage),
                () => actualRedirect.ShouldBeTrue());
        }
        public void GridViewRowCommand_CommandEdiIsAdminFalseCanEditFalse_RemoveUserRedirect()
        {
            // Arrange

            ShimSPContext.CurrentGet = () => new ShimSPContext()
            {
                WebGet = () => new ShimSPWeb()
                {
                    AllUsersGet = () => new ShimSPUserCollection()
                    {
                        ItemGetString = itemName => new ShimSPUser()
                        {
                            IsSiteAdminGet = () => false,
                            NameGet        = () => DummyUserNameName,
                            EmailGet       = () => DummyUserEmail,
                            GroupsGet      = () => new ShimSPGroupCollection().Bind(
                                new SPGroup[]
                            {
                                new ShimSPGroup()
                                {
                                    NameGet = () => DummyGroupName
                                }
                            })
                        }
                    },
                    UserIsSiteAdminGet = () => true,
                    GroupsGet          = () => new ShimSPGroupCollection().Bind(
                        new SPGroup[]
                    {
                        new ShimSPGroup()
                        {
                            NameGet = () => DummyGroupName
                        },
                        new ShimSPGroup()
                        {
                            NameGet = () => DummyGroupName2
                        }
                    }),
                    SiteGroupsGet = () => new ShimSPGroupCollection()
                    {
                        ItemGetString = itemName => new ShimSPGroup()
                        {
                            CanCurrentUserEditMembershipGet = () => false
                        }
                    }
                }
            };


            _privateObject.SetField(HiddenUsernameFieldName, new HiddenField());

            var eventArgsSend = new ShimGridViewCommandEventArgs()
            {
            };

            var commandEventArgs = new ShimCommandEventArgs(eventArgsSend)
            {
                CommandNameGet     = () => "Edi",
                CommandArgumentGet = () => DummyUserName
            };

            // Act
            _privateObject.Invoke(GridView1RowCommandMethodName, this, eventArgsSend.Instance);

            // Assert
            LoadFields();

            this.ShouldSatisfyAllConditions(
                () => _labelName.Text.ShouldBe(DummyUserNameName),
                () => _labelUserName.Text.ShouldBe(DummyUserName),
                () => _labelEmail.Text.ShouldBe(DummyUserEmail),
                () => ((LiteralControl)_panelGroups.Controls[0]).Text.ShouldBe("<input type=\"checkbox\" name=\"Groups\" value=\"@\"> Site Collection Administrator"),
                () => ((LiteralControl)_panelGroups.Controls[1]).Text.ShouldBe("<br>"),
                () => ((LiteralControl)_panelGroups.Controls[2]).Text.ShouldBe($"<input type=\"checkbox\" name=\"Groups\" checked value=\"{DummyGroupName}\" disabled>{DummyGroupName}"),
                () => ((LiteralControl)_panelGroups.Controls[3]).Text.ShouldBe("<br>"),
                () => ((LiteralControl)_panelGroups.Controls[4]).Text.ShouldBe($"<input type=\"checkbox\" name=\"Groups\" value=\"{DummyGroupName2}\" disabled>{DummyGroupName2}"),
                () => ((LiteralControl)_panelGroups.Controls[5]).Text.ShouldBe("<br>"));
        }