public void DoesNotRecreateExistingFields()
        {
            ICategoryRepository categoryRepository;
            const string        categoryName = "category";

            List <FieldInfo> existingFields = new List <FieldInfo>();

            existingFields.Add(new FieldInfo("existingField1", FieldType.TextBox, "Existing field 1"));
            existingFields.Add(new FieldInfo("existingField2", FieldType.CheckBox, "Existing field 2"));

            using (Mocks.Record())
            {
                categoryRepository = Mocks.StrictMock <ICategoryRepository>();

                CustomFormSettings formSettings = new CustomFormSettings();
                formSettings.Fields = existingFields.ToCustomFieldList();

                Expect.Call(categoryRepository.GetFormSettings(categoryName)).Return(formSettings);
            }

            using (Mocks.Playback())
            {
                Migrator fm = new Migrator(categoryRepository, new PostRepository());
                fm.EnsureFields(categoryName, existingFields);
            }
        }
        public void ShouldSetDescriptionForExistingFieldsIfEmpty()
        {
            ICategoryRepository categoryRepository;
            const string        categoryName = "category";

            List <FieldInfo> existingFields = new List <FieldInfo>();

            existingFields.Add(new FieldInfo("existingField1", FieldType.TextBox, "User-defined description"));
            existingFields.Add(new FieldInfo("existingField2", FieldType.CheckBox, String.Empty));

            List <FieldInfo> newFields = new List <FieldInfo>();

            newFields.Add(new FieldInfo("existingField1", FieldType.TextBox, "Field description 1"));
            newFields.Add(new FieldInfo("existingField2", FieldType.CheckBox, "Field description 2"));

            using (Mocks.Record())
            {
                categoryRepository = Mocks.StrictMock <ICategoryRepository>();

                CustomFormSettings formSettings = new CustomFormSettings();
                formSettings.Fields = existingFields.ToCustomFieldList();
                Expect.Call(categoryRepository.GetFormSettings(categoryName)).Return(formSettings);

                List <CustomField> expectedFormSettings = new List <CustomField>();
                expectedFormSettings.Add(existingFields.ToCustomFieldList()[0]);
                expectedFormSettings.Add(newFields.ToCustomFieldList()[1]);

                categoryRepository.SaveFormSettings(null);
                LastCall.Constraints(Is.Matching((CustomFormSettings cfs) =>
                {
                    for (int i = 0; i < cfs.Fields.Count; i++)
                    {
                        CustomField field         = cfs.Fields[i];
                        CustomField expectedField = expectedFormSettings[i];
                        if (expectedField.Name != field.Name || expectedField.Description != field.Description ||
                            expectedField.FieldType != field.FieldType)
                        {
                            return(false);
                        }
                    }

                    return(true);
                }));
            }

            using (Mocks.Playback())
            {
                Migrator fm = new Migrator(categoryRepository, new PostRepository());
                fm.EnsureFields(categoryName, newFields);
            }
        }
        public void ShouldCreateNewFieldsAndLeaveExistingFieldsIntact()
        {
            ICategoryRepository categoryRepository;
            const string        categoryName = "category";

            List <FieldInfo> existingFields = new List <FieldInfo>();

            existingFields.Add(new FieldInfo("existingField1", FieldType.TextBox, "Existing field 1"));
            existingFields.Add(new FieldInfo("existingField2", FieldType.CheckBox, "Existing field 2"));

            List <FieldInfo> newFields = new List <FieldInfo>();

            newFields.Add(new FieldInfo("newField1", FieldType.TextBox, "New field 1"));
            newFields.Add(new FieldInfo("newField2", FieldType.CheckBox, "New field 2"));

            using (Mocks.Record())
            {
                categoryRepository = Mocks.StrictMock <ICategoryRepository>();

                CustomFormSettings formSettings = new CustomFormSettings();
                formSettings.Fields = existingFields.ToCustomFieldList();
                Expect.Call(categoryRepository.GetFormSettings(categoryName)).Return(formSettings);

                foreach (FieldInfo field in newFields)
                {
                    categoryRepository.AddField(null, null);

                    FieldInfo field1 = field;
                    LastCall.Constraints(Is.Same(formSettings),
                                         Is.Matching(
                                             (CustomField f) =>
                                             f.Name == field1.FieldName && f.FieldType == field1.FieldType &&
                                             f.Description == field1.Description));
                }
            }

            using (Mocks.Playback())
            {
                List <FieldInfo> merged = new List <FieldInfo>();
                merged.AddRange(newFields);
                merged.AddRange(existingFields);

                Migrator fm = new Migrator(categoryRepository, new PostRepository());
                fm.EnsureFields(categoryName, merged);
            }
        }
		public static void MigrateSettings(bool createTargetCategoryAndFields,
		                                   bool migrateFieldValues,
		                                   IMemento newState,
		                                   IMemento oldState)
		{
			Migrator migrator = new Migrator();

			if (createTargetCategoryAndFields)
			{
				migrator.EnsureTargetCategory(newState.CategoryName);
				migrator.EnsureFields(newState.CategoryName, new MigrationInfo(oldState, newState).AllFields);
			}

			if (migrateFieldValues)
			{
				migrator.Migrate(new MigrationInfo(oldState, newState));
			}
		}
示例#5
0
        public static void MigrateSettings(bool createTargetCategoryAndFields,
                                           bool migrateFieldValues,
                                           IMemento newState,
                                           IMemento oldState)
        {
            Migrator migrator = new Migrator();

            if (createTargetCategoryAndFields)
            {
                migrator.EnsureTargetCategory(newState.CategoryName);
                migrator.EnsureFields(newState.CategoryName, new MigrationInfo(oldState, newState).AllFields);
            }

            if (migrateFieldValues)
            {
                migrator.Migrate(new MigrationInfo(oldState, newState));
            }
        }
        public void CreatesNewFields()
        {
            ICategoryRepository categoryRepository;
            const string        categoryName = "category";

            List <FieldInfo> newFields = new List <FieldInfo>();

            newFields.Add(new FieldInfo("newField1", FieldType.TextBox, "New field 1"));
            newFields.Add(new FieldInfo("newField2", FieldType.CheckBox, "New field 2"));

            using (Mocks.Record())
            {
                categoryRepository = Mocks.StrictMock <ICategoryRepository>();

                CustomFormSettings formSettings = new CustomFormSettings();
                formSettings.Fields = new List <CustomField>();
                Expect.Call(categoryRepository.GetFormSettings(categoryName)).Return(formSettings);

                foreach (FieldInfo field in newFields)
                {
                    categoryRepository.AddField(formSettings, new CustomField());

                    FieldInfo field1 = field;
                    LastCall.Constraints(Is.Same(formSettings),
                                         Is.Matching(
                                             (CustomField f) =>
                                             f.Name == field1.FieldName && f.FieldType == field1.FieldType &&
                                             f.Description == field1.Description));
                }
            }

            using (Mocks.Playback())
            {
                Migrator fm = new Migrator(categoryRepository, new PostRepository());
                fm.EnsureFields(categoryName, newFields);
            }
        }