示例#1
0
        public void VerifyForeignKeysExist_CodeExist_ReturnString()
        {
            // Arrange
            var blastId      = 1;
            var blastGroupId = 1;
            var blastEngine  = new ECNBlastEngine();
            var exceptionMsg = "Code ID: ";

            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var blast = new BlastRegular();
                blast.BlastID   = blastId;
                blast.GroupID   = blastGroupId;
                blast.BlastType = BlastType.HTML.ToString();
                blast.CodeID    = 1;
                return(blast);
            };
            ShimGroup.GetByGroupID_NoAccessCheckInt32 = (id) =>
            {
                var group = new Group();
                return(group);
            };
            ShimDataFunctions.GetDataTableSqlCommand = (cmd) =>
            {
                return(new DataTable());
            };

            // Act
            var actualResult = typeof(ECNBlastEngine).CallMethod(METHOD_VerifyForeignKey,
                                                                 new object[] { blastId }, blastEngine).ToString();

            // Assert
            StringAssert.Contains(actualResult, exceptionMsg);
        }
        public void HandleSingleBlast_OnECNException_LogError()
        {
            // Arrange
            var emailFn         = new EmailFunctions();
            var blastEngine     = new ECNBlastEngine();
            var exceptionLogged = false;

            ShimApplicationLog.LogCriticalErrorExceptionStringInt32StringInt32Int32 =
                (ex, sourceMethod, applicationID, note, gdCharityID, ecnCustomerID) =>
            {
                exceptionLogged = true;
                return(1);
            };
            ShimDataFunctions.GetDataTableString = (cmd) =>
            {
                throw new CommonObjects::ECNException(new List <CommonObjects::ECNError>()
                {
                    new CommonObjects::ECNError
                    {
                        ErrorMessage = "HandleSingleBlast",
                    }
                });
            };
            ShimECNBlastEngine.AllInstances.SetBlastSingleToErrorInt32 = (eng, id) => { };

            // Act
            typeof(ECNBlastEngine).CallMethod(METHOD_HandleSingleBlast,
                                              new object[] { emailFn }, blastEngine);

            // Assert
            Assert.IsTrue(exceptionLogged);
        }
示例#3
0
        public void VerifyForeignKeysExist_BlastGroupIsNull_ReturnString()
        {
            // Arrange
            var blastId      = 1;
            var blastGroupId = 1;
            var blastEngine  = new ECNBlastEngine();
            var exceptionMsg = "Group ID: ";

            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var blast = new BlastRegular();
                blast.BlastID   = blastId;
                blast.GroupID   = blastGroupId;
                blast.BlastType = BlastType.HTML.ToString();
                return(blast);
            };
            ShimGroup.GetByGroupID_NoAccessCheckInt32 = (id) =>
            {
                return(null);
            };

            // Act
            var actualResult = typeof(ECNBlastEngine).CallMethod(METHOD_VerifyForeignKey,
                                                                 new object[] { blastId }, blastEngine).ToString();

            // Assert
            StringAssert.Contains(actualResult, exceptionMsg);
        }
示例#4
0
        public void VerifyForeignKeysExist_IsChampionSampleIDExist_ReturnString()
        {
            // Arrange
            var blastId      = 1;
            var blastGroupId = 1;
            var blastEngine  = new ECNBlastEngine();
            var exceptionMsg = "Blast ID:";

            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var blast = new BlastRegular();
                blast.BlastID   = blastId;
                blast.GroupID   = blastGroupId;
                blast.BlastType = BlastType.Champion.ToString();
                blast.LayoutID  = 1;
                blast.SampleID  = 1;
                return(blast);
            };
            ShimGroup.GetByGroupID_NoAccessCheckInt32 = (id) =>
            {
                var group = new Group();
                return(group);
            };
            ShimDataFunctions.GetDataTableSqlCommand = (cmd) =>
            {
                return(new DataTable());
            };
            ShimLayout.GetByLayoutID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var layout = new Layout();
                layout.ContentSlot1 = 0;
                layout.TemplateID   = 1;
                return(layout);
            };
            ShimECNBlastEngine.AllInstances.ContentExistsInt32 = (eng, id) =>
            {
                return("ContentExist");
            };
            ShimTemplate.GetByTemplateID_NoAccessCheckInt32 = (id) =>
            {
                var template = new Template
                {
                    TemplateSource = "TemplateSource",
                    TemplateText   = "TemplateText"
                };
                return(template);
            };
            ShimGroup.ValidateDynamicStringsForTemplateListOfStringInt32User = (list, groupId, user) => { };

            // Act
            var actualResult = typeof(ECNBlastEngine).CallMethod(METHOD_VerifyForeignKey,
                                                                 new object[] { blastId }, blastEngine).ToString();

            // Assert
            StringAssert.Contains(actualResult, exceptionMsg);
        }
