// # About Test
// Test the various parts of the About page

/*globals CasperTest, casper */

CasperTest.begin('About screen is correct', 9, function suite(test) {
    casper.thenOpenAndWaitForPageLoad('about', function testTitleAndUrl() {
        test.assertTitle('About - Test Blog', 'Ghost admin has incorrect title');
        test.assertUrlMatch(/ghost\/about\/$/, 'Redirected to the correct URL');
    });

    casper.then(function testVersionNumber() {
        var versionNumber = casper.getHTML('.gh-env-list-version');
        test.assertMatch(versionNumber, /\d+\.\d+\.\d+/, 'Version is a number'); // Tests for a pattern like 0.0.0 to v11111.3334534.2342453-beta
    });

    casper.then(function testDatabaseType() {
        var databaseTypeText = casper.getHTML('.gh-env-list-database-type');
        test.assertMatch(databaseTypeText, /sqlite3|mysql|pg/gi, 'Database is an allowed type');
    });

    casper.waitForSelector('.gh-contributors article', function testContributors() {
        var firstContribImageSrc = casper.getElementAttribute('.gh-contributors article:nth-child(1) a img', 'src');

        // Check first contributor image tag is on the page
        test.assertExist('.gh-contributors article:nth-child(1) img', 'First contributor image is in place');

        // Check first contributor image resource exists & alt tag isnt empty
        test.assertResourceExists(firstContribImageSrc, 'First contributor image file exists');
        test.assertDoesntExist('.gh-contributors article:nth-child(1) a img[alt=""]', 'First contributor image alt is not empty');

        // Check first contributor links to GitHub
        test.assertExists('.gh-contributors article:nth-child(1) a[href*="github.com"]', 'First contributor link to GitHub');

        // Check first contributor links to GitHub
        test.assertDoesntExist('.gh-contributors article:nth-child(1) a[title=""]', 'First contributor title is not empty');
    });
});