@@ -464,79 +464,83 @@ BEGIN
464464
465465END;
466466GO
467- CREATE PROCEDURE FakeFunctionTests.[test can fake Inline table function using a temp table as fake data source]
467+ CREATE PROCEDURE FakeFunctionTests.[test can fake Inline table function using a table as fake data source]
468468AS
469469BEGIN
470470 EXEC(' CREATE FUNCTION FakeFunctionTests.AFunction() RETURNS TABLE AS RETURN (SELECT 1 AS one);' );
471471
472- CREATE TABLE # expected (a CHAR(1));
473- INSERT INTO # expected VALUES('a');
472+ CREATE TABLE FakeFunctionTests .Expected (a CHAR (1 ));
473+ INSERT INTO FakeFunctionTests .Expected VALUES (' a' );
474+ SELECT TOP(0 ) A.* INTO FakeFunctionTests .Actual FROM FakeFunctionTests .Expected A RIGHT JOIN FakeFunctionTests .Expected X ON 1 = 0 ;
474475
475- EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' #expected ' ;
476+ EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' FakeFunctionTests.Expected ' ;
476477
477- SELECT * INTO # actual FROM FakeFunctionTests.AFunction();
478+ INSERT INTO FakeFunctionTests . Actual SELECT * FROM FakeFunctionTests .AFunction ();
478479
479- EXEC tSQLt .AssertEqualsTable ' #expected ' , ' #actual ' ;
480+ EXEC tSQLt .AssertEqualsTable ' FakeFunctionTests.Expected ' , ' FakeFunctionTests.Actual ' ;
480481END;
481482GO
482- CREATE PROCEDURE FakeFunctionTests.[test can fake multi- statement table function using a temp table as fake data source]
483+ CREATE PROCEDURE FakeFunctionTests.[test can fake multi- statement table function using a table as fake data source]
483484AS
484485BEGIN
485486 EXEC(' CREATE FUNCTION FakeFunctionTests.AFunction(@a int) RETURNS @t TABLE (a int) AS BEGIN;
486487 INSERT INTO @t (a) VALUES (0) RETURN; END;' );
487488
488- CREATE TABLE # expected (a CHAR(1));
489- INSERT INTO # expected VALUES('a');
489+ CREATE TABLE FakeFunctionTests .Expected (a CHAR (1 ));
490+ INSERT INTO FakeFunctionTests .Expected VALUES (' a' );
491+ SELECT TOP(0 ) A.* INTO FakeFunctionTests .Actual FROM FakeFunctionTests .Expected A RIGHT JOIN FakeFunctionTests .Expected X ON 1 = 0 ;
490492
491- EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' #expected ' ;
493+ EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' FakeFunctionTests.Expected ' ;
492494
493- SELECT * INTO # actual FROM FakeFunctionTests.AFunction(123);
495+ INSERT INTO FakeFunctionTests . Actual SELECT * FROM FakeFunctionTests .AFunction (123 );
494496
495- EXEC tSQLt .AssertEqualsTable ' #expected ' , ' #actual ' ;
497+ EXEC tSQLt .AssertEqualsTable ' FakeFunctionTests.Expected ' , ' FakeFunctionTests.Actual ' ;
496498END;
497499GO
498- CREATE PROCEDURE FakeFunctionTests.[test can fake CLR table function using a temp table as fake data source]
500+ CREATE PROCEDURE FakeFunctionTests.[test can fake CLR table function using a table as fake data source]
499501AS
500502BEGIN
503+ CREATE TABLE FakeFunctionTests .Expected (a CHAR (1 ));
504+ INSERT INTO FakeFunctionTests .Expected VALUES (' a' );
505+ SELECT TOP(0 ) A.* INTO FakeFunctionTests .Actual FROM FakeFunctionTests .Expected A RIGHT JOIN FakeFunctionTests .Expected X ON 1 = 0 ;
506+
507+ EXEC tSQLt .FakeFunction @FunctionName = ' tSQLt_testutil.AClrTvf' , @FakeDataSource = ' FakeFunctionTests.Expected' ;
501508
502- CREATE TABLE # expected (a CHAR(1));
503- INSERT INTO # expected VALUES('a');
509+ INSERT INTO FakeFunctionTests .Actual SELECT * FROM tSQLt_testutil .AClrTvf (' ' , ' ' );
504510
505- EXEC tSQLt .FakeFunction @FunctionName = ' tSQLt_testutil.AClrTvf' , @FakeDataSource = ' #expected' ;
506-
507- SELECT * INTO # actual FROM tSQLt_testutil.AClrTvf('', '');
508-
509- EXEC tSQLt .AssertEqualsTable ' #expected' , ' #actual' ;
511+ EXEC tSQLt .AssertEqualsTable ' FakeFunctionTests.Expected' , ' FakeFunctionTests.Actual' ;
510512END;
511513GO
512514CREATE PROCEDURE FakeFunctionTests.[test can fake function with one parameter]
513515AS
514516BEGIN
515517 EXEC(' CREATE FUNCTION FakeFunctionTests.AFunction(@a int) RETURNS TABLE AS RETURN (SELECT @a AS one);' );
516518
517- CREATE TABLE # expected (a INT);
518- INSERT INTO # expected VALUES(1);
519+ CREATE TABLE FakeFunctionTests .Expected (a INT );
520+ INSERT INTO FakeFunctionTests .Expected VALUES (1 );
521+ SELECT TOP(0 ) A.* INTO FakeFunctionTests .Actual FROM FakeFunctionTests .Expected A RIGHT JOIN FakeFunctionTests .Expected X ON 1 = 0 ;
519522
520- EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' #expected ' ;
523+ EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' FakeFunctionTests.Expected ' ;
521524
522- SELECT * INTO # actual FROM FakeFunctionTests.AFunction(123);
525+ INSERT INTO FakeFunctionTests . Actual SELECT * FROM FakeFunctionTests .AFunction (123 );
523526
524- EXEC tSQLt .AssertEqualsTable ' #expected ' , ' #actual ' ;
527+ EXEC tSQLt .AssertEqualsTable ' FakeFunctionTests.Expected ' , ' FakeFunctionTests.Actual ' ;
525528END;
526529GO
527530CREATE PROCEDURE FakeFunctionTests.[test can fake function with multiple parameters]
528531AS
529532BEGIN
530533 EXEC(' CREATE FUNCTION FakeFunctionTests.AFunction(@a int, @b int, @c char(1)) RETURNS TABLE AS RETURN (SELECT @a AS one);' );
531534
532- CREATE TABLE # expected (a INT);
533- INSERT INTO # expected VALUES(1);
534-
535- EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' #expected' ;
535+ CREATE TABLE FakeFunctionTests .Expected (a INT );
536+ INSERT INTO FakeFunctionTests .Expected VALUES (1 );
537+ SELECT TOP(0 ) A.* INTO FakeFunctionTests .Actual FROM FakeFunctionTests .Expected A RIGHT JOIN FakeFunctionTests .Expected X ON 1 = 0 ;
538+
539+ EXEC tSQLt .FakeFunction @FunctionName = ' FakeFunctionTests.AFunction' , @FakeDataSource = ' FakeFunctionTests.Expected' ;
536540
537- SELECT * INTO # actual FROM FakeFunctionTests.AFunction(123, 321, 'a');
541+ INSERT INTO FakeFunctionTests . Actual SELECT * FROM FakeFunctionTests .AFunction (123 , 321 , ' a' );
538542
539- EXEC tSQLt .AssertEqualsTable ' #expected ' , ' #actual ' ;
543+ EXEC tSQLt .AssertEqualsTable ' FakeFunctionTests.Expected ' , ' FakeFunctionTests.Actual ' ;
540544END;
541545GO
542546CREATE PROCEDURE FakeFunctionTests.[test can fake function with VALUES clause as fake data source]
@@ -657,21 +661,102 @@ BEGIN
657661 EXEC tSQLt .AssertEqualsTable ' FakeFunctionTests.Expected' , @NewTable;
658662END;
659663GO
660- CREATE PROCEDURE FakeFunctionTests.[test Private_PrepareFakeFunctionOutputTable creates snapshot table in passed in schema]
661- AS
662- BEGIN
663- DECLARE @NewTable NVARCHAR(MAX);
664+ -- THIS CODE FEELS UNNECESSARY
665+ -- DECLARE @newTbleName NVARCHAR(MAX);
666+ -- EXEC tSQLt.Private_PrepareFakeFunctionOutputTable @FakeDataSource, @newTbleName OUTPUT;
664667
665- EXEC(' CREATE SCHEMA [a random schema];' );
668+ -- THESE TESTS FAIL without a snapshot because they use temp tables
669+ -- CREATE PROCEDURE FakeFunctionTests.[test can fake function with multiple parameters]
670+ -- AS
671+ -- BEGIN
672+ -- EXEC('CREATE FUNCTION FakeFunctionTests.AFunction(@a int, @b int, @c char(1)) RETURNS TABLE AS RETURN (SELECT @a AS one);');
666673
667- EXEC tSQLt .Private_PrepareFakeFunctionOutputTable @FakeDataSource = ' SELECT 1013 AS a' ,@SchemaName = ' a random schema' , @NewTableName = @NewTable OUT;
674+ -- CREATE TABLE #expected (a INT);
675+ -- INSERT INTO #expected VALUES(1);
668676
669- SELECT SCHEMA_NAME( O . schema_id ) SchemaName INTO # Actual FROM sys.objects O WHERE O.object_id = OBJECT_ID(@NewTable) ;
677+ -- EXEC tSQLt.FakeFunction @FunctionName = 'FakeFunctionTests.AFunction', @FakeDataSource = '#expected' ;
670678
671- SELECT TOP(0 ) A.* INTO # Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
672- INSERT INTO # Expected
673- VALUES (' a random schema' );
679+ -- SELECT * INTO #actual FROM FakeFunctionTests.AFunction(123, 321, 'a');
680+
681+ -- EXEC tSQLt.AssertEqualsTable '#expected', '#actual';
682+ -- END;
683+ -- GO
684+ -- CREATE PROCEDURE FakeFunctionTests.[test can fake CLR table function using a temp table as fake data source]
685+ -- AS
686+ -- BEGIN
687+
688+ -- CREATE TABLE #expected (a CHAR(1));
689+ -- INSERT INTO #expected VALUES('a');
690+
691+ -- EXEC tSQLt.FakeFunction @FunctionName = 'tSQLt_testutil.AClrTvf', @FakeDataSource = '#expected';
692+
693+ -- SELECT * INTO #actual FROM tSQLt_testutil.AClrTvf('', '');
694+
695+ -- EXEC tSQLt.AssertEqualsTable '#expected', '#actual';
696+ -- END;
697+ -- GO
698+ -- CREATE PROCEDURE FakeFunctionTests.[test can fake function with one parameter]
699+ -- AS
700+ -- BEGIN
701+ -- EXEC('CREATE FUNCTION FakeFunctionTests.AFunction(@a int) RETURNS TABLE AS RETURN (SELECT @a AS one);');
702+
703+ -- CREATE TABLE #expected (a INT);
704+ -- INSERT INTO #expected VALUES(1);
705+
706+ -- EXEC tSQLt.FakeFunction @FunctionName = 'FakeFunctionTests.AFunction', @FakeDataSource = '#expected';
707+
708+ -- SELECT * INTO #actual FROM FakeFunctionTests.AFunction(123);
709+
710+ -- EXEC tSQLt.AssertEqualsTable '#expected', '#actual';
711+ -- END;
712+ -- GO
713+ -- CREATE PROCEDURE FakeFunctionTests.[test can fake Inline table function using a temp table as fake data source]
714+ -- AS
715+ -- BEGIN
716+ -- EXEC('CREATE FUNCTION FakeFunctionTests.AFunction() RETURNS TABLE AS RETURN (SELECT 1 AS one);');
717+
718+ -- CREATE TABLE #expected (a CHAR(1));
719+ -- INSERT INTO #expected VALUES('a');
720+
721+ -- EXEC tSQLt.FakeFunction @FunctionName = 'FakeFunctionTests.AFunction', @FakeDataSource = '#expected';
722+
723+ -- SELECT * INTO #actual FROM FakeFunctionTests.AFunction();
724+
725+ -- EXEC tSQLt.AssertEqualsTable '#expected', '#actual';
726+ -- END;
727+ -- GO
728+ -- CREATE PROCEDURE FakeFunctionTests.[test can fake multi-statement table function using a temp table as fake data source]
729+ -- AS
730+ -- BEGIN
731+ -- EXEC('CREATE FUNCTION FakeFunctionTests.AFunction(@a int) RETURNS @t TABLE (a int) AS BEGIN;
732+ -- INSERT INTO @t (a) VALUES (0) RETURN; END;');
733+
734+ -- CREATE TABLE #expected (a CHAR(1));
735+ -- INSERT INTO #expected VALUES('a');
736+
737+ -- EXEC tSQLt.FakeFunction @FunctionName = 'FakeFunctionTests.AFunction', @FakeDataSource = '#expected';
738+
739+ -- SELECT * INTO #actual FROM FakeFunctionTests.AFunction(123);
740+
741+ -- EXEC tSQLt.AssertEqualsTable '#expected', '#actual';
742+ -- END;
743+ -- GO
744+ -- CREATE PROCEDURE FakeFunctionTests.[test Private_PrepareFakeFunctionOutputTable creates snapshot table in passed in schema]
745+ -- AS
746+ -- BEGIN
747+ -- DECLARE @NewTable NVARCHAR(MAX);
748+
749+ -- EXEC('CREATE SCHEMA [a random schema];');
750+
751+ -- EXEC tSQLt.Private_PrepareFakeFunctionOutputTable @FakeDataSource = 'SELECT 1013 AS a',@SchemaName = 'a random schema', @NewTableName = @NewTable OUT;
752+
753+ -- SELECT SCHEMA_NAME(O.schema_id) SchemaName INTO #Actual FROM sys.objects O WHERE O.object_id = OBJECT_ID(@NewTable);
754+
755+ -- SELECT TOP(0) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
756+ -- INSERT INTO #Expected
757+ -- VALUES('a random schema');
758+
759+ -- EXEC tSQLt.AssertEqualsTable #Expected, #Actual
760+ -- END;
761+ -- GO
674762
675- EXEC tSQLt .AssertEqualsTable # Expected, #Actual
676- END;
677- GO
0 commit comments