示例#5
0
        public void CloneBlast_OnException_LogError()
        {
            // Arrange
            var exceptionLogged = false;
            var blastEngine     = new ECNBlastEngine();
            var blastId         = 1;
            var blastGroupId    = 1;
            var blast           = new EntitiesCommunicator::BlastRegular();

            blast.BlastID       = blastId;
            blast.GroupID       = blastGroupId;
            blast.BlastType     = BlastType.HTML.ToString();
            blast.CustomerID    = 1;
            blast.CreatedUserID = 1;
            var setupInfo = new EntitiesCommunicator::BlastSetupInfo();

            CommonFakes::ShimFileFunctions.LogConsoleActivityStringString = (str, output) => { };
            ShimDataFunctions.GetDataTableString = (cmd) =>
            {
                throw new Exception("Exception from SqlCommand");
            };
            ShimECNBlastEngine.AllInstances.SetBlastSingleToErrorInt32 = (eng, id) => { };
            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean           = (id, child) =>
            {
                return(blast);
            };
            BusinessLogicFakes::ShimUser.GetByUserIDInt32Boolean = (id, child) =>
            {
                return(new User
                {
                    UserID = 1
                });
            };
            AccountsFakes::ShimCustomer.GetByCustomerIDInt32Boolean = (id, child) =>
            {
                throw new CommonObjects::SecurityException("SecurityExceptionMessage");
            };
            ShimECNBlastEngine.AllInstances.SendAccountManagersEmailNotificationStringString = (eng, msg, exc) =>
            {
                exceptionLogged = true;
            };

            // Act
            typeof(ECNBlastEngine).CallMethod(METHOD_CloneBlast,
                                              new object[]
            {
                blastId,
                setupInfo
            }, blastEngine);

            // Assert
            Assert.IsTrue(exceptionLogged);
        }
示例#6
0
        public void VerifyForeignKeysExist_OnException_ReturnEmptyString()
        {
            // Arrange
            var blastId      = 1;
            var blastEngine  = new ECNBlastEngine();
            var exceptionMsg = "Exception while checking key data";

            // Act
            var actualResult = typeof(ECNBlastEngine).CallMethod(METHOD_VerifyForeignKey,
                                                                 new object[] { blastId }, blastEngine).ToString();

            // Assert
            Assert.AreEqual(exceptionMsg, actualResult);
        }
        public void HandleSingleBlast_RefBlastIsNull_LogError()
        {
            // Arrange
            var emailFn      = new EmailFunctions();
            var blastEngine  = new ECNBlastEngine();
            var blastUpdated = false;

            ShimApplicationLog.LogCriticalErrorExceptionStringInt32StringInt32Int32 =
                (ex, sourceMethod, applicationID, note, gdCharityID, ecnCustomerID) =>
            {
                return(1);
            };
            ShimDataFunctions.GetDataTableString = (cmd) =>
            {
                var table = new DataTable();
                table.Columns.Add("EmailID", typeof(int));
                table.Columns.Add("BlastID", typeof(int));
                table.Columns.Add("LayoutPlanID", typeof(int));
                table.Columns.Add("BlastSingleID", typeof(int));
                table.Columns.Add("GroupID", typeof(int));
                table.Columns.Add("refBlastID", typeof(int));
                var row = table.NewRow();
                row[0] = 1;
                row[1] = 2;
                row[2] = 3;
                row[3] = 4;
                row[4] = 5;
                row[5] = DBNull.Value;
                table.Rows.Add(row);
                return(table);
            };
            ShimECNBlastEngine.AllInstances.SetBlastSingleToErrorInt32 = (eng, id) => { };
            ShimDataFunctions.ExecuteString = (str) =>
            {
                blastUpdated = true;
                return(1);
            };
            ShimDataFunctions.ExecuteScalarString = (str) =>
            {
                return("2");
            };

            // Act
            typeof(ECNBlastEngine).CallMethod(METHOD_HandleSingleBlast,
                                              new object[] { emailFn }, blastEngine);

            // Assert
            Assert.IsTrue(blastUpdated);
        }
