mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-14 01:25:40 -05:00
* init * More fixes * moving filters from contracts to core OE classes * Fixing some tests * More fixes and added doc comments * Fixing tests * Quick refactoring * more cleanups * cleanup * Adding stateless OE * Adding null checks * Making group by schema independent of settings * Fixing tests * Removing node info from core oe code * Fixing tests and moving OE code to its own project * moving oe to own project * Removing changes to Kusto * Removing azure access token from service layer * Fixing project description and title * Fixing file name typo * Removing unused strings from service layer * Fixing localized strings in tests Adding comments to stateless OE * Fixing stuff * Update src/Microsoft.SqlTools.SqlCore/Microsoft.SqlTools.SqlCore.csproj Co-authored-by: Charles Gagnon <chgagnon@microsoft.com> * Fixing project nesting * Fixing more stuff and removing OE class * Cleanup * Code cleanup * fixing oe service provider * Fixing test name * Remove using * Update src/Microsoft.SqlTools.SqlCore/ObjectExplorer/SmoModel/SmoQueryContext.cs Co-authored-by: Charles Gagnon <chgagnon@microsoft.com> * Fixing syntax error * Adding project to locproject * Fixing stuff * Fixing errors * sorting usings --------- Co-authored-by: Charles Gagnon <chgagnon@microsoft.com>
180 lines
9.8 KiB
C#
180 lines
9.8 KiB
C#
//
|
|
// Copyright (c) Microsoft. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
//
|
|
|
|
#nullable disable
|
|
|
|
using System.Collections.Generic;
|
|
using Microsoft.SqlTools.ServiceLayer.ObjectExplorer;
|
|
using Microsoft.SqlTools.SqlCore.ObjectExplorer.Nodes;
|
|
using Microsoft.SqlTools.SqlCore.ObjectExplorer.SmoModel;
|
|
using NUnit.Framework;
|
|
|
|
namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer
|
|
{
|
|
|
|
public class NodePathGeneratorTests
|
|
{
|
|
private ObjectExplorerService.ObjectExplorerSession serverSession;
|
|
private ObjectExplorerService.ObjectExplorerSession databaseSession;
|
|
private const string serverName = "testServer";
|
|
private const string databaseName = "testDatabase";
|
|
|
|
public NodePathGeneratorTests()
|
|
{
|
|
var serverRoot = new TreeNode
|
|
{
|
|
NodeType = "Server",
|
|
NodeValue = serverName
|
|
};
|
|
|
|
serverSession = new ObjectExplorerService.ObjectExplorerSession("serverUri", serverRoot);
|
|
|
|
var databaseRoot = new TreeNode
|
|
{
|
|
NodeType = "Database",
|
|
NodeValue = databaseName,
|
|
Parent = serverRoot
|
|
};
|
|
|
|
databaseSession = new ObjectExplorerService.ObjectExplorerSession("databaseUri", databaseRoot);
|
|
}
|
|
|
|
[Test]
|
|
public void FindCorrectPathsForTableWithServerRoot()
|
|
{
|
|
var paths = NodePathGenerator.FindNodePaths(serverSession, "Table", "testSchema", "testTable", databaseName);
|
|
var expectedPaths = new List<string>
|
|
{
|
|
"testServer/Databases/testDatabase/Tables/testSchema.testTable",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/testSchema.testTable",
|
|
"testServer/Databases/testDatabase/Tables/System Tables/testSchema.testTable",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/System Tables/testSchema.testTable",
|
|
"testServer/Databases/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable"
|
|
};
|
|
|
|
Assert.AreEqual(expectedPaths.Count, paths.Count);
|
|
foreach (var expectedPath in expectedPaths)
|
|
{
|
|
Assert.True(paths.Contains(expectedPath));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void FindCorrectPathsForTableWithDatabaseRoot()
|
|
{
|
|
var paths = NodePathGenerator.FindNodePaths(databaseSession, "Table", "testSchema", "testTable", string.Empty);
|
|
var expectedPaths = new List<string>
|
|
{
|
|
"testServer/testDatabase/Tables/testSchema.testTable",
|
|
"testServer/testDatabase/Tables/System Tables/testSchema.testTable",
|
|
"testServer/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable"
|
|
};
|
|
|
|
Assert.AreEqual(expectedPaths.Count, paths.Count);
|
|
foreach (var expectedPath in expectedPaths)
|
|
{
|
|
Assert.True(paths.Contains(expectedPath));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void FindCorrectPathsForColumnWithServerRoot()
|
|
{
|
|
var paths = NodePathGenerator.FindNodePaths(serverSession, "Column", null, "testColumn", databaseName, new List<string> { "testSchema.testTable" });
|
|
var expectedPaths = new List<string>
|
|
{
|
|
"testServer/Databases/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/System Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Views/System Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Views/Dropped Ledger Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/testDatabase/Views/Dropped Ledger Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Views/Dropped Ledger Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/Databases/System Databases/testDatabase/Views/Dropped Ledger Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn"
|
|
};
|
|
|
|
Assert.AreEqual(expectedPaths.Count, paths.Count);
|
|
foreach (var expectedPath in expectedPaths)
|
|
{
|
|
Assert.True(paths.Contains(expectedPath));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void FindCorrectPathsForColumnWithDatabaseRoot()
|
|
{
|
|
var paths = NodePathGenerator.FindNodePaths(databaseSession, "Column", null, "testColumn", databaseName, new List<string> { "testSchema.testTable" });
|
|
var expectedPaths = new List<string>
|
|
{
|
|
"testServer/testDatabase/Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/testDatabase/Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/testDatabase/Tables/System Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/testDatabase/Tables/System Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable/Columns/testColumn",
|
|
"testServer/testDatabase/Tables/Dropped Ledger Tables/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/testDatabase/Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/testDatabase/Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/testDatabase/Views/System Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/testDatabase/Views/System Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn",
|
|
"testServer/testDatabase/Views/Dropped Ledger Views/testSchema.testTable/Columns/testColumn",
|
|
"testServer/testDatabase/Views/Dropped Ledger Views/testSchema.testTable/Columns/Dropped Ledger Columns/testColumn"
|
|
};
|
|
|
|
Assert.AreEqual(expectedPaths.Count, paths.Count);
|
|
foreach (var expectedPath in expectedPaths)
|
|
{
|
|
Assert.True(paths.Contains(expectedPath));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void FindCorrectPathsForDatabase()
|
|
{
|
|
var paths = NodePathGenerator.FindNodePaths(serverSession, "Database", null, databaseName, string.Empty);
|
|
var expectedPaths = new List<string>
|
|
{
|
|
"testServer/Databases/testDatabase",
|
|
"testServer/Databases/System Databases/testDatabase"
|
|
};
|
|
|
|
Assert.AreEqual(expectedPaths.Count, paths.Count);
|
|
foreach (var expectedPath in expectedPaths)
|
|
{
|
|
Assert.True(paths.Contains(expectedPath));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void FindPathForInvalidTypeReturnsEmpty()
|
|
{
|
|
var serverPaths = NodePathGenerator.FindNodePaths(serverSession, "WrongType", "testSchema", "testTable", databaseName);
|
|
Assert.AreEqual(0, serverPaths.Count);
|
|
}
|
|
|
|
[Test]
|
|
public void FindPathMissingParentReturnsEmpty()
|
|
{
|
|
var serverPaths = NodePathGenerator.FindNodePaths(serverSession, "Column", "testSchema", "testColumn", databaseName);
|
|
Assert.AreEqual(0, serverPaths.Count);
|
|
}
|
|
}
|
|
} |