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()); }
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 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 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 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 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 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!"); }
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))); }
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"])); }