Skip to content

Commit

Permalink
Add inline templates
Browse files Browse the repository at this point in the history
  • Loading branch information
HelloCore committed Jun 24, 2019
1 parent af91000 commit c111274
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`generating inline messages summary inline result matches snapshot 1`] = `
"
[//]: # (danger-id-blankID;)
[//]: # ( File: File.swift;
Line: 5;)
- ❌ Failing message Failing message
- ⚠️ Warning message Warning message
- ✨ message
markdown
"
`;

exports[`generating messages for BitBucket cloud summary result matches snapshot 1`] = `
"
⚠️ Danger found some issues. Don't worry, everything is fixable.
Expand Down
45 changes: 44 additions & 1 deletion source/runner/templates/_tests/_bitbucketCloudTemplate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@ import {
failsResultsWithoutMessages,
warnResults,
failsResults,
messagesResults,
markdownResults,
summaryResults,
} from "../../_tests/fixtures/ExampleDangerResults"
import { dangerSignaturePostfix, template } from "../bitbucketCloudTemplate"
import { dangerSignaturePostfix, template, inlineTemplate } from "../bitbucketCloudTemplate"
import { DangerResults } from "../../../dsl/DangerResults"

const commitID = "e70f3d6468f61a4bef68c9e6eaba9166b096e23c"

const noEntryEmoji = "❌"
const warningEmoji = "⚠️"
const messageEmoji = "✨"

describe("generating messages for BitBucket cloud", () => {
it("shows no sections for empty results", () => {
const issues = template("blankID", commitID, emptyResults)
Expand Down Expand Up @@ -45,3 +51,40 @@ describe("generating messages for BitBucket cloud", () => {
expect(template("blankID", commitID, emptyResults)).toContain(dangerSignaturePostfix({} as DangerResults, commitID))
})
})

describe("generating inline messages", () => {
it("Shows the failing message", () => {
const issues = inlineTemplate("blankID", failsResults, "File.swift", 5)
expect(issues).toContain(`- ${noEntryEmoji} Failing message`)
expect(issues).not.toContain(`- ${warningEmoji}`)
expect(issues).not.toContain(`- ${messageEmoji}`)
})

it("Shows the warning message", () => {
const issues = inlineTemplate("blankID", warnResults, "File.swift", 5)
expect(issues).toContain(`- ${warningEmoji} Warning message`)
expect(issues).not.toContain(`- ${noEntryEmoji}`)
expect(issues).not.toContain(`- ${messageEmoji}`)
})

it("Shows the message", () => {
const issues = inlineTemplate("blankID", messagesResults, "File.swift", 5)
expect(issues).toContain(`- ${messageEmoji} Message`)
expect(issues).not.toContain(`- ${noEntryEmoji}`)
expect(issues).not.toContain(`- ${warningEmoji}`)
})

it("Shows markdowns one after another", () => {
const issues = inlineTemplate("blankID", markdownResults, "File.swift", 5)
const expected = `
### Short Markdown Message1
### Short Markdown Message2
`
expect(issues).toContain(expected)
})

it("summary inline result matches snapshot", () => {
expect(inlineTemplate("blankID", summaryResults, "File.swift", 5)).toMatchSnapshot()
})
})
18 changes: 17 additions & 1 deletion source/runner/templates/bitbucketCloudTemplate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ export const dangerSignature = (results: DangerResults) => {
export const messageForResultWithIssues = `${warningEmoji} Danger found some issues. Don't worry, everything is fixable.`

export const dangerIDToString = (id: string) => `danger-id-${id};`

export const fileLineToString = (file: string, line: number) => ` File: ${file};
Line: ${line};`
/**
* Postfix signature to be attached comment generated / updated by danger.
*/
Expand Down Expand Up @@ -59,3 +60,18 @@ export function template(dangerID: string, commitID: string, results: DangerResu
[](http://${dangerIDToString(dangerID)})
`
}

export function inlineTemplate(dangerID: string, results: DangerResults, file: string, line: number): string {
const printViolation = (emoji: string) => (violation: Violation) => {
return `- ${emoji} ${violation.message}`
}

return `
[//]: # (${dangerIDToString(dangerID)})
[//]: # (${fileLineToString(file, line)})
${results.fails.map(printViolation(noEntryEmoji)).join("\n")}
${results.warnings.map(printViolation(warningEmoji)).join("\n")}
${results.messages.map(printViolation(messageEmoji)).join("\n")}
${results.markdowns.map(v => v.message).join("\n\n")}
`
}

0 comments on commit c111274

Please sign in to comment.