示例#1
0
 public static PrivateData <List <int> > PrepareProcessRecords(int numberOfRecords, int firstRef, int secondeRef, PrivateData <List <int> > processPhaseOption, PrivateData <int> endFlagId, HrbcRecordCreator refRecordsCreator)
 {
     return(new PrivateData <List <int> >(
                (session, test) =>
     {
         return Task.Run(() =>
         {
             var result = new List <int>();
             var fieldHandler = new FieldManager();
             var fields = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[TestCoreFramework.Enums.ResourceType.Process].Append("P_Close"), new[] { TestCoreFramework.Enums.ResourceType.Process })
                          .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
             var recordHandler = new RecordManager();
             var request = RecordRequestComposer.ComposeCreateRequest();
             for (int i = 0; i < numberOfRecords; i++)
             {
                 request = request.Append(TestCoreFramework.Enums.ResourceType.Process, CreateResourceRequiredFieldData(fields, ((i % 3) == 0), endFlagId.Data, 1, ((i % 3) == 1) ? processPhaseOption.Data.Last() : processPhaseOption.Data.First(), i, ((i % 2) == 0) ? firstRef : secondeRef, refRecordsCreator));
             }
             var response = recordHandler.WriteRecords(request.Result);
             PrAssume.That(response, PrIs.SuccessfulResponse());
             PrAssume.That(response.Result, PrIs.Not.Null);
             PrAssume.That(response.Result.Ids[0][0], PrIs.Not.Null);
             result = response.Result.Ids.Select(id => id[0]).ToList();
             return result;
         });
     },
                (session, test, res) => Task.Run(() =>
     {
         var recordHandler = new RecordManager();
         recordHandler.DeleteRecords(
             RecordRequestComposer.ComposeDeleteRequest(TestCoreFramework.Enums.ResourceType.Process, res));
     })));
 }
示例#2
0
        public static List <long> SortedProcessDataList(List <int> listResult, string orderField, string orderType, FieldType fieldType)
        {
            var recordHandler = new RecordManager();
            var res           = recordHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource(Porters.TestCoreFramework.Enums.ResourceType.Process)
                .WithIds(listResult.ToArray())
                .Fields(ProcessClose, ProcessId, ProcessPhase, ProcessPhaseDate, ProcessUpdateDate, ProcessRegistrationDate, ProcessExpectedClosingDate, ProcessExpectedSalesAmount, orderField)
                .Result);

            PrAssume.That(res, PrIs.SuccessfulResponse(), "Can not read Process records");
            var result     = GetDataList(res.Result.Items, orderField, fieldType).OrderBy(item => item.Close).ThenByDescending(item => item.Phase).ThenByDescending(item => item.PhaseDate);
            var sortedList = new List <ProcessData>();

            if (orderField != ProcessId && orderField != string.Empty)
            {
                sortedList = ((orderType == "asc") ?
                              result.ThenBy(item => item.OrderField) :
                              result.ThenByDescending(item => item.OrderField))
                             .ThenByDescending(item => item.Id).ToList();
            }
            else
            {
                sortedList = ((orderType == "asc") ?
                              result.ThenBy(item => item.Id) :
                              result.ThenByDescending(item => item.Id)).ToList();
            }
            return(sortedList.Select(i => i.Id).ToList());
        }
示例#3
0
        public void ReadRecordForDeletedResourceTest()
        {
            PrivateApiResponse <RecordsHandlingComponent.DataContract.RecordsCreateOrDeleteResponseItem> recordResponse = null;
            var recordHandler = new RecordManager();

            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new[] { "P_Name", "P_Owner" }, new[] { Porters.TestCoreFramework.Enums.ResourceType.Client })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));

            var request = RecordRequestComposer.ComposeCreateRequest()
                          .Append(item =>
                                  item.ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                                  .WithField(fields["Client.P_Name"], "TestName")
                                  .WithField(fields["Client.P_Owner"], 1));

            recordResponse = recordHandler.WriteRecords(request.Result);
            PrAssume.That(recordResponse, PrIs.SuccessfulResponse());


            var fileHandler = new FileStorageManager();

            var fileRecordUploadResponse = fileHandler.Upload(GenerateUploadFileRequest(recordId: recordResponse.Result.Ids[0][0].ToString()));

            PrAssume.That(fileRecordUploadResponse, PrIs.SuccessfulResponse());

            var recordDeleteResponse = recordHandler.DeleteRecords(RecordRequestComposer.ComposeDeleteRequest(Porters.TestCoreFramework.Enums.ResourceType.Client, recordResponse.Result.Ids.SelectMany(x => x)));

            PrAssume.That(recordDeleteResponse, PrIs.SuccessfulResponse());

            var fileRecordReadResponse = fileHandler.Read(fileRecordUploadResponse.Result.Id);

            PrAssert.That(fileRecordReadResponse, PrIs.ErrorResponse());
        }
