public async Task ExtractsORMModelTree_When_MethodHasADbAccessingMethodCallStatement() { //Arrange var solGen = new RoslynComplexSolutionGenerator(); var solution = solGen.GetRoslynSolution(); SyntaxNode rootNodeCustomerRepository = await solGen.GetRootNodeForCustomerRepositoryClassDocument(); IEnumerable <MethodDeclarationSyntax> methodDeclarations = rootNodeCustomerRepository.DescendantNodes().OfType <MethodDeclarationSyntax>(); SemanticModel model = await solGen.GetSemanticModelForCustomerRepositoryClass(); await ExtractEntityDeclarations(solution); var dbQueryExtractor = new LINQToSQLDatabaseQueryExtractor(model, dbEntityDeclarations); dbQueryExtractor.Visit(rootNodeCustomerRepository); var databaseQueries = dbQueryExtractor.DatabaseQueries; target = new RoslynORMModelTreeExtractor(databaseQueries); //Act ORMModelTree result = target.Extract(methodDeclarations.First()); //Assert Assert.IsTrue(result.RootNode.Model is MethodDeclaration); Assert.IsTrue((result.RootNode as MethodDeclaration).MethodName == "GetCustomer"); Assert.IsTrue(result.RootNode.ChildNodes[0] is DatabaseAccessingMethodCallStatement <LINQToSQL>); }
public async Task DetectsDatabaseEntityDeclarations_When_RoslynComplexSolutionIsUsed() { //Arrange var solGen = new RoslynComplexSolutionGenerator(); var solution = solGen.GetRoslynSolution(); //ToDo: change to use TargetBuilder Context <LINQToSQL> context = new ContextStub <LINQToSQL>(); target = new DatabaseEntityDeclarationExtractor(context); var progressIndicator = new ProgressStub(); //Act await target.FindDatabaseEntityDeclarationsAsync(solution, progressIndicator); var result = target.DatabaseEntityDeclarations; //Assert Assert.IsTrue(result.Count() == 3); Assert.IsTrue(result.ToList().Exists(x => x.Name == "Customer")); Assert.IsTrue(result.ToList().Exists(x => x.Name == "Order")); Assert.IsTrue(result.ToList().Exists(x => x.Name == "OrderItem")); }