private ProxyModel GetModel(ClassDeclarationSyntax classSyntax, Compilation compilation) { var root = classSyntax.GetCompilationUnit(); var classSemanticModel = compilation.GetSemanticModel(classSyntax.SyntaxTree); var classSymbol = classSemanticModel.GetDeclaredSymbol(classSyntax); var proxyModel = new ProxyModel { ClassBase = classSyntax.GetClassName(), ClassName = $"{classSyntax.GetClassName()}{ProxyAttribute.Name}", ClassModifier = classSyntax.GetClassModifier(), Usings = root.GetUsings(), Namespace = root.GetNamespace(), Commands = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Command)), Queries = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Query)), Events = GetMethodWithParameter(classSyntax, classSemanticModel, nameof(Event)), ConstructorParameters = GetConstructor(classSymbol), InjectedProperties = GetInjectedProperties(classSymbol), Subscriptions = GetSubscriptions(classSyntax, classSemanticModel) }; return(proxyModel); }
private async Task <Solution> ReverseTypeNameAsync(Document document, MethodDeclarationSyntax methDecl, ClassDeclarationSyntax classDecl, CancellationToken cancellationToken) { var solution = document.Project.Solution; /* Trouver le projet de test. */ var testProjetName = document.Project.Name + ".Test"; var testProject = solution.Projects.FirstOrDefault(x => x.Name == testProjetName); if (testProject == null) { return(solution); } /* Dossier du document. */ var classTestDir = classDecl.GetClassName() + "Test"; /* Nom du document. */ var methTestFile = methDecl.GetMethodName() + "Test"; /* Contenu du document. */ const string content = "namespace TestUnitaire {}"; // TODO /* Création du document. */ var newDoc = testProject.AddDocument(methTestFile, content, new List <string> { classTestDir }); /* Retourne la solution modifiée. */ return(newDoc.Project.Solution); }
public static AlpakaEventModel From(ClassDeclarationSyntax classSyntax, Compilation compilation) { var root = classSyntax.GetCompilationUnit(); var classSemanticModel = compilation.GetSemanticModel(classSyntax.SyntaxTree); var classSymbol = classSemanticModel.GetDeclaredSymbol(classSyntax); return(new AlpakaEventModel() { EventName = $"{classSyntax.GetClassName()}", Usings = root.GetUsings(), Namespace = root.GetNamespace(), }); }
private Solution AddUnitTestAsync(Document document, MethodDeclarationSyntax methDecl, IMethodSymbol methSymbol, ClassDeclarationSyntax classDecl, DalTestStrategy strategy, CancellationToken cancellationToken) { var solution = document.Project.Solution; /* Trouver le projet de test. */ var testProjetName = document.Project.Name + ".Test"; var testProject = solution.Projects.FirstOrDefault(x => x.Name == testProjetName); if (testProject == null) { return(solution); } /* Dossier du document. */ var classTestDir = classDecl.GetClassName() + "Test"; /* Nom du document. */ var methTestFile = methSymbol.Name + "Test"; /* Contenu du document. */ var classSymbol = methSymbol.ContainingType; var applicationName = classSymbol.ContainingAssembly.GetApplicationName(); DalTestTemplate template = new DalTestTemplate(new DalMethodItem { DalClassName = classSymbol.Name, DalMethodName = methSymbol.Name, DalAssemblyName = classSymbol.ContainingAssembly.Name, DalNamespace = classDecl.GetNameSpaceFullName(), Params = methSymbol.Parameters.Select(x => GetParameter(x)).ToList(), SpecificUsings = new List <string> { $"{applicationName}.TestUtils.Templates", "Kinetix.TestUtils.Helpers" } }); string content = template.Render(strategy); /* Création du document. */ var newDoc = testProject.AddDocument(methTestFile, content, new List <string> { classTestDir }); /* Retourne la solution modifiée. */ return(newDoc.Project.Solution); }