示例#4
0
        public static void VerifySearchResult(PrivateApiResponse <SearchResponse> response, ResourceId resourceId, SearchDateFieldCases.TestCases cases, string fieldName, bool isAsc, HrbcRecordCreator RecordsCreator, int NumRecordsEachCase, string DateTimeResponseFormat)
        {
            PrAssert.That(response, PrIs.SuccessfulResponse(), "Search unsuccesfull");
            PrAssert.That(response.Result.Items, PrIs.Not.Null.And.Not.Empty, "Null or Empty search response");
            PrAssert.That(response.Result.Items.Count, PrIs.GreaterThanOrEqualTo(NumRecordsEachCase), "Unexpected numbers of search results");
            List <int> ids = response.Result.Items;

            for (int i = (int)cases * NumRecordsEachCase; i < (int)cases * NumRecordsEachCase + NumRecordsEachCase; i++)
            {
                PrAssert.That(ids.Contains((int)RecordsCreator.Data[$"{resourceId}{i}"].Id), "The expected id is not in search result");
            }
            var recordHandler = new RecordManager();
            var res           = recordHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource((Porters.TestCoreFramework.Enums.ResourceType)(int) resourceId)
                .WithIds(ids.ToArray())
                .Fields(fieldName, $"{ resourceId}.P_Id")
                .Result);
            List <long> expectedIdsList;

            if (isAsc)
            {
                expectedIdsList = res.Result.Items.OrderBy(item => DateTime.ParseExact(item[fieldName].ToString(), DateTimeResponseFormat, System.Globalization.CultureInfo.InvariantCulture)).Select(s => (long)s[$"{resourceId}.P_Id"]).ToList();
            }
            else
            {
                expectedIdsList = res.Result.Items.OrderByDescending(item => DateTime.ParseExact(item[fieldName].ToString(), DateTimeResponseFormat, System.Globalization.CultureInfo.InvariantCulture)).Select(s => (long)s[$"{resourceId}.P_Id"]).ToList();
            }
            for (int i = 0; i < ids.Count; i++)
            {
                PrAssert.That(expectedIdsList[i], PrIs.EqualTo(ids[i]), "The search result is not order as expected");
            }
        }
示例#5
0
        private int[] DeleteRecord(ResourceId resourceId, int[] recordId)
        {
            var resourceType = (TestCoreFramework.Enums.ResourceType)(int) resourceId;

            (new RecordManager()).DeleteRecords(
                RecordRequestComposer.ComposeDeleteRequest(resourceType, recordId));
            return(recordId);
        }
        public void UpdateInvalidIdRecordWithTest(TestCoreFramework.Enums.ResourceType resourceId, int id)
        {
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId(id))).Result);

            PrAssert.That(response, PrIs.ErrorResponse());
        }
        public void UpdateValidRecordWithIdTest(TestCoreFramework.Enums.ResourceType resourceId)
        {
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
        }
