"falsepositive",
"wontfix"
]
+ },
+ {
+ "key": "10c6eeca-cc71-40fc-9ea8-fa90fef8db73",
+ "component": "org.codehaus.sonar:sonar-plugin-api:src/main/java/org/sonar/api/CoreProperties.java",
+ "componentId": 3509,
+ "project": "org.codehaus.sonar:sonar",
+ "subProject": "org.codehaus.sonar:sonar-plugin-api",
+ "rule": "squid:S1214",
+ "status": "CONFIRMED",
+ "severity": "MINOR",
+ "message": "Move constants to a class or enum.",
+ "line": 30,
+ "debt": "20min",
+ "author": "simon.brandhof@gmail.com",
+ "creationDate": "2013-08-28T12:19:16+0200",
+ "updateDate": "2015-03-19T14:15:56+0100",
+ "fUpdateAge": "about a minute",
+ "tags": [
+ "bad-practice",
+ "brain-overload"
+ ],
+ "actions": [
+ "comment",
+ "assign",
+ "set_tags",
+ "assign_to_me",
+ "plan",
+ "set_severity"
+ ],
+ "transitions": [
+ "unconfirm",
+ "resolve",
+ "falsepositive",
+ "wontfix"
+ ]
}
],
"rules": [
"property": "rules",
"values": [
{
- "val": "javascript:OneStatementPerLine",
+ "val": "squid:S1698",
"count": 801
},
{
- "val": "javascript:S100",
+ "val": "squid:S1142",
"count": 394
},
{
- "val": "javascript:VariableDeclarationAfterUsage",
+ "val": "squid:S1694",
"count": 114
},
{
- "val": "javascript:BitwiseOperators",
+ "val": "squid:S1151",
"count": 78
},
{
- "val": "javascript:NestedIfDepth",
+ "val": "squid:S1643",
"count": 57
},
{
- "val": "javascript:EqEqEq",
+ "val": "squid:S134",
"count": 53
},
{
- "val": "javascript:FunctionComplexity",
+ "val": "common-java:DuplicatedBlocks",
"count": 53
},
{
- "val": "javascript:ConstructorFunctionsForSideEffects",
+ "val": "squid:RightCurlyBraceSameLineAsNextBlockCheck",
"count": 40
},
{
- "val": "javascript:ForIn",
+ "val": "squid:MethodCyclomaticComplexity",
"count": 28
},
{
- "val": "javascript:S1067",
+ "val": "squid:S138",
"count": 24
},
{
- "val": "javascript:S2814",
+ "val": "squid:S1067",
"count": 21
},
{
- "val": "javascript:ArrayAndObjectConstructors",
+ "val": "common-java:InsufficientBranchCoverage",
"count": 16
},
{
- "val": "javascript:S138",
+ "val": "squid:S1228",
"count": 14
- },
- {
- "val": "javascript:ExcessiveParameterList",
- "count": 13
- },
- {
- "val": "javascript:TrailingWhitespace",
- "count": 13
}
]
}
var Command = require('intern/dojo/node!leadfoot/Command');
var pollUntil = require('intern/dojo/node!leadfoot/helpers/pollUntil');
+ var DEFAULT_TIMEOUT = 4000;
+
Command.prototype.checkElementCount = function (selector, count) {
return new this.constructor(this, function () {
return this.parent
.then(pollUntil(function (selector, count) {
var elements = document.querySelectorAll(selector);
return elements.length === count ? true : null;
- }, [selector, count]))
+ }, [selector, count], DEFAULT_TIMEOUT))
.then(function () {
}, function () {
.then(pollUntil(function (selector) {
var elements = document.querySelectorAll(selector);
return elements.length > 0 ? true : null;
- }, [selector]))
+ }, [selector], DEFAULT_TIMEOUT))
.then(function () {
}, function () {
.then(pollUntil(function (selector) {
var elements = document.querySelectorAll(selector);
return elements.length === 0 ? true : null;
- }, [selector]))
+ }, [selector], DEFAULT_TIMEOUT))
.then(function () {
}, function () {
return element.textContent.indexOf(text) !== -1;
});
return result ? true : null;
- }, [selector, text]))
+ }, [selector, text], DEFAULT_TIMEOUT))
.then(function () {
}, function () {
return element.textContent.indexOf(text) === -1;
});
return result ? true : null;
- }, [selector, text]))
+ }, [selector, text], DEFAULT_TIMEOUT))
.then(function () {
}, function () {
});
};
+ Command.prototype.open = function (hash) {
+ var url = 'test/medium/base.html?' + Date.now();
+ if (hash) {
+ url += hash;
+ }
+ return new this.constructor(this, function () {
+ return this.parent
+ .get(require.toUrl(url))
+ .checkElementExist('#content');
+ });
+ };
+
});
bdd.describe('Saved Searches', function () {
bdd.it('should show list of saved searches', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
bdd.it('should load a saved search', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
bdd.it('should load a saved search and then resets it by new search', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
bdd.it('should load', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
.checkElementCount('.issue', 50)
.checkElementCount('.issue.selected', 1)
- //.checkElementInclude('.issue', '1 more branches need to be covered by unit tests to reach')
+ .checkElementInclude('.issue', '1 more branches need to be covered by unit tests to reach')
.checkElementExist('.js-new-search')
.checkElementExist('.js-filter-save-as')
bdd.it('should show severity facet', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
issueSelector = '.issue[data-key="' + issueKey + '"]';
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
bdd.it('should bulk change issues', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
issueSelector = '.issue[data-key="' + issueKey + '"]';
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
bdd.it('should filter similar issues', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
- .mockFromFile('/api/issues/search',
- 'issues-spec/search-filter-similar-issues-severities.json', { data: { severities: 'MAJOR' } })
.mockFromFile('/api/issues/search', 'issues-spec/search-filter-similar-issues.json')
.startApp('issues')
.clickElement('.js-new-search')
+ .checkElementCount('.issue', 2)
.clickElement('.issue.selected .js-issue-filter')
.checkElementExist('.bubble-popup')
.checkElementExist('.bubble-popup [data-property="severities"][data-value="MAJOR"]')
.checkElementExist('.bubble-popup [data-property="projectUuids"][data-value="69e57151-be0d-4157-adff-c06741d88879"]')
.checkElementExist('.bubble-popup [data-property="moduleUuids"][data-value="7feef7c3-11b9-4175-b5a7-527ca3c75cb7"]')
.checkElementExist('.bubble-popup [data-property="fileUuids"][data-value="b0517331-0aaf-4091-b5cf-8e305dd0337a"]')
+ .clearMocks()
+ .mockFromFile('/api/issues/search',
+ 'issues-spec/search-filter-similar-issues-severities.json', { data: { severities: 'MAJOR' } })
.clickElement('.bubble-popup [data-property="severities"]')
- .checkElementCount('.issue', 17);
+ .checkElementCount('.issue', 1);
});
bdd.it('should open issue permalink', function () {
var issueKey = 'some-issue-key';
return this.remote
- .get(require.toUrl('test/medium/base.html#issues=' + issueKey))
+ .open('#issues=' + issueKey)
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-page-should-open-issue-permalink/app.json')
- .mockFromString('/api/issues/search', {}, { data: { issues: issueKey, p: 2 } })
- .mockFromFile('/api/issues/search', 'issues-page-should-open-issue-permalink/search.json',
- { data: { issues: issueKey } })
+ //.mockFromString('/api/issues/search', '{}', { data: { issues: issueKey, p: 2 } })
+ .mockFromFile('/api/issues/search', 'issues-page-should-open-issue-permalink/search.json', { data: { issues: issueKey } })
.mockFromFile('/api/components/app', 'issues-page-should-open-issue-permalink/components-app.json')
.mockFromFile('/api/sources/lines', 'issues-page-should-open-issue-permalink/lines.json')
.startApp('issues')
.checkElementExist('.source-line')
- .checkElementInclude('.source-viewer', 'public void executeOn(Project project, SensorContext context')
+ .checkElementInclude('.source-line', 'public void executeOn(Project project, SensorContext context')
.checkElementCount('.issue', 1)
.checkElementCount('.issue[data-key="' + issueKey + '"]', 1);
});
bdd.it('should open closed facet', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/issue_filters/app', 'issues-spec/app.json')
+ .mockFromFile('/api/issues/search', 'issues-spec/search-rules-facet.json', { data: { facets: 'rules' } })
.mockFromFile('/api/issues/search', 'issues-spec/search.json')
.startApp('issues')
.clickElement('[data-property="rules"] .js-facet-toggle')
- .checkElementCount('[data-property="rules"] .js-facet', 15)
- .checkElementInclude('[data-property="rules"] .js-facet:nth-child(1)', 'Statements should be on separate');
+ .checkElementCount('[data-property="rules"] .js-facet', 13)
+ .checkElementInclude('[data-property="rules"] .js-facet:nth-child(1)', 'Objects should be compared with');
});
});
bdd.describe('Update Center Page', function () {
bdd.it('should show plugin card', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?1'))
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should show system update', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?2#updates'))
+ .open('#updates')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should show installed', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?3#installed'))
+ .open('#installed')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should show updates', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?4#updates'))
+ .open('#updates')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should show available', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?5#available'))
+ .open('#available')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/available', 'update-center-spec/available.json')
.mockFromFile('/api/plugins/pending', 'update-center-spec/pending.json')
bdd.it('should switch between views', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?6#installed'))
+ .open('#installed')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should search', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?7#installed'))
+ .open('#installed')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should show plugin changelog', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?8#installed'))
+ .open('#installed')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should update plugin', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?9#installed'))
+ .open('#installed')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should uninstall plugin', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?10#installed'))
+ .open('#installed')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/installed', 'update-center-spec/installed.json')
.mockFromFile('/api/plugins/updates', 'update-center-spec/updates.json')
bdd.it('should install plugin', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?11#available'))
+ .open('#available')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/available', 'update-center-spec/available.json')
.mockFromFile('/api/plugins/pending', 'update-center-spec/pending.json')
bdd.it('should cancel all pending', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html?12#available'))
+ .open('#available')
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/plugins/available', 'update-center-spec/available.json')
.mockFromFile('/api/plugins/pending', 'update-center-spec/pending.json')
bdd.describe('Users Page', function () {
bdd.it('should show list of users', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.checkElementCount('#users-list li[data-login]', 3)
.checkElementInclude('#users-list .js-user-login', 'smith')
.checkElementInclude('#users-list .js-user-name', 'Bob')
.checkElementCount('#users-list .js-user-update', 3)
.checkElementCount('#users-list .js-user-change-password', 3)
.checkElementCount('#users-list .js-user-deactivate', 3)
- //.checkElementInclude('#users-list-footer', '3/3')
+ .checkElementInclude('#users-list-footer', '3/3')
.checkElementNotInclude('[data-login="ryan"]', 'another@example.com')
.clickElement('[data-login="ryan"] .js-user-more-scm')
.checkElementInclude('[data-login="ryan"]', 'another@example.com')
bdd.it('should search users', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.checkElementCount('#users-list li[data-login]', 3)
.clearMocks()
.mockFromFile('/api/users/search', 'users-spec/search-filtered.json')
.fillElement('#users-search-query', 'ryan')
.clickElement('#users-search-submit')
- .waitForDeletedByCssSelector('[data-login="admin"]')
+ .checkElementNotExist('[data-login="admin"]')
.checkElementCount('#users-list li[data-login]', 1)
.clearMocks()
.mockFromFile('/api/users/search', 'users-spec/search.json')
bdd.it('should show more', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search-big-1.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.checkElementCount('#users-list li[data-login]', 2)
.clearMocks()
.mockFromFile('/api/users/search', 'users-spec/search-big-2.json')
bdd.it('should create a new user', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.checkElementCount('#users-list li[data-login]', 3)
.clickElement('#users-create')
.checkElementCount('#create-user-form', 1)
.mockFromString('/api/users/create', '{}')
.clickElement('#create-user-add-scm-account')
.clickElement('#create-user-add-scm-account')
- .execute(function () {
- jQuery('#create-user-login').val('login');
- jQuery('#create-user-name').val('name');
- jQuery('#create-user-email').val('email@example.com');
- jQuery('#create-user-password').val('secret');
- jQuery('[name="scmAccounts"]').first().val('scm1');
- jQuery('[name="scmAccounts"]').last().val('scm2');
- })
+ .fillElement('#create-user-login', 'login')
+ .fillElement('#create-user-name', 'name')
+ .fillElement('#create-user-email', 'email@example.com')
+ .fillElement('#create-user-password', 'secret')
+ .fillElement('[name="scmAccounts"]:first-child', 'scm1')
+ .fillElement('[name="scmAccounts"]:last-child', 'scm2')
.clickElement('#create-user-submit')
.checkElementCount('[data-login="login"]', 1)
.checkElementCount('#users-list li[data-login]', 4)
bdd.it('should update a user', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.clickElement('[data-login="smith"] .js-user-update')
.checkElementCount('#create-user-form', 1)
.clearMocks()
.mockFromFile('/api/users/search', 'users-spec/search-updated.json')
.mockFromString('/api/users/update', '{}')
.clickElement('#create-user-add-scm-account')
- .execute(function () {
- jQuery('#create-user-name').val('Mike');
- jQuery('#create-user-email').val('mike@example.com');
- jQuery('[name="scmAccounts"]').first().val('scm5');
- jQuery('[name="scmAccounts"]').last().val('scm6');
- })
+ .fillElement('#create-user-name', 'Mike')
+ .fillElement('#create-user-email', 'mike@example.com')
+ .fillElement('[name="scmAccounts"]:first-child', 'scm5')
+ .fillElement('[name="scmAccounts"]:last-child', 'scm6')
.clickElement('#create-user-submit')
.waitForDeletedByCssSelector('#create-user-form')
.checkElementInclude('[data-login="smith"] .js-user-login', 'smith')
bdd.it('should change user\'s password', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.clickElement('[data-login="smith"] .js-user-change-password')
.checkElementCount('#change-user-password-form', 1)
.clearMocks()
.mockFromString('/api/users/change_password', '{}')
- .execute(function () {
- jQuery('#change-user-password-password').val('secret');
- jQuery('#change-user-password-password-confirmation').val('another');
- })
+ .fillElement('#change-user-password-password', 'secret')
+ .fillElement('#change-user-password-password-confirmation', 'another')
.clickElement('#change-user-password-submit')
.checkElementCount('.alert.alert-danger', 1)
- .execute(function () {
- jQuery('#change-user-password-password').val('secret');
- jQuery('#change-user-password-password-confirmation').val('secret');
- })
+ .fillElement('#change-user-password-password', 'secret')
+ .fillElement('#change-user-password-password-confirmation', 'secret')
.clickElement('#change-user-password-submit')
.waitForDeletedByCssSelector('#change-user-password-form');
});
bdd.it('should deactivate a user', function () {
return this.remote
- .get(require.toUrl('test/medium/base.html'))
- .setFindTimeout(5000)
+ .open()
.mockFromString('/api/l10n/index', '{}')
.mockFromFile('/api/users/search', 'users-spec/search.json')
.startApp('users')
- .checkElementCount('#users-list ul', 1)
.clickElement('[data-login="smith"] .js-user-deactivate')
.checkElementCount('#deactivate-user-form', 1)
.clearMocks()