コード例 #1
0
        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);
            });
        }
コード例 #2
0
        public static void ColumnToPropertyName_GivenNullOrWhiteSpaceColumnName_ThrowsArgumentNullException(string columnName)
        {
            const string className      = "test";
            var          nameTranslator = new PascalCaseNameTranslator();

            Assert.That(() => nameTranslator.ColumnToPropertyName(className, columnName), Throws.ArgumentNullException);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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));
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        public static void SchemaToNamespace_GivenNullName_ThrowsArgumentNullException()
        {
            var nameTranslator = new PascalCaseNameTranslator();

            Assert.That(() => nameTranslator.SchemaToNamespace(null), Throws.ArgumentNullException);
        }
コード例 #11
0
        public static void TableToClassName_GivenNullName_ThrowsArgumentNullException()
        {
            var nameTranslator = new PascalCaseNameTranslator();

            Assert.That(() => nameTranslator.TableToClassName(null), Throws.ArgumentNullException);
        }