示例#8
0
        public static PrivateData <Dictionary <ResourceId, RecordsCreateOrDeleteResponseItem> > GetCreateDeletedRecordCustomFixture()
        {
            return(new PrivateData <Dictionary <ResourceId, RecordsCreateOrDeleteResponseItem> >(
                       (session, test) =>
            {
                return Task.Run(() =>
                {
                    var fields = GetFieldsId(new[] { "P_Name", "P_Owner" }, new[] { Porters.TestCoreFramework.Enums.ResourceType.Client });

                    //create
                    var recordHandler = new RecordManager();
                    var request = RecordRequestComposer.ComposeCreateRequest() // creating a request object, using custom handlers
                                  .Append(item =>
                                          item.ForResource(TestCoreFramework.Enums.ResourceType.Client)
                                          .WithField(fields["Client.P_Name"], "Deleted CLIENT1")
                                          .WithField(fields["Client.P_Owner"], 1))
                                  .Append(item =>
                                          item.ForResource(TestCoreFramework.Enums.ResourceType.Client)
                                          .WithField(fields["Client.P_Name"], "Deleted CLIENT2")
                                          .WithField(fields["Client.P_Owner"], 1))
                                  .Result;
                    var clientCreateResponse = recordHandler.WriteRecords(request);
                    fields = GetFieldsId(new[] { "P_Name", "P_Owner", "P_Client" }, new[] { Porters.TestCoreFramework.Enums.ResourceType.Recruiter });
                    request = RecordRequestComposer.ComposeCreateRequest() // creating a request object, using custom handlers
                              .Append(item =>
                                      item.ForResource(TestCoreFramework.Enums.ResourceType.Recruiter)
                                      .WithField(fields["Recruiter.P_Name"], "Deleted RECRUITER1")
                                      .WithField(fields["Recruiter.P_Client"], clientCreateResponse.Result.Ids[0][0])
                                      .WithField(fields["Recruiter.P_Owner"], 1))
                              .Append(item =>
                                      item.ForResource(TestCoreFramework.Enums.ResourceType.Recruiter)
                                      .WithField(fields["Recruiter.P_Name"], "Deleted RECRUITER2")
                                      .WithField(fields["Recruiter.P_Client"], clientCreateResponse.Result.Ids[1][0])
                                      .WithField(fields["Recruiter.P_Owner"], 1))
                              .Result;
                    var recruiterCreateResponse = recordHandler.WriteRecords(request);
                    Dictionary <ResourceId, RecordsCreateOrDeleteResponseItem> result = new Dictionary <ResourceId, RecordsCreateOrDeleteResponseItem>()
                    {
                        [ResourceId.Client] = clientCreateResponse.Result,
                        [ResourceId.Recruiter] = recruiterCreateResponse.Result,
                        [ResourceId.Resume] = recruiterCreateResponse.Result,
                    };
                    recordHandler.DeleteRecords(
                        RecordRequestComposer.ComposeDeleteRequest(TestCoreFramework.Enums.ResourceType.Recruiter,
                                                                   new[] { recruiterCreateResponse.Result.Ids[0][0], recruiterCreateResponse.Result.Ids[1][0] }));
                    recordHandler.DeleteRecords(
                        RecordRequestComposer.ComposeDeleteRequest(TestCoreFramework.Enums.ResourceType.Client,
                                                                   new[] { clientCreateResponse.Result.Ids[0][0], clientCreateResponse.Result.Ids[1][0] }));
                    return result;
                });
            },
                       (session, test, res) => Task.Run(() =>
            {
                return Task.CompletedTask;
            })));
        }
示例#9
0
        private PrivateApiResponse <RecordsGetResponseItem> GetResultRecordData(ResourceId resourceId, int[] recordIds, string[] keys = null)
        {
            var resourceType = (TestCoreFramework.Enums.ResourceType)(int) resourceId;

            return((new RecordManager()).ReadRecords(
                       RecordRequestComposer.ComposeReadRequest()
                       .ForResource(resourceType)
                       .WithIds(recordIds)
                       .Fields(keys == null ? new string[] { $"{resourceId.ToString()}.P_Id" } : keys)
                       .Result));
        }
