示例#1
0
        public void RenderWebPart_OnException_WritesErrorContent()
        {
            // Arrange
            const string Error           = "Dummy Error";
            const string ExpectedMessage = "RWP: " + Error;
            var          stringBuilder   = new StringBuilder();
            var          writer          = new ShimHtmlTextWriter
            {
                WriteString = content => stringBuilder.Append(content)
            }.Instance;

            ShimControl.AllInstances.EnsureChildControls = _ =>
            {
                throw new Exception(Error);
            };

            // Act
            privateObject.Invoke(RenderWebPartMethodName, writer);
            var result = stringBuilder.ToString();

            // Assert
            stringBuilder.ShouldSatisfyAllConditions(
                () => result.ShouldNotBeNullOrEmpty(),
                () => result.ShouldContain(ExpectedMessage));
        }
示例#2
0
        public void RenderControl_With_Display_And_Count_Less_Than_Max()
        {
            // Arrange
            var writer = new ShimHtmlTextWriter();

            _htmlWriterShims.Contents.Add(writer.Instance, new StringBuilder());
            _privateObject.SetFieldOrProperty(IsFeatureActivatedField, true);
            _privateObject.SetFieldOrProperty(Isonline, true);
            _privateObject.SetFieldOrProperty(IsResListField, true);
            _privateObject.SetFieldOrProperty(ListField, new ShimSPList().Instance);
            _privateObject.SetFieldOrProperty(CountField, 1);
            _privateObject.SetFieldOrProperty(NameField, 2);

            ShimFormComponent.AllInstances.ControlModeGet = _ => SPControlMode.Display;
            ShimPage.AllInstances.RequestGet              = page => new HttpRequest(string.Empty, "http://site.com", "IsDlg=1&GetLastID=true");
            ShimSPUser.AllInstances.IsSiteAdminGet        = _ => true;
            ShimCoreFunctions.getConfigSettingSPWebString = (a, b) => true.ToString();

            // Act
            _listDisplaySettingIterator.RenderControl(writer);

            // Assert
            Assert.AreEqual(3, _htmlWriterShims.TextWriterCreated.Count);
            var list = _htmlWriterShims.Contents.Values.ToList();

            Assert.AreEqual(4, list.Count);
            list[0].ToString().Trim().ShouldBe(Resources.RenderControl_With_Display_And_Count_Less_Than_Max);
            list[1].ToString().ShouldBe(Resources.User);
            list[2].ToString().ShouldBe(Resources.Profile);
            list[3].ToString().ShouldBe(Resources.Permissions);
        }
示例#3
0
        public void RenderControl_With_Display()
        {
            // Arrange
            var writer = new ShimHtmlTextWriter();

            _htmlWriterShims.Contents.Add(writer.Instance, new StringBuilder());
            _privateObject.SetFieldOrProperty(IsFeatureActivatedField, true);
            _privateObject.SetFieldOrProperty(Isonline, true);
            _privateObject.SetFieldOrProperty(IsResListField, true);
            _privateObject.SetFieldOrProperty(ListField, new ShimSPList().Instance);
            _privateObject.SetFieldOrProperty(DControlsField, GetDictionary());

            ShimFormComponent.AllInstances.ControlModeGet = _ => SPControlMode.Display;
            ShimPage.AllInstances.RequestGet = page => new HttpRequest(string.Empty, "http://site.com", "IsDlg=1&GetLastID=true");

            // Act
            _listDisplaySettingIterator.RenderControl(writer);

            // Assert
            Assert.AreEqual(3, _htmlWriterShims.TextWriterCreated.Count);
            var list = _htmlWriterShims.Contents.Values.ToList();

            Assert.AreEqual(4, list.Count);
            list[0].ToString().Trim().ShouldBe(Resources.RenderControl_With_Display_Expected);
            list[1].ToString().ShouldBe(Resources.User);
            list[2].ToString().ShouldBe(Resources.Profile);
            list[3].ToString().ShouldBe(Resources.Permissions);
        }
