public void BtnSaveClick_ExceptionOnSave_UpdateControlsAndRedirectToBaseChannelMainPage()
        {
            // Arrange
            var applicationLog = new Mock <IApplicationLog>();

            applicationLog.Setup(x => x.LogCriticalError(
                                     It.IsAny <ECNException>(),
                                     "BaseChannelAbuse.btnSave_Click",
                                     DummyUserID,
                                     string.Empty,
                                     DummyUserID,
                                     DummyUserID));

            var landingPageAssignContent = new Mock <ILandingPageAssignContent>();

            landingPageAssignContent
            .Setup(x => x.Delete(It.IsAny <int>(), It.IsAny <User>()))
            .Throws(new ECNException(null));

            var master = new Mock <IMasterCommunicator>();

            master.Setup(x => x.GetUserID()).Throws(new ECNException(null));

            _channel = CreateChannel(null, true, applicationLog.Object, landingPageAssignContent, master);
            InitializeBtnSaveException();

            // Act
            var parameters = new object[] { null, null };

            ReflectionHelper.ExecuteMethod(_channel, "btnSave_Click", parameters);

            // Assert
            applicationLog.VerifyAll();
        }
        public void PageLoad_NotChannelAdministrator_ShowNoAccessPanelAndDisplayError()
        {
            // Arrange
            _channel = CreateChannel(null, false);
            InitializePageLoadControls(false, true, false);

            // Act
            var parameters = new object[] { null, EventArgs.Empty };

            ReflectionHelper.ExecuteMethod(_channel, PageLoadMethodName, parameters);

            // Assert
            var previewButton = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, PreviewButtonName)
                                .GetValue(_channel) as Button;

            previewButton.ShouldSatisfyAllConditions(
                () => previewButton.ShouldNotBeNull(),
                () => previewButton.Enabled.ShouldBeFalse(),
                () => previewButton.Visible.ShouldBeFalse());

            AssertPanelVisibility(NoAccessPanelName, true);
            AssertPanelVisibility(SettingsPanelName, false);

            var errorLabel = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, Label1Name)
                             .GetValue(_channel) as Label;

            errorLabel.ShouldSatisfyAllConditions(
                () => errorLabel.ShouldNotBeNull(),
                () => errorLabel.Text.ShouldBe("You do not have access to this page."));
        }
        public void DdlCustomerSelectedIndexChanged_ZeroSelectedIndex_DisablePreview()
        {
            // Arrange
            _channel = CreateChannelWithEmptyPreviewParameters();
            InitializeDropDownCustomerControls(ZeroSelectedIndex, NonEmptyText, true, BorderStyle.Dashed);
            ReflectionHelper.SetField(_channel, FieldLandingPageAssign, new LandingPageAssign()
            {
                LPAID = LandingPageID
            });

            // Act
            var parameters = new object[] { null, EventArgs.Empty };

            ReflectionHelper.ExecuteMethod(_channel, DdlCustomerSelectedIndexChangedMethodName, parameters);

            // Assert
            var previewButton = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, HtmlPreviewShowButtonName)
                                .GetValue(_channel) as Button;

            previewButton.ShouldSatisfyAllConditions(
                () => previewButton.ShouldNotBeNull(),
                () => previewButton.Enabled.ShouldBeFalse(),
                () => previewButton.Visible.ShouldBeFalse());

            var urlWarning = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, UrlWarningLabelName)
                             .GetValue(_channel) as Label;

            urlWarning.ShouldSatisfyAllConditions(
                () => urlWarning.ShouldNotBeNull(),
                () => urlWarning.BorderStyle.ShouldBe(BorderStyle.None),
                () => urlWarning.Text.ShouldBeEmpty());
        }
        public void DdlCustomerSelectedIndexChanged_NullUrl_DisablePreview()
        {
            // Arrange
            _channel = CreateChannelWithEmptyPreviewParameters();
            InitializeDropDownCustomerControls(NonZeroSelectedIndex, NonEmptyText, true, BorderStyle.None);
            ReflectionHelper.SetField(_channel, FieldLandingPageAssign, new LandingPageAssign()
            {
                LPAID = LandingPageID
            });

            // Act
            var parameters = new object[] { null, EventArgs.Empty };

            ReflectionHelper.ExecuteMethod(_channel, DdlCustomerSelectedIndexChangedMethodName, parameters);

            // Assert
            var previewButton = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, HtmlPreviewShowButtonName)
                                .GetValue(_channel) as Button;

            previewButton.ShouldSatisfyAllConditions(
                () => previewButton.ShouldNotBeNull(),
                () => previewButton.Enabled.ShouldBeFalse(),
                () => previewButton.Visible.ShouldBeFalse());

            var urlWarning = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, UrlWarningLabelName)
                             .GetValue(_channel) as Label;

            urlWarning.ShouldSatisfyAllConditions(
                () => urlWarning.ShouldNotBeNull(),
                () => urlWarning.BorderColor.ShouldBe(Color.Red),
                () => urlWarning.BorderStyle.ShouldBe(BorderStyle.Dashed),
                () => urlWarning.Text.ShouldBe(
                    $"Something is wrong with the {CustomerDropDownItem2} report abuse page. \n Please ensure that the customer has sent blasts to at least one group."));
        }
        public void PageLoad_ChannelAdministrator_EnableSettingsPanelAndLoadData()
        {
            // Arrange
            var landingPageOption = new Mock <ILandingPageOption>();

            landingPageOption.Setup(x => x.GetByLPID(It.IsAny <int>()))
            .Returns(new List <LandingPageOption>()
            {
                new LandingPageOption()
                {
                    LPOID = LandingPageID,
                    Name  = TextContainsThankYou
                }
            });

            _channel = CreateChannel(landingPageOption.Object);
            InitializePageLoadControls(true, false, true);

            // Act
            var parameters = new object[] { null, EventArgs.Empty };

            ReflectionHelper.ExecuteMethod(_channel, PageLoadMethodName, parameters);

            // Assert
            var previewButton = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, PreviewButtonName)
                                .GetValue(_channel) as Button;

            previewButton.ShouldSatisfyAllConditions(
                () => previewButton.ShouldNotBeNull(),
                () => previewButton.Enabled.ShouldBeTrue(),
                () => previewButton.Visible.ShouldBeTrue());

            AssertPanelVisibility(NoAccessPanelName, false);
            AssertPanelVisibility(SettingsPanelName, true);
            AssertTextBox(ThankYouTextBoxName, NonEmptyText);
        }
 public void SetUp()
 {
     _channel = CreateChannel();
 }
        public void BtnSaveClick_NullLandingPageAssignAndNonEmptyThankYouText_UpdateControlsAndRedirectToBaseChannelMainPage()
        {
            // Arrange
            var listOptions = ReflectionHelper.GetFieldInfoFromInstanceTypeByName(typeof(BaseChannelAbuse), "_listOptions");

            listOptions.SetValue(
                null,
                new List <LandingPageOption>()
            {
                new LandingPageOption()
                {
                    LPOID = LandingPageID,
                    Name  = TextContainsThankYou
                }
            });

            LandingPageAssignContent landingPageAssignContentParameterValue = null;
            var landingPageAssignContent = new Mock <ILandingPageAssignContent>();

            landingPageAssignContent
            .Setup(x => x.Save(It.IsAny <LandingPageAssignContent>(), It.IsAny <User>()))
            .Callback <LandingPageAssignContent, User>((landingPageAssignContentValue, userValue) =>
            {
                landingPageAssignContentParameterValue = landingPageAssignContentValue;
            });

            _channel = CreateChannel(null, true, null, landingPageAssignContent);
            InitializeControls(NonEmptyText, NonEmptyText, NonEmptyText);

            // Act
            var parameters = new object[] { null, null };

            ReflectionHelper.ExecuteMethod(_channel, "btnSave_Click", parameters);

            // Assert
            var landingPageAssign = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, FieldLandingPageAssign).GetValue(_channel) as LandingPageAssign;

            landingPageAssign.ShouldSatisfyAllConditions(
                () => landingPageAssign.ShouldNotBeNull(),
                () => landingPageAssign.CreatedUserID.ShouldBe(DummyUserID),
                () => landingPageAssign.BaseChannelID.HasValue.ShouldBeTrue(),
                () => landingPageAssign.BaseChannelID.Value.ShouldBe(DummyBaseChannelID),
                () => landingPageAssign.LPID.ShouldBe(LandingPageID),
                () => landingPageAssign.BaseChannelDoesOverride.Value.ShouldNotBeNull(),
                () => landingPageAssign.BaseChannelDoesOverride.Value.ShouldBeFalse(),
                () => landingPageAssign.CustomerCanOverride.Value.ShouldNotBeNull(),
                () => landingPageAssign.CustomerCanOverride.Value.ShouldBeFalse(),
                () => landingPageAssign.Header.ShouldBe(NonEmptyText),
                () => landingPageAssign.Footer.ShouldBe(NonEmptyText),
                () => landingPageAssign.UpdatedUserID.ShouldBe(DummyUserID));

            landingPageAssignContentParameterValue.ShouldSatisfyAllConditions(
                () => landingPageAssignContentParameterValue.ShouldNotBeNull(),
                () => landingPageAssignContentParameterValue.Display.ShouldBe(NonEmptyText),
                () => landingPageAssignContentParameterValue.CreatedUserID.ShouldBe(DummyUserID),
                () => landingPageAssignContentParameterValue.LPAID = landingPageAssign.LPAID,
                () => landingPageAssignContentParameterValue.LPOID = LandingPageID);

            var previewButton = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, PreviewButtonName).GetValue(_channel) as Button;

            previewButton.ShouldSatisfyAllConditions(
                () => previewButton.ShouldNotBeNull(),
                () => previewButton.Enabled.ShouldBeTrue(),
                () => previewButton.Visible.ShouldBeTrue(),
                () => previewButton.CssClass.ShouldBe(ECNButtonMedium));

            var errorMessageLabel = ReflectionHelper.GetFieldInfoFromInstanceByName(_channel, "lblErrorMessage").GetValue(_channel) as Label;

            errorMessageLabel.ShouldSatisfyAllConditions(
                () => errorMessageLabel.ShouldNotBeNull(),
                () => errorMessageLabel.Text.ShouldBe(NonEmptyText));

            _response.Verify(x => x.Redirect("BaseChannelMain.aspx"), Times.Once());
        }