import dedent from 'dedent'
import {describe, expect, it} from '@jest/globals'
import {BuildResult} from '../../src/build-results'
import {renderSummaryTable} from '../../src/job-summary'
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: | 
                          | 
                    
                
            `);
        })
    })
})