示例#4
0
        public void RenderControl_With_Display_And_arrwpFields()
        {
            // Arrange
            const string InternalName = "name";
            var          sortedList   = new SortedList
            {
                { InternalName, true }
            };
            var writer = new ShimHtmlTextWriter();

            _htmlWriterShims.Contents.Add(writer.Instance, new StringBuilder());
            _privateObject.SetFieldOrProperty(IsFeatureActivatedField, true);
            _privateObject.SetFieldOrProperty(Isonline, true);
            _privateObject.SetFieldOrProperty(IsResListField, true);
            _privateObject.SetFieldOrProperty(ListField, new ShimSPList().Instance);
            _privateObject.SetFieldOrProperty("arrwpFields", sortedList);

            ShimFormComponent.AllInstances.ControlModeGet = _ => SPControlMode.Display;
            ShimPage.AllInstances.RequestGet = page => new HttpRequest(string.Empty, "http://site.com", "IsDlg=1&GetLastID=true");
            ShimListDisplaySettingIterator.GetControlTypeControlInt32 = (a, b) => "Microsoft.SharePoint.WebControls.FieldLabel";

            // Act
            _listDisplaySettingIterator.RenderControl(writer);

            // Assert
            Assert.AreEqual(3, _htmlWriterShims.TextWriterCreated.Count);
            var list = _htmlWriterShims.Contents.Values.ToList();

            Assert.AreEqual(4, list.Count);
            list[0].ToString().Trim().ShouldBe(Resources.RenderControl_With_Display_And_arrwpFields);
            list[1].ToString().ShouldBe(Resources.User);
            list[2].ToString().ShouldBe(Resources.Profile);
            list[3].ToString().ShouldBe(Resources.Permissions);
        }
        public void Render_Should_ExecuteCorrectly()
        {
            // Arrange
            var stringBuilder = new StringBuilder();
            var writer        = new ShimHtmlTextWriter
            {
                WriteString = content => stringBuilder.Append(content)
            }.Instance;

            ShimSPHttpUtility.UrlKeyValueDecodeString = content => content;
            ShimHttpContext.CurrentGet = () => new ShimHttpContext
            {
                RequestGet = () => new ShimHttpRequest
                {
                    UrlGet = () => new Uri(DummyUrl)
                }
            };
            ShimAppSettingsHelper.AllInstances.GetCurrentAppTitle = _ => string.Empty;
            ShimSPWeb.AllInstances.ListsGet = _ =>
            {
                var list = new List <SPList>
                {
                    new ShimSPList
                    {
                        HiddenGet = () => false
                    }
                };
                return(new ShimSPListCollection().Bind(list));
            };
            ShimSPListCollection.AllInstances.TryGetListString = (_, name) => new ShimSPList
            {
                GetItemByIdInt32 = id => new ShimSPListItem
                {
                    ItemGetString = itemName => "DummyValue"
                }
            };
            ShimBtnChangeApp.AllInstances.GetWelcomePage = _ => "Dummyurl";
            CommunityId           = -1;
            UrlIsHomeMethodReturn = false;
            ShimBtnChangeApp.AllInstances.UrlIsHomePageStringInt32Out = UrlIsHomePage;
            var expectedContent = new List <string>
            {
                "<script type=\"text/javascript\" src=\"/_layouts/epmlive/javascripts/BtnChangeApp.js\"></script>",
                "<div id=\"divChangeAppMenu\" style=\"z-index: 103; position: absolute; width: 159px; display:none; top: 28px; left: -86px\"",
                "dir=\"ltr\" class=\"ms-core-menu-box ms-core-defaultFont ms-shadow\" title=\"\" ismenu=\"true\" level=\"0\"",
                "_backgroundframeid=\"msomenuid4\" flipped=\"false\" LeftForBackIframe=\"13\" TopForBackIframe=\"30\">",
                "<span onlick=\"document.getElementById('lnkChangeApp').click()\">",
                $"<span onlick=\"document.getElementById('lnkChangeApp').click()\" id=\"spnChangeAppText\" >No Community</span>"
            };

            // Act
            privateObject.Invoke(RenderMethodName, writer);
            var result = stringBuilder.ToString();

            // Assert
            result.ShouldSatisfyAllConditions(
                () => result.ShouldNotBeNullOrEmpty(),
                () => expectedContent.ForEach(content => result.ShouldContain(content)));
        }
        public void Render_CurrentUrlDifferentFromSPFieldUrl_ShouldRedirect()
        {
            // Arrange
            var redirectUrl   = string.Empty;
            var stringBuilder = new StringBuilder();
            var writer        = new ShimHtmlTextWriter
            {
                WriteString = content => stringBuilder.Append(content)
            }.Instance;

            ShimSPHttpUtility.UrlKeyValueDecodeString = content => content;
            ShimHttpContext.CurrentGet = () => new ShimHttpContext
            {
                RequestGet = () => new ShimHttpRequest
                {
                    UrlGet = () => new Uri(DummyUrl)
                }
            };
            ShimAppSettingsHelper.AllInstances.GetCurrentAppTitle = _ => string.Empty;
            ShimSPWeb.AllInstances.ListsGet = _ =>
            {
                var list = new List <SPList>();
                return(new ShimSPListCollection().Bind(list));
            };
            ShimSPListCollection.AllInstances.TryGetListString = (_, name) => new ShimSPList
            {
                GetItemByIdInt32 = id => new ShimSPListItem
                {
                    ItemGetString = itemName => "DummyValue"
                }
            };
            ShimBtnChangeApp.AllInstances.GetWelcomePage = _ => DummyUrl;
            ShimSPFieldUrlValue.AllInstances.UrlGet      = _ => "dummy/url";
            UrlIsHomeMethodReturn = false;
            ShimBtnChangeApp.AllInstances.UrlIsHomePageStringInt32Out = UrlIsHomePage;
            ShimSPUtility.RedirectStringSPRedirectFlagsHttpContext    = (url, flags, context) =>
            {
                redirectUrl = url;
                return(true);
            };

            // Act
            privateObject.Invoke(RenderMethodName, writer);

            // Assert
            redirectUrl.ShouldSatisfyAllConditions(
                () => redirectUrl.ShouldNotBeNullOrEmpty(),
                () => redirectUrl.ShouldBe("dummy/url"));
        }
        public void CreateMsgBody_DisposesProperly()
        {
            // Arrange
            var stringWriterDisposed = false;
            var htmlWriterDisposed   = false;

            ShimHtmlTextWriter.AllInstances.WriteString       = (_1, _2) => { };
            ShimHtmlTextWriter.AllInstances.WriteStringObject = (_1, _2, _3) => { };

            ShimStringWriter.Constructor = writer =>
            {
                var shimWriter = new ShimStringWriter(writer)
                {
                    ToString = () => string.Empty
                };
                var textWriter = new ShimTextWriter(shimWriter)
                {
                    Dispose = () => stringWriterDisposed = true
                };
            };

            ShimHtmlTextWriter.ConstructorTextWriter = (writer, _) =>
            {
                var shimWriter = new ShimHtmlTextWriter(writer);
                var textWriter = new ShimTextWriter(shimWriter)
                {
                    Dispose = () =>
                    {
                        if (stringWriterDisposed)
                        {
                            throw new InvalidOperationException("HtmlTextWriter shouldn't dispose before  the inner stringWriter");
                        }
                        htmlWriterDisposed = true;
                    }
                };
            };
            ShimHttpUtility.HtmlDecodeString = s => s;
            ShimNotifications.AllInstances.convertDataToHTMLHtmlTextWriter = (_1, _2) => { };

            // Act
            _privateObject.Invoke(CreateMsgBodyMethodName, DummyUserDisplayName);

            // Assert
            this.ShouldSatisfyAllConditions(
                () => stringWriterDisposed.ShouldBeTrue(),
                () => htmlWriterDisposed.ShouldBeTrue());
        }
