public async Task GenerateAsync_GivenDatabaseWithTablesAndViews_GeneratesFilesInExpectedLocations() { using var tempDir = new TemporaryDirectory(); var projectPath = Path.Combine(tempDir.DirectoryPath, TestCsprojFilename); var tablesDir = Path.Combine(tempDir.DirectoryPath, "Tables"); var viewsDir = Path.Combine(tempDir.DirectoryPath, "Views"); var expectedTable1Path = Path.Combine(tablesDir, "Main", "ViewTestTable1.cs"); var expectedView1Path = Path.Combine(viewsDir, "Main", "TestView1.cs"); var expectedView2Path = Path.Combine(viewsDir, "Main", "TestView2.cs"); var mockFs = new MockFileSystem(new Dictionary <string, MockFileData> { [tempDir.DirectoryPath + Path.PathSeparator] = new MockDirectoryData(), [expectedTable1Path] = MockFileData.NullObject, [expectedView1Path] = MockFileData.NullObject, [expectedView2Path] = MockFileData.NullObject }); var nameTranslator = new PascalCaseNameTranslator(); var commentProvider = new EmptyRelationalDatabaseCommentProvider(); var generator = new PocoDataAccessGenerator(mockFs, Database, commentProvider, nameTranslator); await generator.GenerateAsync(projectPath, TestNamespace).ConfigureAwait(false); Assert.Multiple(() => { Assert.That(mockFs.FileExists(projectPath), Is.True); Assert.That(mockFs.Directory.Exists(tablesDir), Is.True); Assert.That(mockFs.Directory.Exists(viewsDir), Is.True); Assert.That(mockFs.FileExists(expectedTable1Path), Is.True); Assert.That(mockFs.FileExists(expectedView1Path), Is.True); Assert.That(mockFs.FileExists(expectedView2Path), Is.True); }); }
public static void ColumnToPropertyName_GivenNullOrWhiteSpaceColumnName_ThrowsArgumentNullException(string columnName) { const string className = "test"; var nameTranslator = new PascalCaseNameTranslator(); Assert.That(() => nameTranslator.ColumnToPropertyName(className, columnName), Throws.ArgumentNullException); }
public static void SchemaToNamespace_GivenNullSchema_ReturnsNull() { var nameTranslator = new PascalCaseNameTranslator(); var testName = new Identifier("test"); var result = nameTranslator.SchemaToNamespace(testName); Assert.That(result, Is.Null); }
public static void TableToClassName_GivenCamelCasedSchemaName_ReturnsPascalCasedText() { var nameTranslator = new PascalCaseNameTranslator(); var testName = new Identifier("FirstSecond"); const string expected = "FirstSecond"; var result = nameTranslator.TableToClassName(testName); Assert.That(result, Is.EqualTo(expected)); }
public static void TableToClassName_GivenSpaceSeparatedLocalName_ReturnsSpaceRemovedText() { var nameTranslator = new PascalCaseNameTranslator(); var testName = new Identifier("first second"); const string expected = "Firstsecond"; var result = nameTranslator.TableToClassName(testName); Assert.That(result, Is.EqualTo(expected)); }
public static void SchemaToNamespace_GivenUnderscoreSeparatedSchemaName_ReturnsPascalCasedText() { var nameTranslator = new PascalCaseNameTranslator(); var testName = new Identifier("first_second", "test"); const string expected = "FirstSecond"; var result = nameTranslator.SchemaToNamespace(testName); Assert.That(result, Is.EqualTo(expected)); }
public static void ColumnToPropertyName_GivenTransformedNameMatchingClassName_ReturnsUnderscoreAppendedColumnName() { var nameTranslator = new PascalCaseNameTranslator(); const string className = "FirstSecond"; const string testName = "FirstSecond"; const string expected = "FirstSecond_"; var result = nameTranslator.ColumnToPropertyName(className, testName); Assert.That(result, Is.EqualTo(expected)); }
public static void ColumnToPropertyName_GivenCamelCasedSchemaName_ReturnsPascalCasedText() { var nameTranslator = new PascalCaseNameTranslator(); const string className = "test"; const string testName = "FirstSecond"; const string expected = "FirstSecond"; var result = nameTranslator.ColumnToPropertyName(className, testName); Assert.That(result, Is.EqualTo(expected)); }
public async Task Generate_GivenDatabaseWithTablesAndViews_BuildsProjectSuccessfully() { using var tempDir = new TemporaryDirectory(); var projectPath = Path.Combine(tempDir.DirectoryPath, TestCsprojFilename); var fileSystem = new FileSystem(); var commentProvider = new EmptyRelationalDatabaseCommentProvider(); var nameTranslator = new PascalCaseNameTranslator(); var generator = new PocoDataAccessGenerator(fileSystem, Database, commentProvider, nameTranslator); await generator.GenerateAsync(projectPath, TestNamespace).ConfigureAwait(false); var buildsSuccessfully = await ProjectBuildsSuccessfullyAsync(projectPath).ConfigureAwait(false); Assert.That(buildsSuccessfully, Is.True); }
public static void SchemaToNamespace_GivenNullName_ThrowsArgumentNullException() { var nameTranslator = new PascalCaseNameTranslator(); Assert.That(() => nameTranslator.SchemaToNamespace(null), Throws.ArgumentNullException); }
public static void TableToClassName_GivenNullName_ThrowsArgumentNullException() { var nameTranslator = new PascalCaseNameTranslator(); Assert.That(() => nameTranslator.TableToClassName(null), Throws.ArgumentNullException); }