Beispiel #1
0
        private void ValidatePeekTest(string databaseName, string objectName, string objectType, string schemaName, bool shouldReturnValidResult)
        {
            // Get live connectionInfo and serverConnection
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition(databaseName);
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);

            PeekDefinition.ScriptGetter sqlScriptGetter = null;
            switch (objectType)
            {
            case SynonymTypeName:
                sqlScriptGetter = peekDefinition.GetSynonymScripts;
                break;

            case ScalarValuedFunctionTypeName:
                sqlScriptGetter = peekDefinition.GetScalarValuedFunctionScripts;
                objectType      = "Function";
                break;

            case TableValuedFunctionTypeName:
                sqlScriptGetter = peekDefinition.GetTableValuedFunctionScripts;
                objectType      = "Function";
                break;

            case TableTypeName:
                sqlScriptGetter = peekDefinition.GetTableScripts;
                break;

            case ViewTypeName:
                sqlScriptGetter = peekDefinition.GetViewScripts;
                break;

            case StoredProcedureTypeName:
                sqlScriptGetter = peekDefinition.GetStoredProcedureScripts;
                break;

            case UserDefinedDataTypeTypeName:
                sqlScriptGetter = peekDefinition.GetUserDefinedDataTypeScripts;
                objectType      = "Type";
                break;

            case UserDefinedTableTypeTypeName:
                sqlScriptGetter = peekDefinition.GetUserDefinedTableTypeScripts;
                objectType      = "Type";
                break;
            }

            Location[] locations = peekDefinition.GetSqlObjectDefinition(sqlScriptGetter, objectName, schemaName, objectType);
            if (shouldReturnValidResult)
            {
                Assert.NotNull(locations);
                Cleanup(locations);
            }
            else
            {
                Assert.Null(locations);
            }
        }
        public void DeletePeekDefinitionScriptsTest()
        {
            PeekDefinition peekDefinition  = new PeekDefinition(null, null);
            var            languageService = LanguageService.Instance;

            Assert.True(Directory.Exists(FileUtilities.PeekDefinitionTempFolder));
            languageService.DeletePeekDefinitionScripts();
            Assert.False(Directory.Exists(FileUtilities.PeekDefinitionTempFolder));
        }
        public void GetDefinitionUsingDeclarationItemWithoutConnectionTest()
        {
            PeekDefinition   peekDefinition = new PeekDefinition(null, null);
            string           objectName     = "tableName";
            string           fullObjectName = "master.dbo.tableName";
            DefinitionResult result         = peekDefinition.GetDefinitionUsingDeclarationType(DeclarationType.Table, fullObjectName, objectName, null);

            Assert.NotNull(result);
            Assert.True(result.IsErrorResult);
        }
        public void GetDefinitionUsingQuickInfoWithoutConnectionTest()
        {
            PeekDefinition   peekDefinition = new PeekDefinition(null, null);
            string           objectName     = "tableName";
            string           quickInfoText  = "table master.dbo.tableName";
            DefinitionResult result         = peekDefinition.GetDefinitionUsingQuickInfoText(quickInfoText, objectName, null);

            Assert.NotNull(result);
            Assert.True(result.IsErrorResult);
        }
        public void GetTokenTypeFromQuickInfoWithIncorrectObjectNameTest()
        {
            PeekDefinition peekDefinition = new PeekDefinition(null, null);
            string         objectName     = "test";
            string         quickInfoText  = "table master.dbo.tableName";
            string         result         = peekDefinition.GetTokenTypeFromQuickInfo(quickInfoText, objectName, StringComparison.Ordinal);
            string         expected       = null;

            Assert.Equal(expected, result);
        }
        public void GetTokenTypeFromQuickInfoWithValidStringsandIgnoreCaseTest()
        {
            PeekDefinition peekDefinition = new PeekDefinition(null, null);
            string         objectName     = "tablename";
            string         quickInfoText  = "table master.dbo.tableName";
            string         result         = peekDefinition.GetTokenTypeFromQuickInfo(quickInfoText, objectName, StringComparison.OrdinalIgnoreCase);
            string         expected       = "table";

            Assert.Equal(expected, result);
        }
        public void GetFullObjectNameFromQuickInfoWithValidStringsTest()
        {
            PeekDefinition peekDefinition = new PeekDefinition(null, null);
            string         objectName     = "testTable";
            string         quickInfoText  = "table master.dbo.testTable";
            string         result         = peekDefinition.GetFullObjectNameFromQuickInfo(quickInfoText, objectName, StringComparison.Ordinal);
            string         expected       = "master.dbo.testTable";

            Assert.Equal(expected, result);
        }
        public void DeletePeekDefinitionScriptsWhenFolderDoesNotExistTest()
        {
            var            languageService = LanguageService.Instance;
            PeekDefinition peekDefinition  = new PeekDefinition(null, null);

            FileUtilities.SafeDirectoryDelete(FileUtilities.PeekDefinitionTempFolder, true);
            Assert.False(Directory.Exists(FileUtilities.PeekDefinitionTempFolder));
            // Expected not to throw any exception
            languageService.DeletePeekDefinitionScripts();
        }