示例#8
0
        public void VerifyForeignKeysExist_NotChampionLayoutExistContentSlot9Exists_ReturnString()
        {
            // Arrange
            var blastId      = 1;
            var blastGroupId = 1;
            var blastEngine  = new ECNBlastEngine();
            var exceptionMsg = "ContentExist";

            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var blast = new BlastRegular();
                blast.BlastID   = blastId;
                blast.GroupID   = blastGroupId;
                blast.BlastType = BlastType.HTML.ToString();
                blast.LayoutID  = 1;
                return(blast);
            };
            ShimGroup.GetByGroupID_NoAccessCheckInt32 = (id) =>
            {
                var group = new Group();
                return(group);
            };
            ShimDataFunctions.GetDataTableSqlCommand = (cmd) =>
            {
                return(new DataTable());
            };
            ShimLayout.GetByLayoutID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var layout = new Layout();
                layout.ContentSlot1 = 0;
                layout.ContentSlot9 = 1;
                return(layout);
            };
            ShimECNBlastEngine.AllInstances.ContentExistsInt32 = (eng, id) =>
            {
                if (id == 1)
                {
                    return("ContentExist");
                }
                return("");
            };

            // Act
            var actualResult = typeof(ECNBlastEngine).CallMethod(METHOD_VerifyForeignKey,
                                                                 new object[] { blastId }, blastEngine).ToString();

            // Assert
            StringAssert.Contains(actualResult, exceptionMsg);
        }
        public void SetUp()
        {
            _shimObject = ShimsContext.Create();
            appSettings.Clear();
            appSettings.Add("DoBlast", doBlast);
            appSettings.Add("EngineID", engineID);
            appSettings.Add("StatusCode", statusCode);
            appSettings.Add("AdminSendFrom", FromEmailAddress);
            appSettings.Add("AcctManagersSendTo", ToEmailAddress);
            appSettings.Add("SMTPServer", SamppleSmtpServer);
            appSettings.Add("ECNEngineAccessKey", ecnEngineAccessKey);
            appSettings.Add("Communicator_VirtualPath", SamplePath);
            ShimConfigurationManager.AppSettingsGet = () => appSettings;

            _testEntity = new ECNBlastEngine();
            _privateECNBlastEngineObj  = new PrivateObject(_testEntity);
            _privateTypeECNBlastEngine = new PrivateType(typeof(ECNBlastEngine));
        }