示例#10
0
        private PrivateApiResponse <RecordsGetResponseItem> ReadRecords(TestCoreFramework.Enums.ResourceType readResource, int[] ids, string[] fields)
        {
            RecordManager recordHandler = new RecordManager();

            return(recordHandler.ReadRecords(
                       RecordRequestComposer.ComposeReadRequest()
                       .ForResource(readResource)
                       .WithIds(ids)
                       .Fields(fields)
                       .Result));
        }
        public void InsertInvalidPhaseDateRecordTest(TestCoreFramework.Enums.ResourceType resourceId, int ownerId, ResourceFields.ValidPhase phase, ResourceFields.InvalidDateTime time)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[resourceId], new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));

            var recordHandler = new RecordManager();
            var request       = RecordRequestComposer.ComposeCreateRequest()
                                .Append(resourceId, CreateResourceRequiredFieldData(fields, resourceId, ownerId, phase, time))
                                .Result;

            var response = recordHandler.WriteRecords(request);

            PrAssert.That(response, PrIs.ErrorResponse());
        }
        public void UpdateValidRecordWithOwnerTest(TestCoreFramework.Enums.ResourceType resourceId, int ownerId)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new List <string>()
            {
                "P_Owner"
            }, new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id).AppendField(fields[$"{resourceId.ToResourceName()}.P_Owner"], ownerId))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
        }
        public void InsertValidRecordWithOptionFieldsTest(TestCoreFramework.Enums.ResourceType resourceId, string field)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[resourceId].Append(field.Split('.')[1]), new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));

            var recordHandler = new RecordManager();
            var request       = RecordRequestComposer.ComposeCreateRequest()
                                .Append(resourceId, CreateResourceOptionalFieldData(fields, resourceId, 1, ResourceFields.ValidPhase.Root, ResourceFields.ValidDateTime.Now, field))
                                .Result;

            var response = recordHandler.WriteRecords(request);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
            cleaner.Delete(resourceId.ToPrivateApiResource(), response.Result.Ids[0][0].ToString());
        }
        public void UpdateMissingRequiredFieldRecordWithTest(TestCoreFramework.Enums.ResourceType resourceId, string field)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(ResourceFields.RequireFields[resourceId].Where(s => s != field), new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var parameters = new Dictionary <int, object>();

            foreach (var item in ResourceFields.RequireFields[resourceId].Where(s => s != field))
            {
                parameters.Add(fields[$"{resourceId.ToResourceName()}.{field}"], ResourceFields.ValueDictionary[ResourceFields.FieldsDictionary[resourceId][$"{resourceId.ToResourceName()}.{field}"]]);
            }
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id).AppendFields(parameters))).Result);

            PrAssert.That(response, PrIs.ErrorResponse());
        }
        public void UpdateValidRecordWithOptionalFieldTest(TestCoreFramework.Enums.ResourceType resourceId, string field)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new List <string> {
                field.Split('.')[1]
            }, new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id).AppendField(fields[field], ResourceFields.FieldsDictionary[resourceId][field] == ResourceFields.InputType.Option ?
                                                                                                                                                                      OptionForAlias.Data[field.Split('.')[1]] :
                                                                                                                                                                      ResourceFields.ValueDictionary[ResourceFields.FieldsDictionary[resourceId][field]]))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
        }
        public void UpdateValidRecordWithOwnerTest(TestCoreFramework.Enums.ResourceType resourceId, ResourceFields.ValidPhase phase, ResourceFields.ValidDateTime time)
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new List <string>()
            {
                "P_Phase", "P_PhaseDate"
            }, new[] { resourceId })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var recordHandler = new RecordManager();
            var response      = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(resourceId)
                                                                    .Append(x => x.WithId((int)RecordsCreator.Data[resourceId.ToPrivateApiResource()].Id)
                                                                            .AppendFields(new Dictionary <int, object> {
                [fields[$"{resourceId.ToResourceName()}.P_Phase"]] = RootPhaseOption.Data[resourceId], [fields[$"{resourceId.ToResourceName()}.P_PhaseDate"]] = ResourceFields.PhaseTimeMapper[time]
            }))).Result);

            PrAssert.That(response, PrIs.SuccessfulResponse());
            PrAssert.That(response.Result, PrIs.Not.Null);
            PrAssert.That(response.Result.Ids[0][0], PrIs.Not.Null);
        }
        public void ValidSpecialCustomActionReplaceTest(ResourceId resourceId, string fieldName)
        {
            string fieldAlias    = $"{resourceId.ToAlias()}.{fieldName}";
            var    recordHandler = new RecordManager();
            var    res           = recordHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource((TestCoreFramework.Enums.ResourceType)(int) resourceId)
                .WithIds((int)RecordsCreator.Data[resourceId].Id)
                .Fields($"{resourceId.ToAlias()}.P_Id", fieldAlias)
                .Result);
            var recordValue = res.Result.Items[0];

            if (fieldName.EndsWith("Date") || fieldName == "P_Owner")
            {
                recordValue[fieldAlias] = recordValue[fieldAlias].ToString().Replace("/", "-").Replace("[\r\n", "").Replace("\r\n]", "").Split('.')[0].Trim();
            }
            var requestUrl    = $"hrbc1-web.localvm/{{{{{fieldAlias}}}}}";
            var expectUrl     = $"hrbc1-web.localvm/{recordValue[fieldAlias].ToString()}";
            var createRequest = CreateCustomActionTests.GetCreateRequest(requestUrl,
                                                                         CustomActionTestData.ValidLabelMapper[CustomActionTestData.ValidLabel.BothEnJa](CustomActionTestData.ValidLabelValueMapper[CustomActionTestData.ValidLabelValue.StringNoSpaceBoth]),
                                                                         CustomActionTestData.ValidPlaceValueMapper[CustomActionTestData.ValidPlaceValue.Client]);
            var hanlder  = new CustomActionManager();
            var response = hanlder.CustomAction <CreateCustomActionResponse>(createRequest, HttpMethod.POST.ToNetHttpMethod());

            PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK), "Can not create custom action");
            var resourceName   = resourceId == ResourceId.Person ? "candidate" : resourceId.ToString().ToLower();
            var replaceRequest = GetReplaceRequest(response.Result.Id,
                                                   new Dictionary <string, object>
            {
                [resourceName] = resourceId == ResourceId.None ? 0 : RecordsCreator.Data[resourceId].Id,
            });

            hanlder = new CustomActionManager();
            var replaceResponse = hanlder.Replace <ReplaceCustomActionResponse>(replaceRequest, HttpMethod.POST.ToNetHttpMethod());

            PrAssert.That(replaceResponse, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK), "Can not create custom action");
            var convertedUrl = WebUtility.UrlDecode(replaceResponse.Result.Url).Trim();

            PrAssert.That(convertedUrl, PrIs.EqualTo(expectUrl), "Can not create custom action");
        }