Beispiel #9
0
        public void GetSchemaFromDatabaseQualifiedNameWithInvalidNameTest()
        {
            PeekDefinition peekDefinition             = new PeekDefinition(null, null);
            string         validDatabaseQualifiedName = "x.y.z";
            string         objectName         = "test_table";
            string         expectedSchemaName = "dbo";

            string actualSchemaName = peekDefinition.GetSchemaFromDatabaseQualifiedName(validDatabaseQualifiedName, objectName);

            Assert.Equal(actualSchemaName, expectedSchemaName);
        }
Beispiel #10
0
        public void GetLocationFromFileForValidFilePathTest()
        {
            String         filePath       = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "C:\\test\\script.sql" : "/test/script.sql";
            PeekDefinition peekDefinition = new PeekDefinition(null, null);

            Location[] locations = peekDefinition.GetLocationFromFile(filePath, 0);

            String expectedFilePath = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "file:///C:/test/script.sql" : "file:/test/script.sql";

            Assert.Equal(locations[0].Uri, expectedFilePath);
        }
Beispiel #11
0
        public void GetDefinitionUsingDeclarationTypeWithNonexistentObjectTest()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "doesNotExist";
            string         schemaName     = "sys";

            DefinitionResult result = peekDefinition.GetDefinitionUsingDeclarationType(DeclarationType.View, "master.sys.objects", objectName, schemaName);

            Assert.NotNull(result);
            Assert.True(result.IsErrorResult);
        }
Beispiel #12
0
        public void GetStoredProcedureDefinitionFailureTest()
        {
            // Get live connectionInfo and serverConnection
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "SP2";
            string         schemaName     = "dbo";
            string         objectType     = "PROCEDURE";

            Location[] locations = peekDefinition.GetSqlObjectDefinition(peekDefinition.GetStoredProcedureScripts, objectName, schemaName, objectType);
            Assert.Null(locations);
        }
Beispiel #13
0
        public void GetViewDefinitionInvalidObjectTest()
        {
            // Get live connectionInfo and serverConnection
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "objects";
            string         schemaName     = null;
            string         objectType     = "VIEW";

            Location[] locations = peekDefinition.GetSqlObjectDefinition(peekDefinition.GetViewScripts, objectName, schemaName, objectType);
            Assert.Null(locations);
        }
Beispiel #14
0
        public void GetValidViewDefinitionTest()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "objects";
            string         schemaName     = "sys";
            string         objectType     = "VIEW";

            Location[] locations = peekDefinition.GetSqlObjectDefinition(peekDefinition.GetViewScripts, objectName, schemaName, objectType);
            Assert.NotNull(locations);
            Cleanup(locations);
        }
Beispiel #15
0
        public void GetDatabaseWithNoQueryConnectionTest()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);
            DbConnection     connection;

            //Check if query connection is present
            Assert.False(connInfo.TryGetConnection(ConnectionType.Query, out connection));

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);

            //Check if database name is the default server connection database name
            Assert.Equal(peekDefinition.Database.Name, "master");
        }
Beispiel #16
0
        public void GetTableDefinitionInvalidObjectTest()
        {
            // Get live connectionInfo and serverConnection
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "test_invalid";
            string         schemaName     = null;
            string         objectType     = "TABLE";

            // Get locations for invalid table object
            Location[] locations = peekDefinition.GetSqlObjectDefinition(peekDefinition.GetTableScripts, objectName, schemaName, objectType);
            Assert.Null(locations);
        }
