public void DisplayListProcessChangedEventCtorTest() { var stepEdit = DisplayListRequiredStepEdit.NewStep(1); stepEdit.SelectedFields = new DisplayListStepFields(); var vm = new ProcessFieldDisplayListRequiredStepViewModel(stepEdit, new StepInfo(1), new ProcessFieldViewModel(new FieldEdit(), new ProcessSectionViewModel(Mock.Create<ISectionEdit>()))); var ppi1 = new PublishedProcessInfo(); var ppi2 = new PublishedProcessInfo(); var item = new DisplayListProcessChangedEvent(vm, ppi1, ppi2); Assert.AreSame(vm, item.StepViewModel); Assert.AreSame(ppi1, item.OldProcess); Assert.AreSame(ppi2, item.NewProcess); }
public void CrossReferenceSubfieldsRetrieverCanLoadCrossReferenceSubfields() { // Arrange. var process = new PublishedProcessInfo(); var crField = new FieldInfo(1, "CR Field", "CRField_f", null, "TestProcess_p", ColumnTypes.Reference, Guid.Empty, false, false, false); var field1 = new FieldInfo(); var field2 = new FieldInfo(); var field3 = new FieldInfo(); var fieldList = new FieldListStub(field1, field2, field3); var processRetriever = Mock.Create<PublishedProcessFieldsRetriever>(Behavior.Loose); Mock.Arrange(() => processRetriever.Process).Returns(process); Mock.Arrange(() => processRetriever.Fields).Returns(fieldList); Mock.Arrange(() => PublishedProcessFieldsRetriever.GetProcessByCrossReferenceFieldAsync("TestProcess_p", "CRField_f", true)) .Returns(TaskEx.FromResult(processRetriever)); var expressionField1 = Mock.Create<IExpressionField>(Behavior.Loose); var expressionField2 = Mock.Create<IExpressionField>(Behavior.Loose); var fieldMap = new Dictionary<FieldInfo, IExpressionField>(); fieldMap[field1] = expressionField1; fieldMap[field2] = expressionField2; var retriever = new ExpressionDesignerWindowViewModelBase.CrossReferenceSubfieldsRetriever(crField, fieldMap.ContainsKey, (f, p, o) => fieldMap[f]); var sourceField = Mock.Create<IExpressionField>(Behavior.Loose); var connector = Mock.Create<IConnector>(Behavior.Loose); Mock.Arrange(() => sourceField.Connector).Returns(connector); var owner = Mock.Create<ExpressionObjectBase>(Behavior.CallOriginal); Mock.Arrange(() => connector.Owner).Returns(owner); IExpressionField[] subfields = null; // Act. retriever.BeginLoad(sourceField, (sf, fields) => subfields = fields.ToArray()); // Assert. Assert.IsNotNull(subfields); Assert.AreEqual(2, subfields.Length); Assert.IsTrue(subfields.Contains(expressionField1)); Assert.IsTrue(subfields.Contains(expressionField2)); }
public void CrSubfieldsRetrieverBaseAddSystemSourceFieldsShouldCallAddVersionFieldsByPublishedProcessInfo() { var vm = new ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase(1); var sourceFields = new SourceField(new SourceFieldList()); var fields = new FieldList(); Mock.Arrange(() => fields.IsReadOnly).Returns(false); Mock.Arrange(() => FieldList.BeginGetFieldList(1, Arg.IsAny<EventHandler<DataPortalResult<FieldList>>>())).DoInstead<int, EventHandler<DataPortalResult<FieldList>>>((pid, evt) => evt(null, new DataPortalResult<FieldList>(fields, null, null))); IEnumerable<IExpressionField> expressionFields = null; var processInfo = new PublishedProcessInfo(); Mock.Arrange(() => processInfo.ProcessId).Returns(1); Mock.Arrange(() => processInfo.ProcessOption).Returns(ProcessOption.VersionEnabled); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo); Assert.IsTrue(expressionFields.Any(x => x.Name == "Version Date")); Assert.IsTrue(expressionFields.Any(x => x.Name == Constants.VersionNumberName)); Assert.IsTrue(expressionFields.Any(x => x.Name == "Version Master Id")); expressionFields = null; var processInfo2 = new PublishedProcessInfo(); Mock.Arrange(() => processInfo2.ProcessId).Returns(1); Mock.Arrange(() => processInfo2.ProcessOption).Returns(ProcessOption.None); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo2); Assert.IsFalse(expressionFields.Any(x => x.Name == "Version Date")); Assert.IsFalse(expressionFields.Any(x => x.Name == Constants.VersionNumberName)); Assert.IsFalse(expressionFields.Any(x => x.Name == "Version Master Id")); }
public void CrSubfieldsRetrieverBaseAddSystemSourceFieldsShouldCallAddIdFieldByProcessInfo() { var vm = new ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase(1); var sourceFields = new SourceField(new SourceFieldList()); var fields = new FieldList(); Mock.Arrange(() => fields.IsReadOnly).Returns(false); Mock.Arrange(() => FieldList.BeginGetFieldList(1, Arg.IsAny<EventHandler<DataPortalResult<FieldList>>>())).DoInstead<int, EventHandler<DataPortalResult<FieldList>>>((pid, evt) => evt(null, new DataPortalResult<FieldList>(fields, null, null))); IEnumerable<IExpressionField> expressionFields = null; var processInfo = new PublishedProcessInfo(); Mock.Arrange(() => processInfo.ProcessId).Returns(1); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo); Assert.IsNotNull(expressionFields.First(x => x.Name == "Id")); }
public void CrSubfieldsRetrieverBaseBeginLoadWorkerShouldCallAddSystemSourceFields() { var vm = new ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase(1); var sourceFields = new SourceField(new SourceFieldList()); var fields = new FieldList(); Mock.Arrange(() => fields.IsReadOnly).Returns(false); Mock.Arrange(() => FieldList.BeginGetFieldList(1, Arg.IsAny<EventHandler<DataPortalResult<FieldList>>>())).DoInstead<int, EventHandler<DataPortalResult<FieldList>>>((pid, evt) => evt(null, new DataPortalResult<FieldList>(fields, null, null))); IEnumerable<IExpressionField> expressionFields = null; var processInfo = new PublishedProcessInfo(); Mock.Arrange(() => processInfo.ProcessId).Returns(1); var isCalled = false; Mock.NonPublic.Arrange(vm, "AddSystemSourceFields", ArgExpr.IsAny<PublishedProcessInfo>(), ArgExpr.IsAny<List<IExpressionField>>()).DoInstead(() => { isCalled = true; }); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo); Assert.IsTrue(isCalled); }
public void CrSubfieldsRetrieverBaseBeginLoadWorkerShouldCallCanUseFieldType() { // Arrange. var vm = new ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase(1); var sourceFields = new SourceField(new SourceFieldList()) { SystemName = "Ref" }; var fields = new FieldList(); Mock.Arrange(() => fields.IsReadOnly).Returns(false); fields.Add(new FieldInfo(1, "F", "F", new FieldTypeInfo("String", "String", false), string.Empty, ColumnTypes.String, Guid.Empty, false, false, false)); Mock.Arrange(() => FieldList.BeginGetFieldList(1, Arg.IsAny<EventHandler<DataPortalResult<FieldList>>>())).DoInstead<int, EventHandler<DataPortalResult<FieldList>>>((pid, evt) => evt(null, new DataPortalResult<FieldList>(fields, null, null))); IEnumerable<IExpressionField> expressionFields = null; Mock.Arrange(() => ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase.CanUseFieldType(Arg.IsAny<FieldTypeInfo>())).Returns(true); var processInfo = new PublishedProcessInfo(); Mock.Arrange(() => processInfo.ProcessId).Returns(1); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo); Assert.AreEqual(2, expressionFields.Count()); Mock.Arrange(() => ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase.CanUseFieldType(Arg.IsAny<FieldTypeInfo>())).Returns(false); var processInfo2 = new PublishedProcessInfo(); Mock.Arrange(() => processInfo2.ProcessId).Returns(1); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo2); Assert.AreEqual(1, expressionFields.Count()); }
/// <summary> /// Initializes a new instance of the <see cref="ChecklistQuestionField"/> class. /// </summary> /// <param name="field"> /// The field. /// </param> /// <param name="process"> /// The process. /// </param> /// <param name="questionSource"> /// The question source. /// </param> /// <exception cref="ArgumentNullException"> /// The <paramref name="field"/> parameter is null. /// </exception> /// <exception cref="ArgumentNullException"> /// The <paramref name="process"/> parameter is null. /// </exception> public ChecklistQuestionField(FieldInfo field, PublishedProcessInfo process, ChecklistQuestionFieldSource questionSource) { if (field == null) throw new ArgumentNullException("field"); if (process == null) throw new ArgumentNullException("process"); _name = field.Name; _systemName = field.SystemName; _guid = field.Guid; _questionSource = questionSource; _sourceName = process.Name; _columnType = field.ColumnType; }
private static void AddProcessIndexes( ProcessIndexCollection indexCollection, PublishedProcessInfo process, IEnumerable<DestinationField> destinationFields, bool createIndexesOnKeyFields) { var destinationFieldList = destinationFields.ToArray(); var processFields = FieldList.GetFieldList(process.ProcessId); if (createIndexesOnKeyFields) { var fieldToProcessMap = GetFieldToProcessMap(process, processFields); foreach (var keyField in destinationFieldList.Where(f => f.IsKey && IsMapped(f))) { PublishedProcessInfo declaringProcess; if (fieldToProcessMap.TryGetValue(keyField.SystemName, out declaringProcess)) { var indexFields = new List<ProcessIndexField> { ProcessIndexField.CreateProcessIndexField(keyField.SystemName, DbSortOrder.Ascending) }; var index = ProcessIndex.CreateProcessIndex(declaringProcess.ProcessId, false, indexFields); if (!indexCollection.Contains(index)) indexCollection.Add(index); } } } foreach (var subfield in destinationFieldList) { var processField = processFields.FirstOrDefault(f => f.SystemName == subfield.SystemName); if (processField == null) continue; var referencedProcess = GetReferencedProcess(processField); if (referencedProcess == null) continue; AddProcessIndexes(indexCollection, referencedProcess, subfield.Subfields.OfType<DestinationField>(), NeedsIndexesOnSubfields(processField)); } }
/// <summary> /// Makes the sub title. /// </summary> /// <param name="process">The process.</param> /// <returns>System.String.</returns> protected virtual string MakeSubTitle(PublishedProcessInfo process) { return process != null ? process.Name : "[process not selected]"; }
private static bool CanIncludeInProcessToModifyList(PublishedProcessInfo process) { if (process.SystemName == Constants.AccountProcessName) return true; return !Constants.SealedProcessesPlus.Contains(process.SystemName); }
/// <summary> /// Initializes the current <see cref="ProcessDataTriggerViewModel"/>. /// </summary> /// <param name="model">The model.</param> /// <param name="parent">The parent view model.</param> public void Initialize(ProcessDataTriggerEdit model, IProcessDataTriggersViewModel parent) { if (model == null) throw new ArgumentNullException("model"); if (parent == null) throw new ArgumentNullException("parent"); ParentViewModel = parent; Model = model; _processList = parent.PublishedProcesses.Where(CanIncludeInProcessToModifyList).ToList(); _processToModify = _processList.FirstOrDefault(p => p.SystemName == Model.ProcessToModifySystemName); if (_processToModify == null) { Model.ProcessToModifySystemName = null; } }
/// <summary> /// Gets the process definition. /// </summary> /// <param name="process">The process.</param> /// <returns>The ReferenceProcessDefinition.</returns> public ReferenceProcessDefinition GetProcessDefinition(PublishedProcessInfo process) { var processDefinition = new ReferenceProcessDefinition { Name = process.Name, SystemName = process.SystemName }; if (process.BaseProcess != null) { processDefinition.BaseProcess = GetProcessDefinition(process.BaseProcess); } return processDefinition; }
/// <summary> /// Initializes the specified model. /// </summary> /// <param name="model">The model.</param> /// <param name="view">The view.</param> public void Initialize(PublishedProcessInfo model, ProcessViewInfo view = null) { PublishedProcess = model; ProcessView = view; LoadIcon(); }
/// <summary> /// Creates the process definition. /// </summary> /// <param name="process">The process.</param> /// <returns>ProcessDefinition.</returns> private ProcessDefinition CreateProcessDefinition(PublishedProcessInfo process) { var processDefinition = new ProcessDefinition { SystemName = process.SystemName }; if (process.BaseProcess != null) processDefinition.BaseProcess = CreateProcessDefinition(process.BaseProcess); return processDefinition; }
public void AddItem(PublishedProcessInfo item) { IsReadOnly = false; this.Add(item); IsReadOnly = true; }
/// <summary> /// Loads the icon. /// </summary> /// <param name="process">The process.</param> protected virtual void LoadIcon(PublishedProcessInfo process) { if (process != null && process.IconId.HasValue) IconData.BeginGetIcon( process.IconId.Value, (o, result) => { if (result.Error == null) Icon = result.Object; }); }
/// <summary> /// Creates a question field using a field from question process. /// </summary> /// <param name="field"> /// The field. /// </param> /// <param name="process"> /// The process. /// </param> /// <returns> /// The <see cref="IChecklistQuestionField"/>. /// </returns> public IChecklistQuestionField CreateQuestionProcessField(FieldInfo field, PublishedProcessInfo process) { return new ChecklistQuestionField(field, process, ChecklistQuestionFieldSource.QuestionProcess); }
public void CrSubfieldsRetrieverBaseBeginLoadWorkerShouldCreateStringForMultiCrossRef() { // Arrange. var vm = new ExpressionDesignerWindowViewModelBase.CrSubfieldsRetrieverBase(1); var sourceFields = new SourceField(new SourceFieldList()) { SystemName = "Ref" }; var fields = new FieldList(); Mock.Arrange(() => fields.IsReadOnly).Returns(false); fields.Add(new FieldInfo(1, "Ref", "Ref", new FieldTypeInfo("MultiReference", "MultiReference", false), string.Empty, ColumnTypes.MultiReference, Guid.Empty, false, false, false)); Mock.Arrange(() => FieldList.BeginGetFieldList(1, Arg.IsAny<EventHandler<DataPortalResult<FieldList>>>())).DoInstead<int, EventHandler<DataPortalResult<FieldList>>>((pid, evt) => evt(null, new DataPortalResult<FieldList>(fields, null, null))); IEnumerable<IExpressionField> expressionFields = null; var processInfo = new PublishedProcessInfo(); Mock.Arrange(() => processInfo.ProcessId).Returns(1); vm.BeginLoadWorker(sourceFields, (f, fl) => { expressionFields = fl; }, processInfo); Assert.AreEqual(2, expressionFields.Count()); var firstField = expressionFields.First(x => x.Name == "Ref") as SourceField; Assert.AreEqual(NodeDataType.String, firstField.DataType); Assert.AreEqual(NodeDataType.String, firstField.Connector.DataType); Assert.AreEqual("Ref.Ref", firstField.SystemName); Assert.IsNull(firstField.SubfieldsRetriever); }
private static Dictionary<string, PublishedProcessInfo> GetFieldToProcessMap(PublishedProcessInfo process, IEnumerable<FieldInfo> processFields) { var map = new Dictionary<string, PublishedProcessInfo>(); foreach (var field in processFields) { var declaringProcess = process.GetBaseProcess(field.DefinedIn); if (declaringProcess != null) { map[field.SystemName] = declaringProcess; } } map[Constants.IdColumnName] = process; if (process.IsStateEnabled) { map[Constants.CurrentStateColumnName] = process; } if (process.ProcessOption == ProcessOption.VersionEnabled) { map[Constants.VersionNumber] = process; map[Constants.VersionDate] = process; map[Constants.VersionMasterId] = process; } return map; }
/// <summary> /// Makes the sub title. /// </summary> /// <param name="process">The process.</param> /// <returns>System.String.</returns> protected override string MakeSubTitle(PublishedProcessInfo process) { var result = base.MakeSubTitle(process); return result; }