Beispiel #1
0
        protected override void AddDeclarationsCore(HelperDefinition helper, SeleniumGeneratorContext context)
        {
            var type = "DotVVM.Framework.Testing.SeleniumHelpers.Proxies.ButtonProxy";

            helper.Members.Add(GeneratePropertyForProxy(context, type));
            helper.ConstructorStatements.Add(GenerateInitializerForProxy(context, context.UniqueName, type));
        }
        public override void VisitControl(ResolvedControl control)
        {
            var helperDefinition = HelperDefinitionsStack.Peek();

            var dataContextNameSet = false;

            if (control.TryGetProperty(DotvvmBindableObject.DataContextProperty, out var property))
            {
                if (property is ResolvedPropertyBinding dataContextProperty)
                {
                    var dataContextName = dataContextProperty.Binding.Value;
                    helperDefinition.DataContextPrefixes.Add(dataContextName);
                    dataContextNameSet = true;
                }
            }

            var controlType = control.Metadata.Type;

            if (controlType == typeof(DotvvmMarkupControl))
            {
                var controlTreeRoot = seleniumGenerator.ResolveControlTree(control.Metadata.VirtualPath);

                if (controlTreeRoot != null &&
                    controlTreeRoot.Directives.TryGetValue("baseType", out var baseTypeDirectives))
                {
                    var(typeName, assemblyName) = GetSplitTypeName(baseTypeDirectives);

                    var baseType = GetControlType(typeName, assemblyName);
                    if (generators.ContainsKey(baseType))
                    {
                        controlType = baseType;
                    }
                }
            }

            if (generators.TryGetValue(controlType, out var generator))
            {
                // generate the content
                var context = new SeleniumGeneratorContext()
                {
                    Control = control,
                    ExistingUsedSelectors = helperDefinition.ExistingUsedSelectors,
                    UsedNames             = helperDefinition.UsedNames,
                    Visitor = this
                };

                if (generator.CanAddDeclarations(helperDefinition, context))
                {
                    generator.AddDeclarations(helperDefinition, context);
                    return;
                }
            }

            base.VisitControl(control);

            if (dataContextNameSet)
            {
                helperDefinition.DataContextPrefixes.RemoveAt(helperDefinition.DataContextPrefixes.Count - 1);
            }
        }
Beispiel #3
0
        public override void VisitControl(ResolvedControl control)
        {
            ISeleniumGenerator generator;

            if (generators.TryGetValue(control.Metadata.Type, out generator))
            {
                var helperDefinition = HelperDefinitionsStack.Peek();

                // generate the content
                var context = new SeleniumGeneratorContext()
                {
                    Control   = control,
                    UsedNames = helperDefinition.UsedNames,
                    Visitor   = this
                };

                if (generator.CanAddDeclarations(helperDefinition, context))
                {
                    generator.AddDeclarations(helperDefinition, context);
                    return;
                }
            }

            base.VisitControl(control);
        }
Beispiel #4
0
        protected override void AddDeclarationsCore(
            PageObjectDefinition pageObject,
            SeleniumGeneratorContext context)
        {
            const string type = "ButtonProxy";

            AddPageObjectProperties(pageObject, context, type);
        }
Beispiel #5
0
 public override bool CanAddDeclarations(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
 {
     // check if node is user control
     // todo: odstranit
     return(context.Control.DothtmlNode is DothtmlElementNode htmlNode &&
            htmlNode.TagPrefix != null &&
            htmlNode.TagPrefix != "dot");
 }
        protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            // this is generator for user control so it's using PageObject not Proxy
            // you need to create this class in your UI test project in folder PageObjects
            const string type = "PageObjects.MyControlBPageObject";

            AddControlPageObjectProperty(pageObject, context, type);
        }
Beispiel #7
0
        public override bool CanAddDeclarations(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            if (context.Control.TryGetProperty(Literal.RenderSpanElementProperty, out var setter))
            {
                if (((ResolvedPropertyValue)setter).Value as bool? == false)
                {
                    return(false);
                }
            }

            return(base.CanAddDeclarations(pageObject, context));
        }
