public void EnsureMetadata_Invalidates_WhenFieldDeleted()
        {
            EntityType type      = null;
            Field      field     = null;
            Field      calcField = null;

            try
            {
                // Create scenario
                type       = new EntityType();
                type.Name  = "CFType";
                field      = new StringField().As <Field>();
                field.Name = "CFField";
                field.Save();
                calcField                   = new StringField().As <Field>();
                calcField.Name              = "CFCalcField";
                calcField.FieldCalculation  = "'A'+CFField";
                calcField.IsCalculatedField = true;
                calcField.Save();
                type.Fields.Add(field);
                type.Fields.Add(calcField);
                type.Save();

                // Get provider
                ICalculatedFieldMetadataProvider provider = Factory.CalculatedFieldMetadataProvider;

                // Run
                CalculatedFieldMetadata res1 = provider.GetCalculatedFieldMetadata(calcField.Id, CalculatedFieldSettings.Default);
                CalculatedFieldMetadata res2 = provider.GetCalculatedFieldMetadata(calcField.Id, CalculatedFieldSettings.Default);

                // Ensure same instance was returned (came from cache)
                Assert.That(res2, Is.SameAs(res1));

                // Delete the field
                field.Delete();

                // Rerun
                CalculatedFieldMetadata res3 = provider.GetCalculatedFieldMetadata(calcField.Id, CalculatedFieldSettings.Default);

                // Ensure different instance was returned (not from cache)
                Assert.That(res3, Is.Not.SameAs(res1));
                Assert.That(res3.Exception, Is.Not.Null); // because the script is now invalid
            }
            finally
            {
                if (field != null)
                {
                    field.Delete();
                }
                if (calcField != null)
                {
                    calcField.Delete();
                }
                if (type != null)
                {
                    type.Delete();
                }
            }
        }
Пример #2
0
        public void RegexPatternChecksInvalid( )
        {
            StringField field = new StringField();

            field.Name       = "f1";
            field.IsRequired = true;
            field.Pattern    = Entity.Get <StringPattern>("emailPattern");
            field.IsRequired = false;

            EntityType type = new EntityType();

            type.Name = "t1";
            type.Fields.Add(field.As <Field>());
            type.Save();

            var e = new Entity(type.Id);

            try
            {
                e.SetField(field, "blah!!!");
                e.Save();
            }
            finally
            {
                e.Delete();
                field.Delete();
                type.Delete();
            }
        }
Пример #3
0
        public void RegexDoesNotCheckEmptyStrings()
        {
            // Ensure that regex is not applied for empty string, if IsRequired is not set.

            StringField field = new StringField();

            field.Name       = "f1";
            field.IsRequired = true;
            field.Pattern    = Entity.Get <StringPattern>("emailPattern");
            field.IsRequired = false;

            EntityType type = new EntityType();

            type.Name = "t1";
            type.Fields.Add(field.As <Field>());
            type.Save();

            var e = new Entity(type.Id);

            e.SetField(field, "");
            e.Save( );

            e.Delete( );
            field.Delete();
            type.Delete();
        }
Пример #4
0
        public void TestCreateEntityType( )
        {
            EntityType  newType = null;
            FieldGroup  group   = null;
            StringField field1  = null;

            try
            {
                newType             = Entity.Create <EntityType>( );
                newType.Name        = "TestEntityType";
                newType.Description = "Test new EntityType";
                newType.Save( );
                long typeId = newType.Id;

                group = new FieldGroup
                {
                    Name = "TestGroup1"
                };
                newType.FieldGroups.Add(group);
                group.Save( );

                field1 = new StringField
                {
                    Name            = "TestField1",
                    AllowMultiLines = true,
                    FieldInGroup    = @group,
                    FieldIsOnType   = newType
                };

                field1.Save( );

                var savedEntityType = Entity.Get <EntityType>(new EntityRef(typeId), true);

                Assert.IsTrue(savedEntityType.Name == "TestEntityType");
                savedEntityType.Delete( );
            }
            finally
            {
                if (field1 != null)
                {
                    field1.Delete( );
                }

                if (group != null)
                {
                    group.Delete( );
                }

                if (newType != null)
                {
                    newType.Delete( );
                }
            }
        }
Пример #5
0
        public void Test_Invalidated_FieldName(string name1, string sname1, string name2, string sname2, string search, bool expect1, bool expect2)
        {
            EntityType type = null;

            try
            {
                type      = new EntityType();
                type.Name = Guid.NewGuid().ToString();
                Field field = new StringField().As <Field>();
                field.Name            = name1;
                field.FieldScriptName = sname1;
                type.Fields.Add(field);
                type.Save();

                MemberInfo member = Resolver.GetMemberOfType(search, type.Id, MemberType.Any);
                Assert.That(member != null, Is.EqualTo(expect1), "First check");

                if (name2 != name1)
                {
                    field.Name = name2;
                }
                if (sname2 != sname1)
                {
                    field.FieldScriptName = sname2;
                }

                if (name2 == "Delete")
                {
                    field.Delete();
                }
                else
                {
                    field.Save();
                }

                member = Resolver.GetMemberOfType(search, type.Id, MemberType.Any);
                Assert.That(member != null, Is.EqualTo(expect2), "Second check");
            }
            finally
            {
                if (type != null)
                {
                    type.Delete();
                }
            }
        }
Пример #6
0
        public void DeleteAFieldReferedToByAPolicy()
        {
            var toDelete = new List <long>();

            try
            {
                var newField = new StringField {
                    Name = "test field"
                }.As <Field>();
                newField.Save();
                toDelete.Add(newField.Id);

                var policy = new RecordChangeAuditPolicy()
                {
                    Name = "TEST ResourceAuditEventHandlerTests LogCreate", TriggeredOnType = Person.Person_Type, TriggerEnabled = true
                };
                policy.UpdatedFieldsToTriggerOn.Add(newField);
                policy.UpdatedFieldsToTriggerOn.Add(Resource.Name_Field.As <Field>());
                policy.Save();
                toDelete.Add(policy.Id);

                newField.Delete();

                var log = RunAndLog(() =>
                {
                    var person  = Entity.Create <Person>();
                    person.Name = "bob";
                    person.Save();
                });

                Assert.That(log.Count, Is.EqualTo(1));

                var logEntry = log[0].As <RecordChangeLogEntry>();
                Assert.That(logEntry.Description, Is.EqualTo("[Name] set to 'bob'"));
            }
            finally
            {
                Entity.Delete(toDelete);
            }
        }