예제 #1
0
        /// <summary>
        /// Verifying a search date
        /// </summary>
        /// <param name="resourceType">Resource type</param>
        /// <param name="searchParameters">Search parameters</param>
        /// <param name="extraUrlParameters">Extra url parameters</param>
        /// <param name="isDate">True/False</param>
        public static void VerifySearchDate(Enums.ResourceType resourceType, SearchParameters searchParameters, int resultCode, Dictionary <string, object> extraUrlParameters = null, bool isDate = true)
        {
            string firstFieldAlias  = searchParameters.FirstFieldAlias;
            string secondFieldAlias = searchParameters.SecondFieldAlias;
            string firstCondition   = searchParameters.FirstCondition;
            string secondCondition  = searchParameters.SecondCondition;
            string firstCondValue   = searchParameters.FirstCondValue.ToString();
            string secondCondValue  = searchParameters.SecondCondValue.ToString();

            string formatCond = DateTimeValidator.GetFormatCondition(firstFieldAlias, secondFieldAlias, firstCondition, secondCondition, firstCondValue, secondCondValue);

            Dictionary <string, object> urlParameters = new Dictionary <string, object>()
            {
                { "partition", AuthenticationInfoProvider.Current.DefaultPartition },
                { "condition", formatCond },
                { "field", firstFieldAlias == secondFieldAlias ? firstFieldAlias : string.Format("{0},{1}", firstFieldAlias, secondFieldAlias) }
            };

            if (extraUrlParameters != null)
            {
                urlParameters = urlParameters.Concat(extraUrlParameters).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.First().Value);
            }

            if (resultCode == Enums.PublicAPIResultCode.DateTimeOutOfRange)
            {
                var result = PublicApiAdapter.CreateAdapterForDefaultConnection().ReadFail(resourceType.ToString(), urlParameters);
                Assert.That(result, MustBe.MatchingErrorCode(resultCode), Enums.Message.WRONG_ERROR_CODE);
            }
            else
            {
                var result = PublicApiAdapter.CreateAdapterForDefaultConnection().ReadSuccess(resourceType.ToString(), urlParameters);
                Assert.That(result, MustBe.ReadSuccess(0), string.Format(Enums.Message.READ_RESOURCE_FAILED, resourceType.ToString()));
                Assert.IsNotNull(result.Items, string.Format(Enums.Message.READ_RESOURCE_FAILED, resourceType.ToString()));
                Assert.That(result.Count, Is.GreaterThanOrEqualTo(0), Enums.Message.COUNT_ERROR);
                Assert.That(result.Items.Count, Is.GreaterThanOrEqualTo(0), Enums.Message.COUNT_ERROR);

                if (firstFieldAlias == secondFieldAlias)
                {
                    VerifyValueOneField(result.Items, searchParameters, isDate);
                }
                else
                {
                    VerifyValueMultipleField(result.Items, searchParameters, isDate);
                }
            }
        }
        public void TestMultipleSearch1NumberField(string fieldName, string condition1, string condition2)
        {
            condition1 = condition1.ToLowerString();
            condition2 = condition2.ToLowerString();

            string conditionValue1 = string.Empty;
            string conditionValue2 = string.Empty;

            conditionValue1 = PhaseHelper.GeneratePhaseNumberType(defaultResource, fieldName, indexFirstPhaseList);  //Get phase value by public api because read phase private api could not retrieve RegistrationDate, Option alias
            conditionValue2 = PhaseHelper.GeneratePhaseNumberType(defaultResource, fieldName, indexSecondPhaseList); //Get phase value by public api because read phase private api could not retrieve RegistrationDate, Option alias

            //Read & verify the field's value
            if (fieldName == PhaseApiFields.RegistrationDate || fieldName == PhaseApiFields.UpdateDate || fieldName == PhaseApiFields.Date)
            {
                Dictionary <string, string> conditionParameters = new Dictionary <string, string>()
                {
                    { DateTimeValidator.FieldAlias1, fieldName },
                    { DateTimeValidator.FieldAlias2, fieldName },
                    { DateTimeValidator.Condition1, condition1 },
                    { DateTimeValidator.Condition2, condition2 },
                    { DateTimeValidator.ConditionValue1, conditionValue1 },
                    { DateTimeValidator.ConditionValue2, conditionValue2 },
                };
                SystemFieldTypeHelper.VerifySearchDatePhase(defaultResource, conditionParameters, false);
            }
            else
            {
                string formatCond = DateTimeValidator.GetFormatCondition(fieldName, fieldName, condition1, condition2, conditionValue1, conditionValue2);

                Dictionary <string, object> parameters = new Dictionary <string, object>()
                {
                    { PhaseApiFields.Partition, AuthenticationInfoProvider.Current.DefaultPartition },
                    { PhaseApiFields.Resource, (int)defaultResource },
                    { PhaseApiFields.Condition, formatCond },
                    { PhaseApiFields.Field, fieldName },
                };
                ReadResponseData <Phase> result = PublicApiAdapter.CreateAdapterForDefaultConnection().ReadSuccess <Phase>(parameters);
                Assert.That(result.Code, Is.EqualTo(Enums.PublicAPIResultCode.Success), string.Format(Enums.Message.READ_RESOURCE_FAILED, nameof(Phase)));

                foreach (var item in result.Items)
                {
                    Assert.That(int.Parse(item.DictionaryValues[fieldName].ToString()), DateTimeValidator.ConditionsMap[condition1](int.Parse(conditionValue1), int.Parse(conditionValue2)).And.Matches(DateTimeValidator.ConditionsMap[condition2](int.Parse(conditionValue2), int.Parse(conditionValue1))), DateTimeValidator.ErrorMessage);
                }
            }
        }