public void GetProject_ShouldReturnTaskWithCustomFields() { var customFields = _customFieldsService.Invoke(s => s.ReadCustomFieldsByEntity2(PsEntityType.Task.GetAttr <GuidAttribute>().Guid)); var projectDataSet = _projectService.Invoke(s => s.ReadProject(Settings.DefaultProjectGuid, DataStoreEnum.WorkingStore)); var project = new TaskMappingProject(); _mapper.Map(projectDataSet.Project, project); var task = new TaskMappingProjectTask(); _mapper.Map(projectDataSet.Task, task, externalData: new Dictionary <string, object> { { "TASK_UID", task.TaskUid } }); _mapper.Map(projectDataSet.TaskCustomFields, task, externalData: new Dictionary <string, object> { { customFields.DataSetName, customFields }, { "PROJ_UID", Settings.DefaultProjectGuid }, { "TASK_UID", task.TaskUid } }); Assert.IsTrue(task.TaskName == "Task 1"); Assert.IsTrue(task.TestTaskText == "10"); var dict = new Dictionary <string, object>(); _mapper.Map(projectDataSet.Task, dict, new NopPropsMatcher(), externalData: new Dictionary <string, object> { { "TASK_UID", task.TaskUid } }); _mapper.Map(projectDataSet.TaskCustomFields, dict, new NopPropsMatcher(), externalData: new Dictionary <string, object> { { customFields.DataSetName, customFields }, { "PROJ_UID", Settings.DefaultProjectGuid }, { "TASK_UID", task.TaskUid } }); Assert.IsTrue(dict["TASK_NAME"].Equals("Task 1")); Assert.IsTrue(dict["Test - Task - Text"].Equals("10")); var propertiesToUpdate = new Dictionary <string, object> { { "Test - Task - Text", "20" } }; _mapper.Map(propertiesToUpdate, projectDataSet.TaskCustomFields, new NopPropsMatcher(), externalData: new Dictionary <string, object> { { customFields.DataSetName, customFields }, { "PROJ_UID", task.ProjUid }, { "TASK_UID", task.TaskUid } }); _projectService.Invoke(s => s.CheckOutProject(Settings.DefaultProjectGuid, Settings.DefaultSessionGuid, "TaskMapping")); var updateProjectJobUid = Guid.NewGuid(); _projectService.Invoke(s => s.QueueUpdateProject2(updateProjectJobUid, Settings.DefaultSessionGuid, projectDataSet, false)); _envUtil.Wait(updateProjectJobUid); var checkInJobUid = Guid.NewGuid(); _projectService.Invoke(s => s.QueueCheckInProject(checkInJobUid, Settings.DefaultProjectGuid, false, Settings.DefaultSessionGuid, "TaskMapping")); _envUtil.Wait(checkInJobUid); var updatedProjectDs = _projectService.Invoke(s => s.ReadProject(Settings.DefaultProjectGuid, DataStoreEnum.WorkingStore)); var updatedTaskFields = new Dictionary <string, object>(); _mapper.Map(updatedProjectDs.Task, updatedTaskFields, new NopPropsMatcher(), externalData: new Dictionary <string, object> { { "TASK_UID", task.TaskUid } }); _mapper.Map(updatedProjectDs.TaskCustomFields, updatedTaskFields, new NopPropsMatcher(), externalData: new Dictionary <string, object> { { customFields.DataSetName, customFields }, { "PROJ_UID", Settings.DefaultProjectGuid }, { "TASK_UID", task.TaskUid } }); Assert.IsTrue(updatedTaskFields["TASK_NAME"].Equals("Task 1")); Assert.IsTrue(updatedTaskFields["Test - Task - Text"].Equals("20")); }
public static void ClassInit(TestContext context) { _envUtil = new EnvUtil(Settings.PwaUri); _mapper = new FluentMapper(new PsMappingConfiguration()); _projectService = PsiContext.Get <IProject>(Settings.PwaUri); _customFieldsService = PsiContext.Get <ICustomFields>(Settings.PwaUri); ClassCleanup(); var customFields = new List <TaskMappingCustomFields> { new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - Text", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.String }, new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - Number", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.Number }, new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - Cost", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.Cost }, new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - Duration", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.Duration }, new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - Date", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.Date }, new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - YesNo - True", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.YesNo }, new TaskMappingCustomFields { MdPropUid = Guid.NewGuid(), MdPropName = "Test - Task - YesNo - False", MdEntTypeUid = PsEntityType.Task.GetAttr <GuidAttribute>().Guid, MdPropTypeEnum = PsDataType.YesNo } }; var project = new TaskMappingProject { ProjUid = Settings.DefaultProjectGuid, ProjName = Settings.DefaultProjectName, ProjType = ProjectType.Project }; var task = new TaskMappingProjectTask { TaskUid = Guid.NewGuid(), ProjUid = Settings.DefaultProjectGuid, TaskName = "Task 1", TaskStartDate = DateTime.Now, TaskFinishDate = DateTime.Now.AddDays(10), TaskWork = 5000.0, TestTaskText = "10", TestTaskNumber = 20, TestTaskCost = 3000, TestTaskDuration = 4000, TestTaskDate = DateTime.Parse("1991-02-16", CultureInfo.InvariantCulture), TestTaskYesNoTrue = true }; _envUtil.CreateCustomFields(customFields); var customFieldsDs = _customFieldsService.Invoke(s => s.ReadCustomFieldsByEntity2(PsEntityType.Task.GetAttr <GuidAttribute>().Guid)); var projectCreateDs = new ProjectDataSet(); _mapper.Map(project, projectCreateDs.Project); _mapper.Map(task, projectCreateDs.Task); _mapper.Map(task, projectCreateDs.TaskCustomFields, externalData: new Dictionary <string, object> { { customFieldsDs.DataSetName, customFieldsDs }, { "PROJ_UID", Settings.DefaultProjectGuid }, { "TASK_UID", task.TaskUid } }); var createProjectJobUid = Guid.NewGuid(); _projectService.Invoke(s => s.QueueCreateProject(createProjectJobUid, projectCreateDs, false)); _envUtil.Wait(createProjectJobUid); var publishProjectJobUid = Guid.NewGuid(); _projectService.Invoke(p => p.QueuePublish(publishProjectJobUid, Settings.DefaultProjectGuid, true, string.Empty)); _envUtil.Wait(publishProjectJobUid); }