in RuleTests/RuleTestCases.cs [147:176]
private void RunTableNameEndingInViewTest(Action<RuleTest> configureTest)
{
var testScripts = new Tuple<string, string>[]
{
Tuple.Create("CREATE TABLE t1 (c1 int)", "NoProblems.sql"),
Tuple.Create(@"CREATE TABLE [dbo].[NotAProblem] (c2 int)
GO
CREATE TABLE [dbo].[NotAView] (c3 int)", "OneProblem.sql")
};
// When loading from a Dacpac the top-level object's name will be the source
const string expectedProblemSource = "[dbo].[NotAView]";
using (RuleTest test = new RuleTest(testScripts, new TSqlModelOptions(), SqlServerVersion.Sql120))
{
if(configureTest != null)
{
configureTest(test);
}
test.RunTest(TableNameEndingInViewRule.RuleId, (result, problemsString) =>
{
var problems = result.Problems;
Assert.AreEqual(1, problems.Count, "Expect 1 problem to have been found");
Assert.AreEqual(expectedProblemSource, problems[0].SourceName,
"Expect the source name to match the top-level object's name when analysing a dacpac source");
Assert.AreEqual(1, problems[0].StartLine,
"Expect the top-level object to start at line 1 since it has been loaded in its own source script");
Assert.AreEqual(1, problems[0].StartColumn, "Expect the column to match where the problem was found");
});
}
}