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)); }
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); }
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); }
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()); }
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()); }
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)); }
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)); }
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); }
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); }