public void TestProperties()
        {
            var step = new GageRROptionsStepEdit();

            Assert.AreEqual(step.FieldId, 0);
            step.FieldId = 3;
            Assert.AreEqual(step.FieldId, 3);
            Assert.IsNotNull(step.GetType().GetProperty("FieldId").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            Assert.IsNull(step.GetType().GetProperty("FieldId").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault());

            Assert.AreEqual(step.GageRRSourceProcessId, null);
            step.GageRRSourceProcessId = 1;
            Assert.AreEqual(step.GageRRSourceProcessId, 1);
            Assert.IsNull(step.GetType().GetProperty("GageRRSourceProcessId").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            var requiredAttr = step.GetType().GetProperty("GageRRSourceProcessId").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault() as RequiredAttribute;
            Assert.IsNotNull(requiredAttr);
            Assert.AreEqual(requiredAttr.ErrorMessageResourceName, "Required_SetDataSourceProcessForGageRR");

            Assert.AreEqual(step.GageRRSourceProcessSysName, string.Empty);
            step.GageRRSourceProcessSysName = "TestProcess";
            Assert.AreEqual(step.GageRRSourceProcessSysName, "TestProcess");

            step.GageRRSourceProcessSysName = "ProcessWithChecklist";
            Assert.AreEqual(step.GageRRSourceProcessSysName, "ProcessWithChecklist");

            Assert.AreEqual(step.GageRRDataProcessSysName, string.Empty);
            step.GageRRDataProcessSysName = "ProcessWithData";
            Assert.AreEqual(step.GageRRDataProcessSysName, "ProcessWithData");

            var sampleFilterGuid = Guid.NewGuid();
            Assert.AreEqual(step.SampleFilterGuid, null);
            step.SampleFilterGuid = sampleFilterGuid;
            Assert.AreEqual(step.SampleFilterGuid, sampleFilterGuid);
            Assert.IsNotNull(step.GetType().GetProperty("SampleFilterGuid").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            Assert.IsNull(step.GetType().GetProperty("SampleFilterGuid").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault());

            Assert.AreEqual(step.SampleFilterDefinition, string.Empty);
            step.SampleFilterDefinition = "FilterDefinition";
            Assert.AreEqual(step.SampleFilterDefinition, "FilterDefinition");
            Assert.IsNotNull(step.GetType().GetProperty("SampleFilterDefinition").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            Assert.IsNull(step.GetType().GetProperty("SampleFilterDefinition").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault());

            Assert.AreEqual(step.ChecklistFieldName, string.Empty);
            step.ChecklistFieldName = "ChecklistField";
            Assert.AreEqual(step.ChecklistFieldName, "ChecklistField");
            Assert.IsNotNull(step.GetType().GetProperty("ChecklistFieldName").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            requiredAttr = step.GetType().GetProperty("ChecklistFieldName").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault() as RequiredAttribute;
            Assert.IsNotNull(requiredAttr);
            Assert.AreEqual(requiredAttr.ErrorMessageResourceName, "Required_SetDataCollectorForGageRR");

            Assert.AreEqual(step.SampleFieldName, string.Empty);
            step.SampleFieldName = "SampleField";
            Assert.AreEqual(step.SampleFieldName, "SampleField");
            Assert.IsNotNull(step.GetType().GetProperty("SampleFieldName").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            requiredAttr = step.GetType().GetProperty("SampleFieldName").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault() as RequiredAttribute;
            Assert.IsNotNull(requiredAttr);
            Assert.AreEqual(requiredAttr.ErrorMessageResourceName, "Required_SetDataSourceForGageRR");

            Assert.AreEqual(step.AppraiserFieldName, string.Empty);
            step.AppraiserFieldName = "AppraiserField";
            Assert.AreEqual(step.AppraiserFieldName, "AppraiserField");
            Assert.IsNotNull(step.GetType().GetProperty("AppraiserFieldName").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            requiredAttr = step.GetType().GetProperty("AppraiserFieldName").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault() as RequiredAttribute;
            Assert.IsNotNull(requiredAttr);
            Assert.AreEqual(requiredAttr.ErrorMessageResourceName, "Required_SetAppraiserForGageRR");

            Assert.AreEqual(step.TrialFieldName, string.Empty);
            step.TrialFieldName = "TrialField";
            Assert.AreEqual(step.TrialFieldName, "TrialField");
            Assert.IsNotNull(step.GetType().GetProperty("TrialFieldName").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
            requiredAttr = step.GetType().GetProperty("TrialFieldName").GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault() as RequiredAttribute;
            Assert.IsNotNull(requiredAttr);
            Assert.AreEqual(requiredAttr.ErrorMessageResourceName, "Required_SetTrialForGageRR");

            Assert.AreEqual(0, step.NumberOfAppraisers);
            step.NumberOfAppraisers = 3;
            Assert.AreEqual(step.NumberOfAppraisers, 3);
            Assert.IsNotNull(step.GetType().GetProperty("NumberOfAppraisers").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());

            Assert.AreEqual(0, step.NumberOfTrials);
            step.NumberOfTrials = 3;
            Assert.AreEqual(step.NumberOfTrials, 3);
            Assert.IsNotNull(step.GetType().GetProperty("NumberOfTrials").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());

            Assert.IsFalse(step.UseDataGroupingFilter);
            step.UseDataGroupingFilter = true;
            Assert.IsTrue(step.UseDataGroupingFilter);
            Assert.IsNotNull(step.GetType().GetProperty("UseDataGroupingFilter").GetCustomAttributes(typeof(ExportableAttribute), false).FirstOrDefault());
        }
        public void LoadPropertiesMethodTest()
        {
            var stepDto = new GageRROptionsStepDto { Id = 5, FieldId = 22, GageRRSourceProcessId = 77 };
            var sampleFilterGuid = Guid.NewGuid();
            stepDto.GageRRSourceProcessSysName = "ChecklistProcess";
            stepDto.GageRRDataProcessSysName = "AnswerProcess";
            stepDto.SampleFilterGuid = sampleFilterGuid;
            stepDto.SampleFilterDefinition = "FilterDefinition";
            stepDto.ChecklistFieldName = "ChecklistField";
            stepDto.SampleFieldName = "SampleField";
            stepDto.AppraiserFieldName = "AppraiserField";
            stepDto.TrialFieldName = "TrialField";
            stepDto.NumberOfAppraisers = 3;
            stepDto.NumberOfTrials = 3;
            stepDto.UseDataGroupingFilter = true;

            var step = new GageRROptionsStepEdit();

            var processMock = Mock.Create<PublishedProcessInfo>();
            processMock.Id = 77;
            Mock.Arrange(() => PublishedProcesses.GetPublishedProcessInfo(77)).Returns((PublishedProcessInfo)null);
            Mock.Arrange(() => PublishedProcessInfo.GetProcessInfo(77)).Returns(processMock);

            var privateAccessor = new PrivateAccessor(step);
            privateAccessor.CallMethod("LoadProperties", stepDto);

            Assert.AreEqual(step.Id, 5);
            Assert.AreEqual(step.FieldId, 22);
            Assert.AreEqual(step.GageRRSourceProcessId, 77);
            Assert.AreEqual(step.SampleFilterGuid, sampleFilterGuid);
            Assert.AreEqual(step.SampleFilterDefinition, "FilterDefinition");
            Assert.AreEqual(step.ChecklistFieldName, "ChecklistField");
            Assert.AreEqual(step.SampleFieldName, "SampleField");
            Assert.AreEqual(step.AppraiserFieldName, "AppraiserField");
            Assert.AreEqual(step.TrialFieldName, "TrialField");
            Assert.AreEqual(step.NumberOfAppraisers, 3);
            Assert.AreEqual(step.NumberOfTrials, 3);
            Assert.AreEqual(step.GageRRSourceProcessSysName, "ChecklistProcess");
            Assert.AreEqual(step.GageRRDataProcessSysName, "AnswerProcess");
            Assert.IsTrue(step.UseDataGroupingFilter);
        }