private MemberDeclarationSyntax GenerateHelperClassContents(HelperDefinition helperDefinition) { return(SyntaxFactory.ClassDeclaration(helperDefinition.Name) .WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword))) .WithBaseList(SyntaxFactory.BaseList(SyntaxFactory.SeparatedList <BaseTypeSyntax>(new [] { SyntaxFactory.SimpleBaseType(SyntaxFactory.ParseTypeName("DotVVM.Framework.Testing.SeleniumHelpers.SeleniumHelperBase")) }))) .WithMembers(SyntaxFactory.List(helperDefinition.Members)) .AddMembers( SyntaxFactory.ConstructorDeclaration(helperDefinition.Name) .WithParameterList(SyntaxFactory.ParameterList(SyntaxFactory.SeparatedList(new [] { SyntaxFactory.Parameter(SyntaxFactory.Identifier("webDriver")) .WithType(SyntaxFactory.ParseTypeName("OpenQA.Selenium.IWebDriver")), SyntaxFactory.Parameter(SyntaxFactory.Identifier("parentHelper")) .WithType(SyntaxFactory.ParseTypeName("DotVVM.Framework.Testing.SeleniumHelpers.SeleniumHelperBase")) .WithDefault(SyntaxFactory.EqualsValueClause(SyntaxFactory.IdentifierName("null"))), SyntaxFactory.Parameter(SyntaxFactory.Identifier("selectorPrefix")) .WithType(SyntaxFactory.ParseTypeName("System.String")) .WithDefault(SyntaxFactory.EqualsValueClause(SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal("")))) }))) .WithInitializer(SyntaxFactory.ConstructorInitializer(SyntaxKind.BaseConstructorInitializer, SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList(new [] { SyntaxFactory.Argument(SyntaxFactory.IdentifierName("webDriver")), SyntaxFactory.Argument(SyntaxFactory.IdentifierName("parentHelper")), SyntaxFactory.Argument(SyntaxFactory.IdentifierName("selectorPrefix")) })))) .WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword))) .WithBody(SyntaxFactory.Block(helperDefinition.ConstructorStatements)) ) .AddMembers( helperDefinition.Children.Select(GenerateHelperClassContents).ToArray() )); }
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 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(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)); } }
private void GenerateHelperClass(SeleniumGeneratorConfiguration seleniumConfiguration, HelperDefinition helper) { var tree = CSharpSyntaxTree.Create( SyntaxFactory.CompilationUnit().WithMembers(SyntaxFactory.List(new MemberDeclarationSyntax[] { SyntaxFactory.NamespaceDeclaration(SyntaxFactory.ParseName(seleniumConfiguration.TargetNamespace)) .WithMembers(SyntaxFactory.List(new MemberDeclarationSyntax[] { GenerateHelperClassContents(helper) })) })) .NormalizeWhitespace() ); File.WriteAllText(seleniumConfiguration.HelperFileFullPath, tree.ToString(), Encoding.UTF8); }
private void UpdateMarkupFile(SeleniumGeneratorConfiguration seleniumConfiguration, HelperDefinition helper) { var sb = new StringBuilder(File.ReadAllText(seleniumConfiguration.ViewFullPath, Encoding.UTF8)); foreach (var modification in helper.MarkupFileModifications.OrderByDescending(m => m.Position)) { modification.Apply(sb); } File.WriteAllText(seleniumConfiguration.ViewFullPath, sb.ToString(), Encoding.UTF8); }
public void PushScope(HelperDefinition definition) { HelperDefinitionsStack.Push(definition); }