示例#8
0
        public void RenderControl_Should_Be_Empty()
        {
            // Arrange
            var wasCalled = false;
            var writer    = new ShimHtmlTextWriter();

            _htmlWriterShims.Contents.Add(writer.Instance, new StringBuilder());
            ShimControl.AllInstances.RenderControlHtmlTextWriter = (a, b) => wasCalled = true;

            // Act
            _listDisplaySettingIterator.RenderControl(writer);

            // Assert
            Assert.IsTrue(wasCalled);
            Assert.AreEqual(0, _htmlWriterShims.TextWriterCreated.Count);
            Assert.AreEqual(string.Empty, _htmlWriterShims.Contents[writer.Instance].ToString());
        }
示例#9
0
        public void RenderWebPart_Should_WriteExpectedContent()
        {
            // Arrange
            const int TasksTotal       = 10;
            const int Current          = 2;
            const int Late             = 4;
            const int Future           = 3;
            const int Complete         = 1;
            var       expectedContents = new List <string>
            {
                "<TABLE cellSpacing=0 cellPadding=2 width=\"100%\" border=0>",
                "<td title=\"Legend\" id=\"WebPartTitleWPQ2\" style=\"width:100 %; \">",
                "<td title=\"Project Summary\" id=\"WebPartTitleWPQ2\" style=\"width:100%;\">",
                "<td title=\"Risk Summary\" id=\"WebPartTitleWPQ2\" style=\"width:100%;\">",
                "<td title=\"Issue Summary\" id=\"WebPartTitleWPQ2\" style=\"width:100%;\">",
                "<td title=\"Milestone Summary\" id=\"WebPartTitleWPQ2\" style=\"width:100%;\">",
                "<nobr><span>Legend</span><span id=\"WebPartCaptionWPQ2\"></span></nobr>",
                $"In Progress: {Current} ( {Current * 100 / TasksTotal}% )",
                $"Late: {Late} ( {Late * 100 / TasksTotal}% )",
                $"Not Started: {Future} ( {Future * 100 / TasksTotal}% )",
                $"Completed: {Complete} ( {Complete * 100 / TasksTotal}% )",
            };
            var stringBuilder = new StringBuilder();
            var writer        = new ShimHtmlTextWriter
            {
                WriteString = content => stringBuilder.Append(content)
            }.Instance;

            ShimControl.AllInstances.EnsureChildControls = _ => { };
            ShimDashboard.AllInstances.buildProjectGrid  = _ => string.Empty;
            privateObject.SetFieldOrProperty("gvPJSummary", new SPGridView());
            privateObject.SetFieldOrProperty("ms_current", Current);
            privateObject.SetFieldOrProperty("ms_late", Late);
            privateObject.SetFieldOrProperty("ms_future", Future);
            privateObject.SetFieldOrProperty("ms_complete", Complete);

            // Act
            privateObject.Invoke(RenderWebPartMethodName, writer);
            var result = stringBuilder.ToString();

            // Assert
            stringBuilder.ShouldSatisfyAllConditions(
                () => result.ShouldNotBeNullOrEmpty(),
                () => expectedContents.ForEach(c => result.ShouldContainWithoutWhitespace(c)));
        }
        public void Render_UrlIsHomePage_ShouldRedirect()
        {
            // Arrange
            var redirectUrl   = string.Empty;
            var stringBuilder = new StringBuilder();
            var writer        = new ShimHtmlTextWriter
            {
                WriteString = content => stringBuilder.Append(content)
            }.Instance;

            CommunityId           = 1;
            UrlIsHomeMethodReturn = true;
            ShimBtnChangeApp.AllInstances.UrlIsHomePageStringInt32Out = UrlIsHomePage;
            ShimSPUtility.RedirectStringSPRedirectFlagsHttpContext    = (url, flags, context) =>
            {
                redirectUrl = url;
                return(true);
            };
            ShimSPWeb.AllInstances.UrlGet = _ => DummyUrl;
            ShimHttpContext.CurrentGet    = () => new ShimHttpContext
            {
                RequestGet = () => new ShimHttpRequest
                {
                    UrlGet = () => new Uri(DummyUrl)
                },
            };
            ShimSPWeb.AllInstances.ListsGet = _ =>
            {
                var list = new List <SPList>();
                return(new ShimSPListCollection().Bind(list));
            };
            ShimSPListCollection.AllInstances.TryGetListString = (_, name) => null;

            // Act
            privateObject.Invoke(RenderMethodName, writer);

            // Assert
            redirectUrl.ShouldSatisfyAllConditions(
                () => redirectUrl.ShouldNotBeNullOrEmpty(),
                () => redirectUrl.ShouldBe(DummyUrl));
        }
