public void GetAttributes_AddRequiredAttribute_AdditionalAttributeReturned()
        {
            /* ARRANGE */
            var config = new LambdaDynamicTypeConfiguration<TestModel>(); // empty configuration
            config.AddAttribute(() => new RequiredAttribute());
            var descriptor = new LambdaTypeDescriptor(config);

            /* ACT */
            AttributeCollection attributes = descriptor.GetAttributes();

            /* ASSERT */
            Assert.AreEqual(3, attributes.Count);

            // Serializable
            Attribute attribute = attributes[0];
            Assert.IsInstanceOf<SerializableAttribute>(attribute);

            // MetadataType
            attribute = attributes[1];
            Assert.IsInstanceOf<MetadataTypeAttribute>(attribute);
            var metadataAttribute = (MetadataTypeAttribute) attribute;
            Assert.IsTrue(typeof (TestModelWithPropertyBag) == metadataAttribute.MetadataClassType);

            attribute = attributes[2];
            Assert.IsInstanceOf<RequiredAttribute>(attribute);
        }
        public void GetAttributes_MetadataTypeAttributeInConfiguration_AttributeNotReturned()
        {
            /* ARRANGE */
            var config = new LambdaDynamicTypeConfiguration<TestModel>(); // empty configuration
            config.RemoveAttribute(typeof (MetadataTypeAttribute));
            var descriptor = new LambdaTypeDescriptor(config);

            /* ACT */
            AttributeCollection attributes = descriptor.GetAttributes();

            /* ASSERT */
            Assert.IsTrue(attributes.Count == 1);

            // Serializable
            Attribute attribute = attributes[0];
            Assert.IsInstanceOf<SerializableAttribute>(attribute);
        }
        public void GetAttributes_EmptyConfiguration_ReturnsExistingModelAttributes()
        {
            /* ARRANGE */
            var config = new LambdaDynamicTypeConfiguration<TestModel>(); // empty configuration
            var descriptor = new LambdaTypeDescriptor(config);

            /* ACT */
            AttributeCollection attributes = descriptor.GetAttributes();

            /* ASSERT */
            Assert.IsTrue(attributes.Count == 2);

            // Serializable
            Attribute attribute = attributes[0];
            Assert.IsInstanceOf<SerializableAttribute>(attribute);

            // MetadataType
            attribute = attributes[1];
            Assert.IsInstanceOf<MetadataTypeAttribute>(attribute);
            var metadataAttribute = (MetadataTypeAttribute) attribute;
            Assert.IsTrue(typeof (TestModelWithPropertyBag) == metadataAttribute.MetadataClassType);
        }