示例#1
0
 private ModelDecorators.WithDecorators <StockItem, IModelDecorators <StockItem, Decorators> > DefineDecorationsOnStockItem()
 {
     return(ModelDecorators.Init <StockItem, Decorators>()
            .OnModelIfThenElse(s => s.Weight > Ship.MaxDisembarkWeight,
                               attr => attr.Enabled = false,
                               attr => attr.Enabled = true));
 }
示例#2
0
        public void InitClassWithRecusriveMembers_WithModelDecorators_ReturnDecoratorsForClassAndProperties()
        {
            var decorationDefinition = ModelDecorators.Init <RecursiveClassPrincipal, Decorators>();
            var modelDecorated       = decorationDefinition(recursiveClassPrincipal);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 3);
        }
示例#3
0
        public void InitClassWithDynamicProeprty_WithModelDecorators_ReturnDecoratorsNotForDynamicProperty()
        {
            var decorationDefinition = ModelDecorators.Init <ClassWithDynamicProperty, Decorators>();
            var modelDecorated       = decorationDefinition(classWithDynamicProperty);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 8);
        }
示例#4
0
        public void InitCollection_WithModelDecorators_ReturnDecoratorsForClassAndPropertiesCollectionsExcluded()
        {
            var decorationDefinition = ModelDecorators.Init <ClassWithCollection, Decorators>();
            var modelDecorated       = decorationDefinition(classWithCollection);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 1);
            Assert.Catch <InvalidOperationException>(() => modelDecorated.GetFor(m => m.SimpleClasses));
        }
示例#5
0
        public void InitClassDynamic_WithModelDecoratorsFiltered_ReturnDecoratorsForClassAndPropertiesFiltered()
        {
            var includeFilter        = new FilterSetting(true);
            var decorationDefinition = ModelDecorators.Init <ClassWithDynamicProperty, Decorators>(initDecorators, includeFilter);
            var modelDecorated       = decorationDefinition(classWithDynamicProperty);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 0);
        }
示例#6
0
        public void InitClassWithMembers_WithModelDecoratorsFiltered_ReturnDecoratorsForClassAndPropertiesFiltered()
        {
            var excludeFilter        = new FilterSetting(false);
            var decorationDefinition = ModelDecorators.Init <ClassWithMember, Decorators>(initDecorators, excludeFilter);
            var modelDecorated       = decorationDefinition(classWithMember);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 1);
            Assert.IsTrue(modelDecorated.PropertyDecorators.ContainsKey("CreatedOn"));
        }
示例#7
0
        public void InitSimpleClass_WithModelDecoratorsFilteredOut_ReturnDecoratorsForClassAndPropertiesFiltered()
        {
            var excludeFilter        = new FilterSetting(true);
            var decorationDefinition = ModelDecorators.Init <SimpleClass, Decorators>(initDecorators, excludeFilter);
            var modelDecorated       = decorationDefinition(simpleClass);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 1);
            Assert.IsTrue(modelDecorated.PropertyDecorators.ContainsKey("Age"));
        }
示例#8
0
        public void InitSimple_WithModelDecorators_ReturnDecoratorsForClassAndProperties()
        {
            var decorationDefinition = ModelDecorators.Init <SimpleClass, Decorators>();
            var modelDecorated       = decorationDefinition(simpleClass);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 5);
            Assert.IsTrue(modelDecorated.PropertyDecorators["Name"].Enabled == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators["Age"].Enabled == false);
            Assert.IsFalse(modelDecorated.GetFor(p => p.Name).Visible);
            modelDecorated.GetFor(p => p.Name).Visible = true;
            Assert.IsTrue(modelDecorated.GetFor(p => p.Name).Visible);
        }
示例#9
0
        public void InitClassWithMember_WithModelDecorators_ReturnDecoratorsForClassAndPropertiesDescendantsIncluded()
        {
            var decorationDefinition = ModelDecorators.Init <ClassWithMember, Decorators>();
            var modelDecorated       = decorationDefinition(classWithMember);

            Assert.IsTrue(modelDecorated.Decorators.Enabled == false);
            Assert.IsTrue(modelDecorated.Decorators.Visible == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators.Count == 7);
            Assert.IsTrue(modelDecorated.PropertyDecorators["CreatedOn"].Enabled == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators["SimpleClass"].Enabled == false);
            Assert.IsTrue(modelDecorated.PropertyDecorators["SimpleClass.Name"].Enabled == false);
            Assert.IsFalse(modelDecorated.GetFor(p => p.SimpleClass.Name).Visible);
            modelDecorated.GetFor(p => p.SimpleClass.Name).Visible = true;
            Assert.IsTrue(modelDecorated.GetFor(p => p.SimpleClass.Name).Visible);
        }
 public void Setup()
 {
     simpleClass = new SimpleClass()
     {
         Age = 62, Name = "Me"
     };
     classWithMember = new ClassWithMember()
     {
         SimpleClass = simpleClass, CreatedOn = DateTime.Now
     };
     classWithCollection = new ClassWithCollection()
     {
         Id = Guid.NewGuid(), SimpleClasses = new List <SimpleClass>(new[] { simpleClass })
     };
     decorationDefinition           = ModelDecorators.Init <ClassWithMember, Decorators>();
     decorationCollectionDefinition = ModelDecorators.Init <ClassWithCollection, Decorators>();
 }
示例#11
0
        private void DefineDecorationsOnShip()
        {
            modelDecorationDefinition = ModelDecorators.Init <Ship, ExtendedDecorators>()
                                        .OnModelIfThenElse(WhenThereIsStock(), EnableDisembark(), DisableDisembark())
                                        .OnModelPropIfThenElse(s => s.NextInRowToApproveDisembark() is Captain,
                                                               s => s.Captain,
                                                               prp => prp.Class = classShow,
                                                               prp => prp.Class = classHide)
                                        .OnModelPropIfThenElse(s => s.Status == DisembarkStatus.WaitOnSteerman,
                                                               s => s.Steersman,
                                                               prp => prp.Class = classShow,
                                                               prp => prp.Class = classHide)
                                        .OnModelPropWhen(s =>
                                                         s.Status >= DisembarkStatus.DisembarkCanStart &&
                                                         s.Status < DisembarkStatus.DisembarkFinished
                                                         , s => s.Status
                                                         , dec => dec.Visible = true);

            modelDecorated = modelDecorationDefinition(ship);
        }