]> source.dussan.org Git - sonarqube.git/commitdiff
fix manual rule reactivation
authorStas Vilchik <vilchiks@gmail.com>
Tue, 17 Mar 2015 16:45:26 +0000 (17:45 +0100)
committerStas Vilchik <vilchiks@gmail.com>
Tue, 17 Mar 2015 16:45:26 +0000 (17:45 +0100)
server/sonar-web/src/main/hbs/coding-rules/rule/coding-rules-manual-rule-creation.hbs
server/sonar-web/src/main/js/coding-rules/rule/manual-rule-creation-view.js
server/sonar-web/src/test/js/coding-rules-page-should-create-manual-rules.js

index 326703225d475ccbef572cb7531ef4205ebe4532..49856ca84f5b37db9b4efe6e6e751f26e4fa4221 100644 (file)
@@ -45,6 +45,7 @@
     <button id="coding-rules-manual-rule-creation-create">
       {{#if change}}{{t 'save'}}{{else}}{{t 'create'}}{{/if}}
     </button>
+    <button id="coding-rules-manual-rule-creation-reactivate">{{t 'coding_rules.reactivate'}}</button>
     <a id="coding-rules-manual-rule-creation-cancel" class="js-modal-close">{{t 'cancel'}}</a>
   </div>
 </form>
index 447d425c93219622a841598c2dc981424f1a8de9..d9f2e20c2a34b54c5f1d121498d7698331600660 100644 (file)
@@ -60,6 +60,7 @@ define([
     onRender: function () {
       ModalFormView.prototype.onRender.apply(this, arguments);
       this.keyModifiedByUser = false;
+      this.ui.manualRuleCreationReactivate.addClass('hidden');
     },
 
     generateKey: function () {
@@ -71,8 +72,6 @@ define([
 
     flagKey: function () {
       this.keyModifiedByUser = true;
-      // Cannot use @ui.manualRuleCreationReactivate.hide() directly since it was not there at initial render
-      $(this.ui.manualRuleCreationReactivate.selector).hide();
     },
 
     create: function () {
@@ -112,7 +111,9 @@ define([
       }).fail(function (jqXHR) {
         if (jqXHR.status === 409) {
           that.existingRule = jqXHR.responseJSON.rule;
-          that.$('.alert-warning').removeClass('hidden');
+          that.showErrors([], [{ msg: t('coding_rules.reactivate.help') }]);
+          that.ui.manualRuleCreationCreate.addClass('hidden');
+          that.ui.manualRuleCreationReactivate.removeClass('hidden');
         } else {
           that.showErrors(jqXHR.responseJSON.errors, jqXHR.responseJSON.warnings);
         }
index eb7c7e97fe7dc1831c6acd8da779de106d406065..b57fed7c582413af26789b3ea42bfd4ebe0db022 100644 (file)
  */
 /* global casper:false */
 
-var lib = require('../lib');
+var lib = require('../lib'),
+    testName = lib.testName('Coding Rules', 'Manual Rule');
 
 lib.initMessages();
 lib.changeWorkingDirectory('coding-rules-page-should-create-manual-rules');
 lib.configureCasper();
 
 
-casper.test.begin('coding-rules-page-should-delete-manual-rules', 3, function (test) {
+casper.test.begin(testName('Create'), 3, function (test) {
   casper
       .start(lib.buildUrl('coding-rules'), function () {
         lib.setDefaultViewport();
@@ -57,8 +58,7 @@ casper.test.begin('coding-rules-page-should-delete-manual-rules', 3, function (t
 
       .then(function () {
         casper.evaluate(function () {
-          jQuery('.modal [name="name"]').val('Manual Rule');
-          jQuery('.modal [name="key"]').val('manual:Manual_Rule');
+          jQuery('.modal [name="name"]').val('Manual Rule').keyup();
           jQuery('.modal [name="markdown_description"]').val('Manual Rule Description');
           jQuery('.modal #coding-rules-manual-rule-creation-create').click();
         });
@@ -79,3 +79,69 @@ casper.test.begin('coding-rules-page-should-delete-manual-rules', 3, function (t
         test.done();
       });
 });
+
+
+casper.test.begin(testName('Reactivate'), function (test) {
+  casper
+      .start(lib.buildUrl('coding-rules'), function () {
+        lib.setDefaultViewport();
+
+
+        lib.mockRequestFromFile('/api/rules/app', 'app.json');
+        lib.mockRequestFromFile('/api/rules/search', 'search.json');
+        this.createMock = lib.mockRequestFromFile('/api/rules/create', 'show.json', { status: 409 });
+        lib.mockRequestFromFile('/api/rules/show', 'show.json');
+        lib.mockRequest('/api/issues/search', '{}');
+      })
+
+      .then(function () {
+        casper.evaluate(function () {
+          require(['/js/coding-rules/app.js']);
+          jQuery.ajaxSetup({ dataType: 'json' });
+        });
+      })
+
+      .then(function () {
+        casper.waitForSelector('.js-create-manual-rule', function () {
+          casper.click('.js-create-manual-rule');
+        });
+      })
+
+      .then(function () {
+        casper.waitForSelector('.modal');
+      })
+
+      .then(function () {
+        test.assertNotVisible('.modal #coding-rules-manual-rule-creation-reactivate');
+        test.assertVisible('.modal #coding-rules-manual-rule-creation-create');
+        casper.evaluate(function () {
+          jQuery('.modal [name="name"]').val('Manual Rule').keyup();
+          jQuery('.modal [name="markdown_description"]').val('Manual Rule Description');
+          jQuery('.modal #coding-rules-manual-rule-creation-create').click();
+        });
+        casper.waitForSelector('.modal .alert-warning');
+      })
+
+      .then(function () {
+        test.assertVisible('.modal #coding-rules-manual-rule-creation-reactivate');
+        test.assertNotVisible('.modal #coding-rules-manual-rule-creation-create');
+        lib.clearRequestMock(this.createMock);
+        lib.mockRequestFromFile('/api/rules/create', 'show.json');
+        casper.click('.modal #coding-rules-manual-rule-creation-reactivate');
+        casper.waitForSelector('.coding-rules-detail-header');
+      })
+
+      .then(function () {
+        test.assertSelectorContains('.coding-rules-detail-header', 'Manual Rule');
+        test.assertSelectorContains('.coding-rule-details', 'manual:Manual_Rule');
+        test.assertSelectorContains('.coding-rules-detail-description', 'Manual Rule Description');
+      })
+
+      .then(function () {
+        lib.sendCoverage();
+      })
+
+      .run(function () {
+        test.done();
+      });
+});