]> git.frustrated-labs.net Git - gradle-changelog-plugin.git/blob
76f61a09311d3b5a29c9fe5f40ae3b732cec822a
[gradle-changelog-plugin.git] /
1 package io.github.aloussase.changelog.parser
2
3 import org.hamcrest.MatcherAssert.assertThat
4 import org.hamcrest.Matchers.emptyIterable
5 import org.hamcrest.Matchers.equalTo
6 import org.hamcrest.collection.IsCollectionWithSize.hasSize
7 import org.junit.jupiter.api.Test
8 import org.junit.jupiter.params.ParameterizedTest
9 import org.junit.jupiter.params.provider.ValueSource
10
11 class MarkdownChangelogParserTests {
12
13     @Test
14     fun givenEmptyFileWhenParseIsInvokedThenReturnEmptyChangelog() {
15         val input = ""
16         val parser = MarkdownChangelogParser()
17
18         val result = parser.parse(input)
19
20         assertThat(result.isSuccess, equalTo(true))
21         assertThat(result.getOrThrow().entries, emptyIterable())
22     }
23
24     @ParameterizedTest
25     @ValueSource(strings = ["# Changelog", "# CHANGELOG"])
26     fun givenDocumentContainingOnlyHeaderWhenParseIsInvokedThenReturnEmptyChangelog(doc: String) {
27         val parser = MarkdownChangelogParser()
28
29         val result = parser.parse(doc)
30
31         assertThat(result.isSuccess, equalTo(true))
32         assertThat(result.getOrThrow().entries, emptyIterable())
33     }
34
35     @Test
36     fun givenDocumentContainingSingleEntryWithNoCommitsWhenParseisInvokedThenReturnChangelogWithThatEntryAndNoCommits() {
37         val doc = "# Changelog\n\n## LOYMAR-123"
38         val parser = MarkdownChangelogParser()
39
40         val result = parser.parse(doc)
41
42         assertThat(result.isSuccess, equalTo(true))
43         assertThat(result.getOrThrow().entries, hasSize(1))
44         assertThat(result.getOrThrow().entries.first().branchName, equalTo("LOYMAR-123"))
45         assertThat(result.getOrThrow().entries.first().commits, emptyIterable())
46     }
47
48     @Test
49     fun givenDocumentContainingSingleEntryWithCommitsWhenParseIsInvokedThenReturnChangelogWithSingleEntryAndCommits() {
50         val doc = "# Changelog\n\n## LOYMAR-123\n- first commit\n- second commit"
51         val parser = MarkdownChangelogParser()
52
53         val result = parser.parse(doc)
54
55         assertThat(result.isSuccess, equalTo(true))
56         assertThat(result.getOrThrow().entries, hasSize(1))
57         assertThat(result.getOrThrow().entries[0].commits, hasSize(2))
58         assertThat(result.getOrThrow().entries[0].commits[0].message, equalTo("first commit"))
59         assertThat(result.getOrThrow().entries[0].commits[1].message, equalTo("second commit"))
60     }
61
62     @Test
63     fun givenDocumentWithTwoEntriesWhenParseIsInvokedThenReturnChangelogWithTwoEntries() {
64         val doc = "# Changelog\n\n## LOYMAR-123\n- first commit\n- second commit\n\n## LOYMAR-456\n- third commit"
65         val parser = MarkdownChangelogParser()
66
67         val result = parser.parse(doc)
68
69         assertThat(result.isSuccess, equalTo(true))
70         assertThat(result.getOrThrow().entries, hasSize(2))
71         assertThat(result.getOrThrow().entries[0].commits, hasSize(2))
72         assertThat(result.getOrThrow().entries[1].commits, hasSize(1))
73         assertThat(result.getOrThrow().entries[1].commits[0].message, equalTo("third commit"))
74     }
75
76 }