示例#18
0
        public void PhaseFlowSortTest()
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new[] { "P_Name", "P_Owner", "P_Phase" }, new[] { Porters.TestCoreFramework.Enums.ResourceType.Client })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var firstPhaseId  = PhaseCreater.Data.Children.ElementAtOrDefault(1).Id;
            var secondPhaseId = PhaseCreater.Data.Children.ElementAtOrDefault(2).Id;
            var thirdPhaseId  = PhaseCreater.Data.Children.ElementAtOrDefault(0).Id;
            //create
            var recordHandler = new RecordManager();
            var request       = RecordRequestComposer.ComposeCreateRequest()
                                .Append(item =>
                                        item.ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                                        .WithField(fields["Client.P_Name"], "TestName -- CLIENT1")
                                        .WithField(fields["Client.P_Owner"], 1)
                                        .WithField(fields["Client.P_Phase"], firstPhaseId))
                                .Result;

            var response = recordHandler.WriteRecords(request);

            PrAssert.That(response, PrIs.SuccessfulResponse(), "Can not create record successfully");
            //update
            var updateResponse = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item =>
                                                                    item.ForResource(TestCoreFramework.Enums.ResourceType.Client)
                                                                    .Append(x => x.WithId(response.Result.Ids[0][0]).AppendField(fields["Client.P_Phase"], secondPhaseId))
                                                                    ).Result);

            PrAssert.That(updateResponse, PrIs.SuccessfulResponse(), "Can not update record successfully");
            updateResponse = recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item =>
                                                                    item.ForResource(TestCoreFramework.Enums.ResourceType.Client)
                                                                    .Append(x => x.WithId(response.Result.Ids[0][0]).AppendField(fields["Client.P_Phase"], thirdPhaseId))
                                                                    ).Result);
            PrAssert.That(updateResponse, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest).And.ErrorCode((int)ResultCode.UnRecentlyPhase), "Phase is updated with smaller sort!");
        }
