lib.initMessages();
+lib.changeWorkingDirectory('workspace');
lib.configureCasper();
-casper.test.begin(testName('API'), function (test) {
+casper.test.begin(testName('Open From Component Viewer'), 8, function (test) {
+ casper
+ .start(lib.buildUrl('source-viewer'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ window.localStorage.removeItem('sonarqube-workspace');
+ require(['/js/source-viewer/app.js']);
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.source-line');
+ })
+
+ .then(function () {
+ casper.click('.js-actions');
+ casper.waitForSelector('.js-workspace', function () {
+ casper.click('.js-workspace');
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.workspace-viewer .source-line');
+ })
+
+ .then(function () {
+ test.assertElementCount('.workspace-nav-item', 1);
+ test.assertSelectorContains('.workspace-nav-item', 'Cache.java');
+ test.assertExists('.workspace-nav-item .icon-qualifier-fil');
+
+ test.assertSelectorContains('.workspace-viewer-name', 'Cache.java');
+ test.assertExists('.workspace-viewer-name .icon-qualifier-fil');
+
+ test.assertExists('.workspace-viewer .source-viewer');
+ test.assertElementCount('.workspace-viewer .source-line', 11);
+ })
+
+ .then(function () {
+ casper.click('.workspace-viewer .js-close');
+ test.assertDoesntExist('.workspace-viewer');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Load From Local Storage'), 7, function (test) {
casper
.start(lib.buildUrl('nav'), function () {
lib.setDefaultViewport();
+
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ window.localStorage.setItem('sonarqube-workspace',
+ '[{"uuid":"12345","type":"component","name":"Cache.java","q":"FIL"}]');
+ window.SS.isUserAdmin = false;
+ window.navbarOptions = new Backbone.Model();
+ require(['/js/nav/app.js']);
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.workspace-nav-item');
+ })
+
+ .then(function () {
+ test.assertElementCount('.workspace-nav-item', 1);
+ test.assertSelectorContains('.workspace-nav-item', 'Cache.java');
+ test.assertExists('.workspace-nav-item .icon-qualifier-fil');
})
.then(function () {
- test.assertNotEquals(casper.evaluate(function () {
- window.workspace = require(['/js/workspace/main.js'])();
- console.log(window.workspace);
- return window.workspace;
- }), null);
+ casper.click('.workspace-nav-item');
+ casper.waitForSelector('.workspace-viewer .source-line');
+ })
+
+ .then(function () {
+ test.assertSelectorContains('.workspace-viewer-name', 'Cache.java');
+ test.assertExists('.workspace-viewer-name .icon-qualifier-fil');
+
+ test.assertExists('.workspace-viewer .source-viewer');
+ test.assertElementCount('.workspace-viewer .source-line', 11);
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Close From Nav'), 2, function (test) {
+ casper
+ .start(lib.buildUrl('nav'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ window.localStorage.setItem('sonarqube-workspace',
+ '[{"uuid":"12345","type":"component","name":"Cache.java","q":"FIL"}]');
+ window.SS.isUserAdmin = false;
+ window.navbarOptions = new Backbone.Model();
+ require(['/js/nav/app.js']);
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.workspace-nav-item');
+ })
+
+ .then(function () {
+ casper.click('.workspace-nav-item');
+ casper.waitForSelector('.workspace-viewer .source-line');
+ })
+
+ .then(function () {
+ casper.click('.workspace-nav-item .js-close');
+ test.assertDoesntExist('.workspace-nav-item');
+ test.assertDoesntExist('.workspace-viewer');
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Minimize'), 2, function (test) {
+ casper
+ .start(lib.buildUrl('source-viewer'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ window.localStorage.removeItem('sonarqube-workspace');
+ require(['/js/source-viewer/app.js']);
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.source-line');
+ })
+
+ .then(function () {
+ casper.click('.js-actions');
+ casper.waitForSelector('.js-workspace', function () {
+ casper.click('.js-workspace');
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.workspace-viewer .source-line');
+ })
+
+ .then(function () {
+ casper.click('.workspace-viewer .js-minimize');
+ test.assertDoesntExist('.workspace-viewer');
+ test.assertElementCount('.workspace-nav-item', 1);
+ })
+
+ .then(function () {
+ lib.sendCoverage();
+ })
+
+ .run(function () {
+ test.done();
+ });
+});
+
+
+casper.test.begin(testName('Full Screen'), 8, function (test) {
+ casper
+ .start(lib.buildUrl('source-viewer'), function () {
+ lib.setDefaultViewport();
+
+ lib.mockRequestFromFile('/api/components/app', 'app.json');
+ lib.mockRequestFromFile('/api/sources/lines', 'lines.json');
+ lib.mockRequestFromFile('/api/issues/search', 'issues.json');
+ })
+
+ .then(function () {
+ casper.evaluate(function () {
+ window.localStorage.removeItem('sonarqube-workspace');
+ require(['/js/source-viewer/app.js']);
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.source-line');
+ })
+
+ .then(function () {
+ casper.click('.js-actions');
+ casper.waitForSelector('.js-workspace', function () {
+ casper.click('.js-workspace');
+ });
+ })
+
+ .then(function () {
+ casper.waitForSelector('.workspace-viewer .source-line');
+ })
+
+ .then(function () {
+ test.assertVisible('.workspace-viewer .js-full-screen');
+ test.assertNotVisible('.workspace-viewer .js-normal-size');
+
+ casper.click('.workspace-viewer .js-full-screen');
+ test.assertExists('.workspace-viewer.workspace-viewer-full-screen');
+ test.assertNotVisible('.workspace-viewer .js-full-screen');
+ test.assertVisible('.workspace-viewer .js-normal-size');
+
+ casper.click('.workspace-viewer .js-normal-size');
+ test.assertDoesntExist('.workspace-viewer.workspace-viewer-full-screen');
+ test.assertVisible('.workspace-viewer .js-full-screen');
+ test.assertNotVisible('.workspace-viewer .js-normal-size');
})
.then(function () {
--- /dev/null
+{"sources": [
+ {
+ "line": 1,
+ "code": "<span class=\"cppd\">/*</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ },
+ {
+ "line": 2,
+ "code": "<span class=\"cppd\"> * SonarQube, open source software quality management tool.</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "b1436788cfc71b23cc3e3c15400a6c630c914bec",
+ "scmDate": "2013-04-21T11:58:14+0200"
+ },
+ {
+ "line": 3,
+ "code": "<span class=\"cppd\"> * Copyright (C) 2008-2014 SonarSource</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "57ae3026c36ae3b0b71756d6161124b1ae594c53",
+ "scmDate": "2014-03-11T17:52:41+0100"
+ },
+ {
+ "line": 4,
+ "code": "<span class=\"cppd\"> * mailto:contact AT sonarsource DOT com</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ },
+ {
+ "line": 5,
+ "code": "<span class=\"cppd\"> *</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ },
+ {
+ "line": 6,
+ "code": "<span class=\"cppd\"> * SonarQube is free software; you can redistribute it and/or</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "b1436788cfc71b23cc3e3c15400a6c630c914bec",
+ "scmDate": "2013-04-21T11:58:14+0200"
+ },
+ {
+ "line": 7,
+ "code": "<span class=\"cppd\"> * modify it under the terms of the GNU Lesser General Public</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ },
+ {
+ "line": 8,
+ "code": "<span class=\"cppd\"> * License as published by the Free Software Foundation; either</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ },
+ {
+ "line": 9,
+ "code": "<span class=\"cppd\"> * version 3 of the License, or (at your option) any later version.</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ },
+ {
+ "line": 10,
+ "code": "<span class=\"cppd\"> *</span>",
+ "scmAuthor": "simon.brandhof@gmail.com",
+ "scmRevision": "26edff10d133e29e7013f803e7ef0d69ff593aeb",
+ "scmDate": "2013-04-16T17:26:34+0200"
+ }
+]}