示例#11
0
        public void RenderWebPart_ActivationNegative1_WritesExpectedContent()
        {
            // Arrange
            const string ExpectedMessage = "Unable to retrieve activation status.";
            var          stringBuilder   = new StringBuilder();
            var          writer          = new ShimHtmlTextWriter
            {
                WriteString = content => stringBuilder.Append(content)
            }.Instance;

            privateObject.SetFieldOrProperty("activation", -1);

            // Act
            privateObject.Invoke(RenderWebPartMethodName, writer);
            var result = stringBuilder.ToString();

            // Assert
            stringBuilder.ShouldSatisfyAllConditions(
                () => result.ShouldNotBeNullOrEmpty(),
                () => result.ShouldBe(ExpectedMessage));
        }
示例#12
0
        public void RenderControl_With_New()
        {
            // Arrange
            var writer = new ShimHtmlTextWriter();

            _htmlWriterShims.Contents.Add(writer.Instance, new StringBuilder());
            _privateObject.SetFieldOrProperty(IsFeatureActivatedField, true);
            _privateObject.SetFieldOrProperty(Isonline, true);
            _privateObject.SetFieldOrProperty(ListField, new ShimSPList().Instance);

            ShimFormComponent.AllInstances.ControlModeGet = _ => SPControlMode.New;
            ShimPage.AllInstances.RequestGet = page => new HttpRequest(string.Empty, "http://site.com", "IsDlg=0");

            // Act
            _listDisplaySettingIterator.RenderControl(writer);

            // Assert
            Assert.AreEqual(0, _htmlWriterShims.TextWriterCreated.Count);
            var list = _htmlWriterShims.Contents.Values.ToList();

            Assert.AreEqual(1, list.Count);
            list[0].ToString().Trim().ShouldBe(Resources.RenderControl_With_New);
        }
示例#13
0
        public void RenderControl_With_Display_And_InternalName_Generic()
        {
            // Arrange
            var writer = new ShimHtmlTextWriter();

            _htmlWriterShims.Contents.Add(writer.Instance, new StringBuilder());
            _privateObject.SetFieldOrProperty(IsFeatureActivatedField, true);
            _privateObject.SetFieldOrProperty(Isonline, true);
            _privateObject.SetFieldOrProperty(IsResListField, true);
            _privateObject.SetFieldOrProperty(ListField, new ShimSPList().Instance);

            ShimSPField.AllInstances.InternalNameGet      = _ => "Generic";
            ShimFormComponent.AllInstances.ControlModeGet = _ => SPControlMode.Display;
            ShimPage.AllInstances.RequestGet = page => new HttpRequest(string.Empty, "http://site.com", "IsDlg=1&GetLastID=true");

            // Act
            _listDisplaySettingIterator.RenderControl(writer);

            // Assert
            Assert.AreEqual(3, _htmlWriterShims.TextWriterCreated.Count);
            var list = _htmlWriterShims.Contents.Values;

            Assert.AreEqual(4, list.Count);
        }