using Strata.SqlTools.SqlBreakdown.Classes; namespace Strata.SqlTools.SqlBreakdown.Tests.SqlBreakdownCollectionTests; /// /// Unit tests for SqlBreakdownCollection with CREATE statements. /// [TestFixture] public class SqlBreakdownCollectionCreateTests : SqlBreakdownCollectionTestBase { [Test] public void ParseBatch_WithCreateTableStatements_ParsesSuccessfully() { // Arrange var collection = new SqlBreakdownCollection(); var batchSql = @" CREATE TABLE Users ( Id INT PRIMARY KEY, Name NVARCHAR(100), Email NVARCHAR(100) ) GO CREATE TABLE Orders ( OrderId INT PRIMARY KEY, UserId INT FOREIGN KEY REFERENCES Users(Id), OrderDate DATETIME ) "; // Act collection.ParseBatch(batchSql); // Assert Assert.That(collection.Count, Is.EqualTo(2)); Assert.That(collection.GetRawStatementAt(0), Does.Contain("CREATE TABLE Users")); Assert.That(collection.GetRawStatementAt(1), Does.Contain("CREATE TABLE Orders")); } [Test] public void ParseBatch_WithCreateIndexStatements_ParsesSuccessfully() { // Arrange var collection = new SqlBreakdownCollection(); var batchSql = @" CREATE INDEX idx_Users_Email ON Users(Email) GO CREATE UNIQUE INDEX idx_Orders_OrderDate ON Orders(OrderDate) "; // Act collection.ParseBatch(batchSql); // Assert Assert.That(collection.Count, Is.EqualTo(2)); Assert.That(collection.GetRawStatementAt(0), Does.Contain("CREATE INDEX")); Assert.That(collection.GetRawStatementAt(1), Does.Contain("UNIQUE")); } [Test] public void ParseBatch_WithCreateProcedureStatement_ParsesSuccessfully() { // Arrange var collection = new SqlBreakdownCollection(); var batchSql = @" CREATE PROCEDURE sp_GetUserById @UserId INT AS BEGIN SELECT * FROM Users WHERE Id = @UserId END "; // Act collection.ParseBatch(batchSql); // Assert Assert.That(collection.Count, Is.GreaterThanOrEqualTo(1)); Assert.That(collection.GetRawStatementAt(0), Does.Contain("CREATE PROCEDURE")); } }