Beispiel #17
0
        public void GetDefinitionWithNoResultsFoundError()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "from";

            List <Declaration> declarations = new List <Declaration>();
            DefinitionResult   result       = peekDefinition.GetScript(declarations, objectName, null);

            Assert.NotNull(result);
            Assert.True(result.IsErrorResult);
            Assert.Equal(SR.PeekDefinitionNoResultsError, result.Message);
        }
Beispiel #18
0
        public void GetStoredProcedureDefinitionWithoutSchemaTest()
        {
            // Get live connectionInfo and serverConnection
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "sp_MSrepl_startup";
            string         schemaName     = null;
            string         objectType     = "PROCEDURE";

            Location[] locations = peekDefinition.GetSqlObjectDefinition(peekDefinition.GetStoredProcedureScripts, objectName, schemaName, objectType);
            Assert.NotNull(locations);
            Cleanup(locations);
        }
Beispiel #19
0
        public async Task GetUnsupportedDefinitionErrorTest()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "objects";
            string         schemaName     = "sys";
            // When I try to get definition for 'Collation'
            DefinitionResult result = peekDefinition.GetDefinitionUsingDeclarationType(DeclarationType.Collation, "master.sys.objects", objectName, schemaName);

            // Then I expect non null result with error flag set
            Assert.NotNull(result);
            Assert.True(result.IsErrorResult);
        }
Beispiel #20
0
        public void GetDefinitionUsingQuickInfoTextWithValidObjectTest()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "objects";
            string         schemaName     = "sys";
            string         quickInfoText  = "view master.sys.objects";

            DefinitionResult result = peekDefinition.GetDefinitionUsingQuickInfoText(quickInfoText, objectName, schemaName);

            Assert.NotNull(result);
            Assert.NotNull(result.Locations);
            Assert.False(result.IsErrorResult);
            Cleanup(result.Locations);
        }
Beispiel #21
0
        public void GetTableDefinitionWithSchemaTest()
        {
            // Get live connectionInfo and serverConnection
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "spt_monitor";

            string schemaName = "dbo";
            string objectType = "TABLE";

            // Get locations for valid table object with schema name
            Location[] locations = peekDefinition.GetSqlObjectDefinition(peekDefinition.GetTableScripts, objectName, schemaName, objectType);
            Assert.NotNull(locations);
            Cleanup(locations);
        }
Beispiel #22
0
        public void GetDefinitionWithNoResultsFoundError()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);
            string         objectName     = "from";
            Position       position       = new Position()
            {
                Line      = 1,
                Character = 14
            };
            ScriptParseInfo scriptParseInfo = new ScriptParseInfo()
            {
                IsConnected = true
            };
            Mock <IBindingContext> bindingContextMock = new Mock <IBindingContext>();
            DefinitionResult       result             = peekDefinition.GetScript(scriptParseInfo.ParseResult, position, bindingContextMock.Object.MetadataDisplayInfoProvider, objectName, null);

            Assert.NotNull(result);
            Assert.True(result.IsErrorResult);
            Assert.Equal(SR.PeekDefinitionNoResultsError, result.Message);
        }
Beispiel #23
0
        public void GetDatabaseWithQueryConnectionTest()
        {
            ConnectionInfo   connInfo         = TestObjects.InitLiveConnectionInfoForDefinition();
            ServerConnection serverConnection = TestObjects.InitLiveServerConnectionForDefinition(connInfo);
            //Mock a query connection object
            var mockQueryConnection = new Mock <DbConnection> {
                CallBase = true
            };

            mockQueryConnection.SetupGet(x => x.Database).Returns("testdb");
            connInfo.ConnectionTypeToConnectionMap[ConnectionType.Query] = mockQueryConnection.Object;
            DbConnection connection;

            //Check if query connection is present
            Assert.True(connInfo.TryGetConnection(ConnectionType.Query, out connection));

            PeekDefinition peekDefinition = new PeekDefinition(serverConnection, connInfo);

            //Check if database name is the database name in the query connection
            Assert.Equal(peekDefinition.Database.Name, "testdb");

            // remove mock from ConnectionInfo
            Assert.True(connInfo.ConnectionTypeToConnectionMap.TryRemove(ConnectionType.Query, out connection));
        }