Beispiel #8
0
        public override bool CanAddDeclarations(HelperDefinition helperDefinition, SeleniumGeneratorContext context)
        {
            IAbstractPropertySetter setter;

            if (context.Control.TryGetProperty(Literal.RenderSpanElementProperty, out setter))
            {
                if (((ResolvedPropertyValue)setter).Value as bool? == false)
                {
                    return(false);
                }
            }

            return(base.CanAddDeclarations(helperDefinition, context));
        }
        protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            if (context.Control.TryGetProperty(Repeater.ItemTemplateProperty, out var itemTemplate))
            {
                var template = (ResolvedPropertyTemplate)itemTemplate;

                // generate child helper class
                var itemHelperName = context.UniqueName + "RepeaterPageObject";
                context.Visitor.PushScope(new PageObjectDefinition {
                    Name = itemHelperName
                });
                context.Visitor.VisitPropertyTemplate(template);
                pageObject.Children.Add(context.Visitor.PopScope());

                // generate property
                const string type = "RepeaterProxy";
                AddGenericPageObjectProperties(pageObject, context, type, itemHelperName);
            }
        }
Beispiel #10
0
        protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            if (context.Control.TryGetProperty(GridViewTemplateColumn.ContentTemplateProperty, out var contentTemplate))
            {
                var template = (ResolvedPropertyTemplate)contentTemplate;

                // generate child helper class
                var itemHelperName = context.UniqueName + "GridViewTemplateColumn";
                context.Visitor.PushScope(new PageObjectDefinition {
                    Name = itemHelperName
                });
                context.Visitor.VisitPropertyTemplate(template);
                pageObject.Children.Add(context.Visitor.PopScope());

                // generate property
                pageObject.Members.Add(GeneratePropertyForProxy(context.UniqueName, itemHelperName));
                pageObject.ConstructorStatements.Add(GenerateInitializerForTemplate(context.UniqueName, itemHelperName));
            }
        }
        protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            if (context.Control.TryGetProperty(GridView.ColumnsProperty, out var columnsTemplate))
            {
                var template = (ResolvedPropertyControlCollection)columnsTemplate;

                // generate child page object class
                var itemPageObjectName = context.UniqueName + "GridViewPageObject";
                context.Visitor.PushScope(new PageObjectDefinition {
                    Name = itemPageObjectName
                });
                context.Visitor.VisitPropertyControlCollection(template);
                pageObject.Children.Add(context.Visitor.PopScope());

                // generate proxy
                const string type = "GridViewProxy";
                AddGenericPageObjectProperties(pageObject, context, type, itemPageObjectName);
            }
        }
Beispiel #12
0
        protected override void AddDeclarationsCore(HelperDefinition helper, SeleniumGeneratorContext context)
        {
            IAbstractPropertySetter itemTemplate;

            if (context.Control.TryGetProperty(Repeater.ItemTemplateProperty, out itemTemplate))
            {
                var template = (ResolvedPropertyTemplate)itemTemplate;

                // generate child helper class
                var itemHelperName = context.UniqueName + "RepeaterHelper";
                context.Visitor.PushScope(new HelperDefinition()
                {
                    Name = itemHelperName
                });
                context.Visitor.VisitPropertyTemplate(template);
                helper.Children.Add(context.Visitor.PopScope());

                // generate property
                var type = "DotVVM.Framework.Testing.SeleniumHelpers.Proxies.RepeaterProxy";
                helper.Members.Add(GeneratePropertyForProxy(context, type, itemHelperName));
                helper.ConstructorStatements.Add(GenerateInitializerForProxy(context, context.UniqueName, type, itemHelperName));
            }
        }
Beispiel #13
0
        protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            var type = $"{context.UniqueName}PageObject";

            AddControlPageObjectProperty(pageObject, context, type);
        }
 protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
 {
     throw new System.NotImplementedException();
 }