import { BuildResult } from '../../src/build-results'
import { renderSummaryTable } from '../../src/job-summary'
import dedent from 'dedent'
const successfulHelpBuild: BuildResult = {
    rootProjectName: 'root',
    rootProjectDir: '/',
    requestedTasks: 'help',
    gradleVersion: '8.0',
    gradleHomeDir: '/opt/gradle',
    buildFailed: false,
    configCacheHit: false,
    buildScanUri: 'https://scans.gradle.com/s/abc123',
    buildScanFailed: false
}
const failedHelpBuild: BuildResult = {
    ...successfulHelpBuild,
    buildFailed: true
}
const longArgsBuild: BuildResult = {
    ...successfulHelpBuild,
    requestedTasks: 'check publishMyLongNamePluginPublicationToMavenCentral publishMyLongNamePluginPublicationToPluginPortal',
}
const scanPublishDisabledBuild: BuildResult = {
    ...successfulHelpBuild,
    buildScanUri: '',
    buildScanFailed: false,
}
const scanPublishFailedBuild: BuildResult = {
    ...successfulHelpBuild,
    buildScanUri: '',
    buildScanFailed: true,
}
describe('renderSummaryTable', () => {
    describe('renders', () => {
        it('successful build', () => {
            const table = renderSummaryTable([successfulHelpBuild])
            expect(table.trim()).toBe(dedent`
                
                    
                        | Gradle Root Project | Requested Tasks | Gradle Version | Build Outcome | Build Scan® | 
                    
                        | root | help | 8.0 | :white_check_mark: |  | 
                
            `);
        })
        it('failed build', () => {
            const table = renderSummaryTable([failedHelpBuild])
            expect(table.trim()).toBe(dedent`
                
                    
                        | Gradle Root Project | Requested Tasks | Gradle Version | Build Outcome | Build Scan® | 
                    
                        | root | help | 8.0 | :x: |  | 
                
            `);
        })
        describe('when build scan', () => {
            it('publishing disabled', () => {
                const table = renderSummaryTable([scanPublishDisabledBuild])
                expect(table.trim()).toBe(dedent`
                    
                        
                            | Gradle Root Project | Requested Tasks | Gradle Version | Build Outcome | Build Scan® | 
                        
                            | root | help | 8.0 | :white_check_mark: |  | 
                    
                `);
            })
            it('publishing failed', () => {
                const table = renderSummaryTable([scanPublishFailedBuild])
                expect(table.trim()).toBe(dedent`
                    
                        
                            | Gradle Root Project | Requested Tasks | Gradle Version | Build Outcome | Build Scan® | 
                        
                            | root | help | 8.0 | :white_check_mark: |  | 
                    
                `);
            })
        })
        it('multiple builds', () => {
            const table = renderSummaryTable([successfulHelpBuild, failedHelpBuild])
            expect(table.trim()).toBe(dedent`
                
                    
                        | Gradle Root Project | Requested Tasks | Gradle Version | Build Outcome | Build Scan® | 
                    
                        | root | help | 8.0 | :white_check_mark: |  | 
                    
                        | root | help | 8.0 | :x: |  | 
                
            `);
        })
        it('truncating long requested tasks', () => {
            const table = renderSummaryTable([longArgsBuild])
            expect(table.trim()).toBe(dedent`
                
                    
                        | Gradle Root Project | Requested Tasks | Gradle Version | Build Outcome | Build Scan® | 
                    
                        | root | check publishMyLongNamePluginPublicationToMavenCentral publ… | 8.0 | :white_check_mark: |  | 
                
            `);
        })
    })
})