public void FormDataConditionExpression_ToFormDataParameter_FormDataConditionMatch_With_AllValues_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey   = "testKey";
            var testValue = "good text message";

            var testKeyName   = "[[storedKeyName]]";
            var testValueName = "[[storedValueName]]";

            var environment = new ExecutionEnvironment();

            environment.Assign(testValueName, testValue, 0);
            environment.Assign(testKeyName, testKey, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKeyName,
                Cond = new FormDataConditionText
                {
                    Value     = testValueName,
                    TableType = enFormDataTableType.Text
                }
            }.ToFormDataParameter();

            var result = sut as TextParameter;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Key, testKeyName);
            Assert.AreEqual(result.Value, testValueName);
        }
        public void FormDataConditionExpression_FormDataConditionBetween_File_With_InvalidBase64String_ExpectNotFormatException()
        {
            var environment = new ExecutionEnvironment();

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = "testKey",
                Cond = new FormDataConditionFile
                {
                    FileBase64 = "bad file content",
                    FileName   = "testFileName",
                    TableType  = enFormDataTableType.File
                }
            };

            var result = sut.Eval(getTestArgumentsFunc, true);

            Assert.IsNotNull(result);
        }
        public void FormDataConditionExpression_ToOptions_FormDataConditionMatch_With_AllValues_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey   = "testKey";
            var testValue = "good text message";

            var testKeyName   = "[[storedKeyName]]";
            var testValueName = "[[storedValueName]]";

            var environment = new ExecutionEnvironment();

            environment.Assign(testValueName, testValue, 0);
            environment.Assign(testKeyName, testKey, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKeyName,
                Cond = new FormDataConditionText
                {
                    Value     = testValueName,
                    TableType = enFormDataTableType.Text
                }
            }.ToOptions();

            var result = sut.First() as FormDataOptionConditionExpression;

            Assert.AreEqual(testKeyName, result.Key);
            Assert.AreEqual(testValueName, result.Value);
            Assert.AreEqual(enFormDataTableType.Text.ToString(), result.SelectedTableType.Name);
        }
        public void FormDataConditionExpression_FormDataConditionMatch_Value_With_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey             = "testKey";
            var testValue           = "good text message";
            var testFileContentName = "[[storedFileContent]]";

            var environment = new ExecutionEnvironment();

            environment.Assign(testFileContentName, testValue, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKey,
                Cond = new FormDataConditionText
                {
                    Value     = testFileContentName,
                    TableType = enFormDataTableType.Text
                }
            };

            var result = sut.Eval(getTestArgumentsFunc, true);

            var firstResult = result.First() as TextParameter;

            Assert.IsNotNull(firstResult);
            Assert.AreEqual(firstResult.Key, testKey);
            Assert.AreEqual(firstResult.Value, testValue);
        }
        public void FormDataConditionExpression_FormDataConditionMatch_Value_With_EmptyString_ExpectSuccess()
        {
            var testKey   = "testKey";
            var testValue = string.Empty;

            var environment = new ExecutionEnvironment();

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKey,
                Cond = new FormDataConditionText
                {
                    Value     = testValue,
                    TableType = enFormDataTableType.Text
                }
            };

            var result = sut.Eval(getTestArgumentsFunc, true);

            var firstResult = result.First() as TextParameter;

            Assert.AreEqual(firstResult.Key, testKey);
            Assert.AreEqual(firstResult.Value, testValue);
        }
        public void FormDataConditionExpression_FormDataConditionMatch_Key_ValueIsNullOrWhiteSpace_ExpectIsInstanceOfType()
        {
            var sut = new FormDataConditionExpression
            {
                Key  = string.Empty,
                Cond = new FormDataConditionText
                {
                    Value     = "test txt message",
                    TableType = enFormDataTableType.Text
                }
            };

            var result = sut.Eval(getTestArgumentsFunc, true);

            Assert.IsInstanceOfType(result, typeof(List <IFormDataParameters>));
        }
        public void FormDataConditionExpression_FormDataConditionBetween_Key_ValueIsNullOrWhiteSpace_ExpectIsInstanceOfType()
        {
            var sut = new FormDataConditionExpression
            {
                Key  = string.Empty,
                Cond = new FormDataConditionFile
                {
                    FileBase64 = "file content",
                    FileName   = "testFileName",
                    TableType  = enFormDataTableType.File
                }
            };

            var result = sut.Eval(getTestArgumentsFunc, true);

            Assert.IsInstanceOfType(result, typeof(List <IFormDataParameters>));
        }
        public void FormDataConditionExpression_FormDataConditionBetween_With_AllValues_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey         = "testKey";
            var testFileName    = "testFileName";
            var testFileContent = "good file message";

            var testKeyName         = "[[storedKeyName]]";
            var testFileName_Name   = "[[storedFileName]]";
            var testFileContentName = "[[storedFileContentName]]";

            var base64FileContent = Convert.ToBase64String(testFileContent.ToBytesArray());
            var bytesFileContent  = Convert.FromBase64String(base64FileContent);
            var environment       = new ExecutionEnvironment();

            environment.Assign(testKeyName, testKey, 0);
            environment.Assign(testFileName_Name, testFileName, 0);
            environment.Assign(testFileContentName, base64FileContent, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKeyName,
                Cond = new FormDataConditionFile
                {
                    FileBase64 = testFileContentName,
                    FileName   = testFileName_Name,
                    TableType  = enFormDataTableType.File
                }
            };

            var result = sut.Eval(getTestArgumentsFunc, true);

            var firstResult = result.First() as FileParameter;

            Assert.IsNotNull(firstResult);
            Assert.AreEqual(firstResult.Key, testKey);
            Assert.AreEqual(firstResult.FileName, testFileName);
            Assert.AreEqual(firstResult.FileBytes.ToString(), bytesFileContent.ToString());
        }
        public void FormDataConditionExpression_ToFormDataParameter_FormDataConditionBetween_With_AllValues_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey      = "testKey";
            var testFileName = "testFileName";
            var testValue    = "good text message";

            var testKeyName   = "[[storedKeyName]]";
            var testValueName = "[[storedValueName]]";

            var environment = new ExecutionEnvironment();

            environment.Assign(testValueName, testValue, 0);
            environment.Assign(testKeyName, testKey, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKeyName,
                Cond = new FormDataConditionFile
                {
                    FileBase64 = testValueName,
                    FileName   = testFileName,
                    TableType  = enFormDataTableType.Text
                }
            }.ToFormDataParameter();

            var result = sut as FileParameter;

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Key, testKeyName);
            Assert.AreEqual(result.FileName, testFileName);
            Assert.AreEqual(result.FileBase64, testValueName);
            Assert.ThrowsException <FormatException>(() => result.FileBytes, "this is an invalid format string, expecting base64 string");
        }
        public void FormDataConditionExpression_FromOption_FormDataConditionMatch_With_AllValues_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey   = "testKey";
            var testValue = "good text message";

            var testKeyName   = "[[storedKeyName]]";
            var testValueName = "[[storedValueName]]";

            var environment = new ExecutionEnvironment();

            environment.Assign(testValueName, testValue, 0);
            environment.Assign(testKeyName, testKey, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key = testKeyName
            };

            sut.FromOption(new FormDataOptionConditionExpression
            {
                Key   = testKeyName,
                Value = testValueName
            });

            var result = sut.Cond as FormDataConditionText;

            Assert.AreEqual(testKeyName, sut.Key);
            Assert.AreEqual(testValueName, result.Value);
            Assert.AreEqual(enFormDataTableType.Text, result.TableType);
        }
        public void FormDataConditionExpression_ToString_FormDataConditionBetween_With_AllValues_StoredEnvironmentVarible_ExpectSuccess()
        {
            var testKey      = "testKey";
            var testFileName = "testFileName";
            var testValue    = "good text message";

            var testKeyName   = "[[storedKeyName]]";
            var testValueName = "[[storedValueName]]";

            var environment = new ExecutionEnvironment();

            environment.Assign(testValueName, testValue, 0);
            environment.Assign(testKeyName, testKey, 0);

            var mockDSFDataObject = new Mock <IDSFDataObject>();

            mockDSFDataObject.Setup(o => o.Environment).Returns(environment);

            _dataObject = mockDSFDataObject.Object;

            var sut = new FormDataConditionExpression
            {
                Key  = testKeyName,
                Cond = new FormDataConditionFile
                {
                    FileBase64 = testValueName,
                    FileName   = testFileName,
                    TableType  = enFormDataTableType.Text
                }
            }.ToString();

            var result = sut;

            Assert.IsNotNull(result);
            Assert.AreEqual("Key: [[storedKeyName]] File Content: [[storedValueName]] File Name: testFileName", result);
        }