示例#10
0
        public void CloneBlast_CampaignItemExist_ReachEnd()
        {
            // Arrange
            var exceptionLogged = false;
            var reachedEnd      = false;
            var blastEngine     = new ECNBlastEngine();
            var blastId         = 1;
            var blastGroupId    = 1;

            appSettings.Add("LogStatistics", bool.TrueString);
            var blast = new EntitiesCommunicator::BlastRegular();

            blast.BlastID       = blastId;
            blast.GroupID       = blastGroupId;
            blast.BlastType     = BlastType.HTML.ToString();
            blast.CustomerID    = 1;
            blast.CreatedUserID = 1;
            var setupInfo = new EntitiesCommunicator::BlastSetupInfo();

            CommonFakes::ShimFileFunctions.LogConsoleActivityStringString = (str, output) => { };
            ShimDataFunctions.GetDataTableString = (cmd) =>
            {
                throw new Exception("Exception from SqlCommand");
            };
            ShimECNBlastEngine.AllInstances.SetBlastSingleToErrorInt32 = (eng, id) => { };
            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean           = (id, child) =>
            {
                return(blast);
            };
            BusinessLogicFakes::ShimUser.GetByUserIDInt32Boolean = (id, child) =>
            {
                return(new User
                {
                    UserID = 1
                });
            };
            AccountsFakes::ShimCustomer.GetByCustomerIDInt32Boolean = (id, child) =>
            {
                return(new AccountsEntity::Customer
                {
                    BaseChannelID = 1,
                    PlatformClientID = 1
                });
            };
            BusinessLayerAccountsFakes::ShimBaseChannel.GetByBaseChannelIDInt32 = (id) =>
            {
                return(new AccountsEntity::BaseChannel
                {
                    PlatformClientGroupID = 1
                });
            };
            ShimECNBlastEngine.AllInstances.SendAccountManagersEmailNotificationStringString = (eng, msg, exc) =>
            {
                exceptionLogged = true;
            };
            BusinessLogicFakes::ShimClient.AllInstances.SelectInt32Boolean = (obj, id, include) =>
            {
                return(new Client
                {
                    ClientID = 1
                });
            };
            BusinessLogicFakes::ShimClientGroup.AllInstances.SelectInt32Boolean = (obj, id, include) =>
            {
                return(new ClientGroup());
            };
            BusinessLogicFakes::ShimSecurityGroup.AllInstances.SelectInt32Int32BooleanBoolean =
                (obj, uid, cid, isKm, include) =>
            {
                return(new SecurityGroup());
            };
            ShimCampaignItem.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                return(new EntitiesCommunicator::CampaignItem
                {
                    CampaignID = 1,
                    CampaignItemID = 1,
                    CampaignItemType = CampaignItemType.Regular.ToString(),
                    SendTime = new DateTime(2018, 1, 1),
                    CampaignItemName = "TestCampaignItemName",
                    CampaignItemIDOriginal = 1,
                    CampaignItemNameOriginal = "TestCampaignItemNameOriginal",
                    BlastList = new List <EntitiesCommunicator::CampaignItemBlast>
                    {
                        new EntitiesCommunicator::CampaignItemBlast
                        {
                            BlastID = blastId
                        }
                    },
                    SuppressionList = new List <EntitiesCommunicator::CampaignItemSuppression>()
                });
            };
            ShimCampaignItem.Save_NoAccessCheckCampaignItemUser                  = (item, user) => 1;
            ShimCampaignItemBlast.Save_NoAccessCheckCampaignItemBlastUser        = (item, user) => 1;
            ShimBlast.CreateBlastsFromCampaignItem_NoAccessCheckInt32UserBoolean = (id, user, child) => { };
            ShimBlast.GetByCampaignItemBlastID_NoAccessCheckInt32Boolean         = (id, child) =>
            {
                reachedEnd = true;
                return(null);
            };

            // Act
            typeof(ECNBlastEngine).CallMethod(METHOD_CloneBlast,
                                              new object[]
            {
                blastId,
                setupInfo
            }, blastEngine);

            // Assert
            Assert.IsFalse(exceptionLogged);
            Assert.IsTrue(reachedEnd);
        }
