public static void ColumnComments_PropertyGetWhenCtorGivenDictionaryWithValues_ContainsExpectedValues()
        {
            var columnNames = new[]
            {
                new Identifier("test_column_1"),
                new Identifier("test_column_2"),
                new Identifier("test_column_3")
            };
            var columnComments = new Dictionary <Identifier, Option <string> >
            {
                [columnNames[0]] = Option <string> .None,
                [columnNames[1]] = Option <string> .Some("test comment for second column"),
                [columnNames[2]] = Option <string> .Some("test comment for third column")
            };

            var comments = new DatabaseViewComments("test_view", Option <string> .None, columnComments);

            var propColumnComments = comments.ColumnComments;

            Assert.Multiple(() =>
            {
                Assert.That(columnComments.Keys, Is.EqualTo(propColumnComments.Keys));

                Assert.That(columnComments["test_column_1"].IsNone, Is.EqualTo(propColumnComments["test_column_1"].IsNone));
                Assert.That(columnComments["test_column_2"].IsNone, Is.EqualTo(propColumnComments["test_column_2"].IsNone));
                Assert.That(columnComments["test_column_3"].IsNone, Is.EqualTo(propColumnComments["test_column_3"].IsNone));

                Assert.That(columnComments["test_column_2"].UnwrapSome(), Is.EqualTo(propColumnComments["test_column_2"].UnwrapSome()));
                Assert.That(columnComments["test_column_3"].UnwrapSome(), Is.EqualTo(propColumnComments["test_column_3"].UnwrapSome()));
            });
        }
        public async Task Generate_GivenMultiLineViewWithViewAndColumnComments_GeneratesExpectedOutput()
        {
            const string viewComment   = @"This is a test view comment for Poco.

This is a second line for it.";
            const string columnComment = @"This is a test column comment for Poco.

This is a second line for it.";

            var view = await GetView("test_view_3").ConfigureAwait(false);

            var generator = ViewGenerator;

            var comment = new DatabaseViewComments("test_view_3",
                                                   Option <string> .Some(viewComment),
                                                   new Dictionary <Identifier, Option <string> > {
                ["test_column_1"] = Option <string> .Some(columnComment)
            }
                                                   );
            var result = generator.Generate(view, comment);

            var expected = TestView3MultiLineOutput;

            Assert.That(result, Is.EqualTo(expected).Using(LineEndingInvariantStringComparer.Ordinal));
        }
        public static void ViewName_PropertyGet_EqualsCtorArg()
        {
            Identifier viewName = "test_view";
            var        comments = new DatabaseViewComments(viewName, Option <string> .None, Empty.CommentLookup);

            Assert.That(comments.ViewName, Is.EqualTo(viewName));
        }
        public static void Comment_PropertyGetWhenCtorGivenValidCommentValue_MatchesCommentValue()
        {
            const string commentText = "this is a test comment";
            var          commentArg  = Option <string> .Some(commentText);

            var comments = new DatabaseViewComments("test_view", commentArg, Empty.CommentLookup);

            Assert.That(comments.Comment.UnwrapSome(), Is.EqualTo(commentText));
        }
        public static void ColumnComments_PropertyGetWhenCtorGivenDictionaryWithValues_MatchesKeys()
        {
            var columnNames = new[]
            {
                new Identifier("test_column_1"),
                new Identifier("test_column_2"),
                new Identifier("test_column_3")
            };
            var columnComments = new Dictionary <Identifier, Option <string> >
            {
                [columnNames[0]] = Option <string> .None,
                [columnNames[1]] = Option <string> .None,
                [columnNames[2]] = Option <string> .None
            };

            var comments           = new DatabaseViewComments("test_view", Option <string> .None, columnComments);
            var propColumnComments = comments.ColumnComments;

            Assert.That(columnComments.Keys, Is.EqualTo(propColumnComments.Keys));
        }
        public static void ColumnComments_PropertyGetWhenCtorGivenEmptyDictionary_IsEmpty()
        {
            var comments = new DatabaseViewComments("test_view", Option <string> .None, Empty.CommentLookup);

            Assert.That(comments.ColumnComments, Is.Empty);
        }
        public static void Comment_PropertyGetWhenCtorGivenNone_IsNone()
        {
            var comments = new DatabaseViewComments("test_view", Option <string> .None, Empty.CommentLookup);

            Assert.That(comments.Comment, OptionIs.None);
        }