示例#19
0
        public void DetaultCrudTest()
        {
            var fieldHandler = new FieldManager();
            var fields       = fieldHandler.GetFieldGuid(new[] { "P_Name", "P_Owner", "A_TestSingleLineText" }, new[] { Porters.TestCoreFramework.Enums.ResourceType.Client })
                               .Result.Result.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));

            //create
            var recordHandler = new RecordManager();
            var request       = RecordRequestComposer.ComposeCreateRequest() // creating a request object, using custom handlers
                                .Append(item =>
                                        item.ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                                        .WithField(fields["Client.P_Name"], "TestName -- CLIENT1")
                                        .WithField(fields["Client.P_Owner"], 1)
                                        .WithField(fields["Client.A_TestSingleLineText"], "TEST VALUE 1")
                                        .WithFieldSet(new Dictionary <int, object>
            {
                [fields["Client.P_Name"]]  = "TestName -- CLIENT 5",
                [fields["Client.P_Owner"]] = 1,
                [fields["Client.A_TestSingleLineText"]] = "TEST VALUE 5"
            }))
                                .Append(Porters.TestCoreFramework.Enums.ResourceType.Client, new Dictionary <int, object>
            {
                [fields["Client.P_Name"]]  = "TestName -- CLIENT2",
                [fields["Client.P_Owner"]] = 1,
                [fields["Client.A_TestSingleLineText"]] = "TEST VALUE 2"
            })
                                .AppendMany(Porters.TestCoreFramework.Enums.ResourceType.Client, new Dictionary <int, object>
            {
                [fields["Client.P_Name"]]  = "TestName -- CLIENT3",
                [fields["Client.P_Owner"]] = 1,
                [fields["Client.A_TestSingleLineText"]] = "TEST VALUE 3"
            }, new Dictionary <int, object>
            {
                [fields["Client.P_Name"]]  = "TestName -- CLIENT4",
                [fields["Client.P_Owner"]] = 1,
                [fields["Client.A_TestSingleLineText"]] = "TEST VALUE 4"
            })
                                .Result;

            var response = recordHandler.WriteRecords(request);

            PrAssert.That(response, PrIs.SuccessfulResponse());

            //read
            var res = recordHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                .WithIds(response.Result.Ids.SelectMany(x => x).ToArray())
                .Fields("Client.P_Name", "Client.P_Id", "Client.A_TestSingleLineText")
                .Result);

            PrAssert.That(res.Result.Total, Is.EqualTo(5));
            PrAssert.That(res.Result.Items, Is.All.Matches <Dictionary <string, object> >(x => !string.IsNullOrEmpty(x["Client.A_TestSingleLineText"].ToString())));

            //update
            recordHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                                                                    .Append(x => x.WithId(response.Result.Ids[0][0]).AppendField(fields["Client.A_TestSingleLineText"], "NewTestValue 1"))
                                                                    .Append(x => x.WithId(response.Result.Ids[1][0]).AppendFields(new Dictionary <int, object> {
                [fields["Client.A_TestSingleLineText"]] = "NewTestValue 2"
            }))).Result);

            LogHelper.LoggerForCurrentTest.Info("Records are updated without exceptions."); // example of how to access log
            //delete
            recordHandler.DeleteRecords(
                RecordRequestComposer.ComposeDeleteRequest(Porters.TestCoreFramework.Enums.ResourceType.Client, response.Result.Ids.SelectMany(x => x)));
        }