示例#11
0
        public void VerifyForeignKeysExist_IsChampionSampleIDExistLayoutExistWithException_ReturnString()
        {
            // Arrange
            var blastId      = 1;
            var blastGroupId = 1;
            var blastEngine  = new ECNBlastEngine();
            var exceptionMsg = "UDF(s): ";

            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var blast = new BlastRegular();
                blast.BlastID   = blastId;
                blast.GroupID   = blastGroupId;
                blast.BlastType = BlastType.Champion.ToString();
                blast.LayoutID  = 1;
                blast.SampleID  = 1;
                return(blast);
            };
            ShimGroup.GetByGroupID_NoAccessCheckInt32 = (id) =>
            {
                var group = new Group();
                return(group);
            };
            ShimDataFunctions.GetDataTableSqlCommand = (cmd) =>
            {
                var table = new DataTable();
                table.Columns.Add("LayoutID", typeof(string));
                var row = table.NewRow();
                row[0] = "1";
                table.Rows.Add(row);
                var row2 = table.NewRow();
                row2[0] = "1";
                table.Rows.Add(row2);
                return(table);
            };
            ShimLayout.GetByLayoutID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                var layout = new Layout();
                layout.ContentSlot1 = 0;
                layout.TemplateID   = 1;
                return(layout);
            };
            ShimECNBlastEngine.AllInstances.ContentExistsInt32 = (eng, id) =>
            {
                return("ContentExist");
            };
            ShimTemplate.GetByTemplateID_NoAccessCheckInt32 = (id) =>
            {
                var template = new Template
                {
                    TemplateSource = "TemplateSource",
                    TemplateText   = "TemplateText"
                };
                return(template);
            };
            ShimGroup.ValidateDynamicStringsForTemplateListOfStringInt32User = (list, groupId, user) =>
            {
                throw new ECNException(new List <ECNError>()
                {
                    new ECNError
                    {
                        ErrorMessage = "Exception from Template subject line. error text",
                    }
                });
            };

            // Act
            var actualResult = typeof(ECNBlastEngine).CallMethod(METHOD_VerifyForeignKey,
                                                                 new object[] { blastId }, blastEngine).ToString();

            // Assert
            StringAssert.Contains(actualResult, exceptionMsg);
        }
        public void HandleSingleBlast_RefBlastNotNullOpensCountIsZero_ReachEnd()
        {
            // Arrange
            var emailFn         = new EmailFunctions();
            var blastEngine     = new ECNBlastEngine();
            var exceptionLogged = false;
            var blastId         = 1;
            var blastGroupId    = 1;

            appSettings.Add("LogStatistics", bool.TrueString);
            appSettings.Add("Communicator_VirtualPath", "TestString");
            var blast = new BlastRegular();

            blast.BlastID    = blastId;
            blast.GroupID    = blastGroupId;
            blast.BlastType  = BlastType.HTML.ToString();
            blast.CustomerID = 1;
            var reachedEnd = false;

            ShimApplicationLog.LogCriticalErrorExceptionStringInt32StringInt32Int32 =
                (ex, sourceMethod, applicationID, note, gdCharityID, ecnCustomerID) =>
            {
                return(1);
            };
            CommonFakes::ShimFileFunctions.LogActivityBooleanStringString =
                (output, activity, suffix) => { };
            ShimDataFunctions.GetDataTableString = (cmd) =>
            {
                var table = new DataTable();
                table.Columns.Add("EmailID", typeof(int));
                table.Columns.Add("BlastID", typeof(int));
                table.Columns.Add("LayoutPlanID", typeof(int));
                table.Columns.Add("BlastSingleID", typeof(int));
                table.Columns.Add("GroupID", typeof(int));
                table.Columns.Add("refBlastID", typeof(int));
                var row = table.NewRow();
                row[0] = 1;
                row[1] = 2;
                row[2] = 3;
                row[3] = 4;
                row[4] = 5;
                row[5] = 6;
                table.Rows.Add(row);
                return(table);
            };
            ShimECNBlastEngine.AllInstances.SetBlastSingleToErrorInt32 = (eng, id) => { };
            ShimDataFunctions.ExecuteString = (str) =>
            {
                return(1);
            };
            ShimDataFunctions.ExecuteScalarString = (str) =>
            {
                if (str.Contains("SELECT COUNT(EmailID) AS 'OpensCount'"))
                {
                    if (str.Contains("AND ActionTypeCode = 'open'"))
                    {
                        reachedEnd = true;
                    }
                    return("0");
                }
                return("1");
            };
            ShimDataFunctions.ExecuteScalarStringString = (str, cmd) =>
            {
                return("1");
            };
            ShimBlast.GetByBlastID_NoAccessCheckInt32Boolean = (id, child) =>
            {
                return(blast);
            };
            ShimChannelCheck.AllInstances.getHostName        = (ch) => "TestHostName";
            ShimChannelCheck.AllInstances.getBounceDomain    = (ch) => "TestDomain";
            ShimChannelCheck.ConstructorInt32                = (chn, custId) => { };
            ShimBlast.GetMasterRefBlastInt32Int32UserBoolean = (id, emailId, user, child) =>
            {
                return(blast);
            };
            ShimEmailFunctions.AllInstances.SendBlastSingleBlastInt32Int32StringStringString =
                (fn, obj, email, group, setting, hostname, domain) => { };

            // Act
            typeof(ECNBlastEngine).CallMethod(METHOD_HandleSingleBlast,
                                              new object[] { emailFn }, blastEngine);

            // Assert
            Assert.IsFalse(exceptionLogged);
            Assert.IsTrue(reachedEnd);
        }