public static void GenerateAsync_GivenNullOrWhiteSpaceProjectPath_ThrowsArgumentNullException(string projectPath)
        {
            var mockFs          = new MockFileSystem();
            var database        = Mock.Of <IRelationalDatabase>();
            var commentProvider = new EmptyRelationalDatabaseCommentProvider();
            var nameTranslator  = new VerbatimNameTranslator();
            var generator       = new OrmLiteDataAccessGenerator(mockFs, database, commentProvider, nameTranslator);

            Assert.That(() => generator.GenerateAsync(projectPath, "test"), Throws.ArgumentNullException);
        }
        public static void GenerateAsync_GivenProjectPathNotACsproj_ThrowsArgumentException()
        {
            var mockFs          = new MockFileSystem();
            var database        = Mock.Of <IRelationalDatabase>();
            var commentProvider = new EmptyRelationalDatabaseCommentProvider();
            var nameTranslator  = new VerbatimNameTranslator();
            var generator       = new OrmLiteDataAccessGenerator(mockFs, database, commentProvider, nameTranslator);

            using var tempDir = new TemporaryDirectory();
            var projectPath = Path.Combine(tempDir.DirectoryPath, "DataAccessGeneratorTest.vbproj");

            Assert.That(() => generator.GenerateAsync(projectPath, "test"), Throws.ArgumentException);
        }
        public static void GenerateAsync_GivenNullOrWhiteSpaceNamespace_ThrowsArgumentNullException(string ns)
        {
            var mockFs          = new MockFileSystem();
            var database        = Mock.Of <IRelationalDatabase>();
            var commentProvider = new EmptyRelationalDatabaseCommentProvider();
            var nameTranslator  = new VerbatimNameTranslator();
            var generator       = new OrmLiteDataAccessGenerator(mockFs, database, commentProvider, nameTranslator);

            using var tempDir = new TemporaryDirectory();
            var projectPath = Path.Combine(tempDir.DirectoryPath, TestCsprojFileName);

            Assert.That(() => generator.GenerateAsync(projectPath, ns), Throws.ArgumentNullException);
        }
        public async Task GenerateAsync_GivenDatabaseWithTables_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 OrmLiteDataAccessGenerator(fileSystem, Database, commentProvider, nameTranslator);
            await generator.GenerateAsync(projectPath, TestNamespace).ConfigureAwait(false);

            var buildsSuccessfully = await ProjectBuildsSuccessfullyAsync(projectPath).ConfigureAwait(false);

            Assert.That(buildsSuccessfully, Is.True);
        }
Пример #5
0
        public async Task <int> HandleCommandAsync(IConsole console, FileInfo projectPath, string baseNamespace, string convention, CancellationToken cancellationToken)
        {
            var fileSystem     = new FileSystem();
            var nameTranslator = GetNameTranslator(convention);
            var connection     = GetSchematicConnection();
            var database       = await connection.Dialect.GetRelationalDatabaseAsync(connection, cancellationToken).ConfigureAwait(false);

            var commentProvider = await connection.Dialect.GetRelationalDatabaseCommentProviderAsync(connection, cancellationToken).ConfigureAwait(false);

            var generator = new OrmLiteDataAccessGenerator(fileSystem, database, commentProvider, nameTranslator);

            await generator.GenerateAsync(projectPath.FullName, baseNamespace, cancellationToken).ConfigureAwait(false);

            console.Out.Write("Project generated at: " + projectPath.FullName);
            return(ErrorCode.Success);
        }