示例#20
0
        public void UpdateFieldsTest()
        {
            const string FieldPropertyToModify = "d.label.ja";
            var          resource = ResourceId.Client;
            var          aliases  = new[] { "P_Country", "P_City", "P_Prefecture" };
            var          resetProgrammingCacheField = "P_Memo";
            var          connection     = PrivateApiConnection.GetConnectionForCurrentTest();
            var          fieldHandler   = new FieldManager();
            var          optionHandler  = new OptionManager();
            var          aclHandler     = new AclManager();
            var          recordsHandler = new RecordManager();
            //PHASE1: preparing test data: reading and updating fields/options/acls/records
            var rawFields = fieldHandler.GetFieldGuid(new[] { "P_Country", "P_Phase", "P_PhaseDate" }, new[] { Porters.TestCoreFramework.Enums.ResourceType.Client })
                            .Result.Result;
            var fields     = rawFields.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => (int)UuidUtil.GetId(x.Id));
            var guidFields = rawFields.ToDictionary(x => $"{char.ToUpper(x.Resource[0]) + x.Resource.Substring(1)}.{x.Alias}", x => x.Id);

            //fields
            fieldHandler.UpdateField(resetProgrammingCacheField, ResourceId.Client, new Dictionary <string, object> {
                ["d.label.ja"] = "MEMO"
            });

            var originalFieldValues = aliases.ToDictionary(x => x, x => fieldHandler.GetFieldDetails($"{resource}.{x}").Result.Values.Single().Value);

            foreach (var alias in aliases)
            {
                fieldHandler.UpdateField(alias, ResourceId.Client, new Dictionary <string, object> {
                    [FieldPropertyToModify] = $"UPDATE_{alias.ToUpper()}_1"
                });
            }

            //options
            var data = optionHandler.SearchOption("Option.P_LanguageAbility");
            var originalOptionValues = data.Result.Single().Children;

            foreach (var child in data.Result.Single().Children)
            {
                optionHandler.UpdateOption(child.Id, new Dictionary <string, object> {
                    ["name"] = child.Alias
                });
            }

            //acl
            var aclInfo         = aclHandler.ReadAclInfo(guidFields["Client.P_Country"]);
            var originalAclInfo = aclInfo.Result[guidFields["Client.P_Country"]].Last().Value.Phases.ToDictionary(x => x.Key, x => new AclHandlingComponent.DataContract.AclResponseItem.PermissionItem {
                Permission = x.Value.Permission
            });

            aclInfo.Result[guidFields["Client.P_Country"]].Last().Value.Phases.Select(x => x.Value.Permission = 20).ToArray();
            aclHandler.SetFieldAcl(aclInfo.Result);

            //records
            var originalRecordData = recordsHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                .WithIds(new[] { 10001 })
                .Fields("Client.P_Country", "Client.P_Phase", "Client.P_PhaseDate")
                .Result);

            recordsHandler.UpdateRecords(
                RecordRequestComposer.ComposeUpdateRequest().Append(item => item.ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                                                                    .Append(x => x.WithId(10001).AppendField(fields["Client.P_Country"], "TestValue")
                                                                            .AppendField(fields["Client.P_Phase"], originalRecordData.Result.Items.Single()["Client.P_Phase"])
                                                                            .AppendField(fields["Client.P_PhaseDate"], originalRecordData.Result.Items.Single()["Client.P_PhaseDate"]))).Result);

            connection.DeAuthenticate();
            connection.DeleteAllCookies();
            //MANUAL PART: switch DB, restart memcache
            System.Threading.Thread.Sleep(new TimeSpan(0, 5, 5));

            connection.Authenticate();
            //PART3: reading from new DB, making sure that all of values are default
            fieldHandler.UpdateField(resetProgrammingCacheField, ResourceId.Client, new Dictionary <string, object> {
                ["d.label.ja"] = "MEMO"
            });

            // fields check
            var updatedValues = aliases.ToDictionary(x => x, x => fieldHandler.GetFieldDetails($"{resource}.{x}").Result.Values.Single().Value);

            foreach (var alias in aliases)
            {
                PrAssert.That(originalFieldValues[alias].Properties[FieldPropertyToModify], PrIs.EqualTo(updatedValues[alias].Properties[FieldPropertyToModify]));
            }
            //options check
            data = optionHandler.SearchOption("Option.P_LanguageAbility");
            foreach (var child in data.Result.Single().Children)
            {
                PrAssert.That(child.Name, Is.EqualTo(originalOptionValues.Single(x => x.Id == child.Id).Name));
            }
            //acl check
            aclInfo = aclHandler.ReadAclInfo(guidFields["Client.P_Country"]);
            foreach (var aclItem in originalAclInfo)
            {
                PrAssert.That(aclInfo.Result[guidFields["Client.P_Country"]].Last().Value.Phases[aclItem.Key].Permission, Is.EqualTo(aclItem.Value.Permission));
            }
            //records check
            var recordsData = recordsHandler.ReadRecords(
                RecordRequestComposer.ComposeReadRequest()
                .ForResource(Porters.TestCoreFramework.Enums.ResourceType.Client)
                .WithIds(new[] { 10001 })
                .Fields("Client.P_Country", "Client.P_Phase", "Client.P_PhaseDate")
                .Result);

            PrAssert.That(recordsData.Result.Items.Single()["Client.P_Country"], Is.EqualTo(originalRecordData.Result.Items.Single()["Client.P_Country"]));
        }