]> source.dussan.org Git - sonarqube.git/commitdiff
fix issue with component favorite
authorStas Vilchik <vilchiks@gmail.com>
Thu, 11 Jun 2015 11:32:51 +0000 (13:32 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Thu, 11 Jun 2015 11:32:51 +0000 (13:32 +0200)
server/sonar-web/src/main/js/apps/nav/context-navbar-view.js
server/sonar-web/src/test/js/nav-spec.js
server/sonar-web/src/test/json/nav-spec/component.json

index 2ff9d41d518a39ab7760de2c031fc220e75c8a30..5d0b8c1c9d01be3c874175a569fa009ed117acb6 100644 (file)
@@ -49,13 +49,20 @@ define([
     },
 
     onFavoriteClick: function () {
-      var that = this,
-          url = baseUrl + '/favourites/toggle/' + this.model.get('contextId'),
-          isContextFavorite = this.model.get('isContextFavorite');
-      this.model.set({ isContextFavorite: !isContextFavorite });
-      return $.post(url).fail(function () {
-        that.model.set({ isContextFavorite: isContextFavorite });
-      });
+      var that = this;
+      var component = this.model.get('component'),
+          isFavorite = component.isFavorite,
+          urlSuffix = (isFavorite ? '/' : '?key=') + encodeURIComponent(component.key),
+          opts = {
+            url: baseUrl + '/api/favourites' + urlSuffix,
+            success: function () {
+              component.isFavorite = !isFavorite;
+              that.model.trigger('change:component');
+            }
+          };
+      opts.type = isFavorite ? 'DELETE': 'POST';
+      console.log(isFavorite, component);
+      return $.ajax(opts);
     },
 
     serializeData: function () {
index 9f5864db8db7225e1f4e264f13cf96b428549b22..e62bc2ced18c8cd09a30cec1660e15641c80cbb4 100644 (file)
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-/* globals casper: false */
-
-var lib = require('../lib'),
-    testName = lib.testName('Navigation');
-
-
-lib.initMessages();
-lib.changeWorkingDirectory('nav-spec');
-lib.configureCasper();
-
-
-casper.test.begin(testName('Global Spaces'), 7, function (test) {
-  casper
-      .start(lib.buildUrl('nav'), function () {
-        lib.setDefaultViewport();
-
-        lib.mockRequestFromFile('/api/navigation/global', 'global.json');
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          window.SS.isUserAdmin = false;
-          window.navbarOptions = new Backbone.Model();
-          require(['apps/nav/app']);
+/* globals describe:false, it:false */
+var lib = require('../lib');
+
+describe('Navigation App', function () {
+
+  it('should show global spaces', 7, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav'), function () {
+          lib.setDefaultViewport();
+          lib.fmock('/api/navigation/global', 'global.json');
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForSelector('.navbar-global .nav');
+        })
+
+        .then(function () {
+          // check global spaces
+          test.assertExists('.navbar-global a[href*="/issues"]');
+          test.assertExists('.navbar-global a[href*="/measures"]');
+          test.assertExists('.navbar-global a[href*="/coding_rules"]');
+          test.assertExists('.navbar-global a[href*="/profiles"]');
+          test.assertExists('.navbar-global a[href*="/quality_gates"]');
+
+          // should not see settings
+          test.assertDoesntExist('.navbar-global a[href*="/settings"]');
+
+          // check "more"
+          test.assertExists('.navbar-global a[href*="/comparison"]');
         });
-      })
-
-      .then(function () {
-        casper.waitForSelector('.navbar-global .nav');
-      })
-
-      .then(function () {
-        // check global spaces
-        test.assertExists('.navbar-global a[href*="/issues"]');
-        test.assertExists('.navbar-global a[href*="/measures"]');
-        test.assertExists('.navbar-global a[href*="/coding_rules"]');
-        test.assertExists('.navbar-global a[href*="/profiles"]');
-        test.assertExists('.navbar-global a[href*="/quality_gates"]');
-
-        // should not see settings
-        test.assertDoesntExist('.navbar-global a[href*="/settings"]');
-
-        // check "more"
-        test.assertExists('.navbar-global a[href*="/comparison"]');
-      })
-
-      .then(function () {
-        lib.sendCoverage();
-      })
-
-      .run(function () {
-        test.done();
-      });
-});
-
-
-casper.test.begin(testName('Global Dashboards'), 12, function (test) {
-  casper
-      .start(lib.buildUrl('nav'), function () {
-        lib.setDefaultViewport();
-
-        lib.mockRequestFromFile('/api/navigation/global', 'global.json');
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          window.SS.isUserAdmin = false;
-          window.navbarOptions = new Backbone.Model();
-
-          require(['apps/nav/app']);
+  });
+
+  it('should show global dashboards', 12, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav'), function () {
+          lib.setDefaultViewport();
+          lib.fmock('/api/navigation/global', 'global.json');
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForSelector('.navbar-global a[href*="/dashboard/index?did=1"]');
+        })
+
+        .then(function () {
+          // check links existence
+          test.assertExists('.navbar-global a[href*="/dashboard/index?did=1"]');
+          test.assertSelectorContains('.navbar-global a[href*="/dashboard/index?did=1"]', 'First Global Dashboard');
+          test.assertExists('.navbar-global a[href*="/dashboard/index?did=2"]');
+          test.assertSelectorContains('.navbar-global a[href*="/dashboard/index?did=2"]', 'Second Global Dashboard');
+          test.assertExists('.navbar-global a[href*="/dashboard/index?did=3"]');
+          test.assertSelectorContains('.navbar-global a[href*="/dashboard/index?did=3"]', 'Third Global Dashboard');
+        })
+
+        .then(function () {
+          // check that dashboards are not visible by default
+          test.assertNotVisible('.navbar-global a[href*="/dashboard/index?did=1"]');
+          test.assertNotVisible('.navbar-global a[href*="/dashboard/index?did=2"]');
+          test.assertNotVisible('.navbar-global a[href*="/dashboard/index?did=3"]');
+
+          // check dropdown
+          casper.click('.navbar-global .t-dashboards [data-toggle="dropdown"]');
+          test.assertVisible('.navbar-global a[href*="/dashboard/index?did=1"]');
+          test.assertVisible('.navbar-global a[href*="/dashboard/index?did=2"]');
+          test.assertVisible('.navbar-global a[href*="/dashboard/index?did=3"]');
         });
-      })
-
-      .then(function () {
-        casper.waitForSelector('.navbar-global a[href*="/dashboard/index?did=1"]');
-      })
-
-      .then(function () {
-        // check links existence
-        test.assertExists('.navbar-global a[href*="/dashboard/index?did=1"]');
-        test.assertSelectorContains('.navbar-global a[href*="/dashboard/index?did=1"]', 'First Global Dashboard');
-        test.assertExists('.navbar-global a[href*="/dashboard/index?did=2"]');
-        test.assertSelectorContains('.navbar-global a[href*="/dashboard/index?did=2"]', 'Second Global Dashboard');
-        test.assertExists('.navbar-global a[href*="/dashboard/index?did=3"]');
-        test.assertSelectorContains('.navbar-global a[href*="/dashboard/index?did=3"]', 'Third Global Dashboard');
-      })
-
-      .then(function () {
-        // check that dashboards are not visible by default
-        test.assertNotVisible('.navbar-global a[href*="/dashboard/index?did=1"]');
-        test.assertNotVisible('.navbar-global a[href*="/dashboard/index?did=2"]');
-        test.assertNotVisible('.navbar-global a[href*="/dashboard/index?did=3"]');
-
-        // check dropdown
-        casper.click('.navbar-global .t-dashboards [data-toggle="dropdown"]');
-        test.assertVisible('.navbar-global a[href*="/dashboard/index?did=1"]');
-        test.assertVisible('.navbar-global a[href*="/dashboard/index?did=2"]');
-        test.assertVisible('.navbar-global a[href*="/dashboard/index?did=3"]');
-      })
-
-      .then(function () {
-        lib.sendCoverage();
-      })
-
-      .run(function () {
-        test.done();
-      });
-});
-
-
-casper.test.begin(testName('Global Plugin Pages'), 12, function (test) {
-  casper
-      .start(lib.buildUrl('nav'), function () {
-        lib.setDefaultViewport();
-
-        lib.mockRequestFromFile('/api/navigation/global', 'global.json');
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          window.SS.isUserAdmin = false;
-          window.navbarOptions = new Backbone.Model();
-
-          require(['apps/nav/app']);
+  });
+
+  it('should show global plugin pages', 12, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav'), function () {
+          lib.setDefaultViewport();
+          lib.fmock('/api/navigation/global', 'global.json');
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForSelector('.navbar-global a[href*="/page/1"]');
+        })
+
+        .then(function () {
+          // check links existence
+          test.assertExists('.navbar-global a[href*="/page/1"]');
+          test.assertSelectorContains('.navbar-global a[href*="/page/1"]', 'First Global Page');
+          test.assertExists('.navbar-global a[href*="/page/2"]');
+          test.assertSelectorContains('.navbar-global a[href*="/page/2"]', 'Second Global Page');
+          test.assertExists('.navbar-global a[href*="/page/3"]');
+          test.assertSelectorContains('.navbar-global a[href*="/page/3"]', 'Third Global Page');
+        })
+
+        .then(function () {
+          // check that pages are not visible by default
+          test.assertNotVisible('.navbar-global a[href*="/page/1"]');
+          test.assertNotVisible('.navbar-global a[href*="/page/2"]');
+          test.assertNotVisible('.navbar-global a[href*="/page/3"]');
+
+          // check dropdown
+          casper.click('.navbar-global .t-more [data-toggle="dropdown"]');
+          test.assertVisible('.navbar-global a[href*="/page/1"]');
+          test.assertVisible('.navbar-global a[href*="/page/2"]');
+          test.assertVisible('.navbar-global a[href*="/page/3"]');
         });
-      })
-
-      .then(function () {
-        casper.waitForSelector('.navbar-global a[href*="/page/1"]');
-      })
-
-      .then(function () {
-        // check links existence
-        test.assertExists('.navbar-global a[href*="/page/1"]');
-        test.assertSelectorContains('.navbar-global a[href*="/page/1"]', 'First Global Page');
-        test.assertExists('.navbar-global a[href*="/page/2"]');
-        test.assertSelectorContains('.navbar-global a[href*="/page/2"]', 'Second Global Page');
-        test.assertExists('.navbar-global a[href*="/page/3"]');
-        test.assertSelectorContains('.navbar-global a[href*="/page/3"]', 'Third Global Page');
-      })
-
-      .then(function () {
-        // check that pages are not visible by default
-        test.assertNotVisible('.navbar-global a[href*="/page/1"]');
-        test.assertNotVisible('.navbar-global a[href*="/page/2"]');
-        test.assertNotVisible('.navbar-global a[href*="/page/3"]');
-
-        // check dropdown
-        casper.click('.navbar-global .t-more [data-toggle="dropdown"]');
-        test.assertVisible('.navbar-global a[href*="/page/1"]');
-        test.assertVisible('.navbar-global a[href*="/page/2"]');
-        test.assertVisible('.navbar-global a[href*="/page/3"]');
-      })
-
-      .then(function () {
-        lib.sendCoverage();
-      })
-
-      .run(function () {
-        test.done();
-      });
-});
-
-
-casper.test.begin(testName('Login'), 3, function (test) {
-  casper
-      .start(lib.buildUrl('nav#anchor'), function () {
-        lib.setDefaultViewport();
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          window.SS.isUserAdmin = false;
-          window.navbarOptions = new Backbone.Model();
-
-          require(['apps/nav/app']);
+  });
+
+  it('should show login form', 3, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav#anchor'), function () {
+          lib.setDefaultViewport();
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForSelector('.navbar-global .nav');
+        })
+
+        .then(function () {
+          test.assertExists('.navbar-global .js-login');
+          casper.click('.navbar-global .js-login');
+          casper.waitForUrl('/sessions/new?return_to=', function () {
+            test.assertUrlMatches('/pages/nav');
+            test.assertUrlMatches('#anchor');
+          });
         });
-      })
-
-      .then(function () {
-        casper.waitForSelector('.navbar-global .nav');
-      })
-
-      .then(function () {
-        test.assertExists('.navbar-global .js-login');
-        casper.click('.navbar-global .js-login');
-        casper.waitForUrl('/sessions/new?return_to=', function () {
-          test.assertUrlMatches('/pages/nav');
-          test.assertUrlMatches('#anchor');
+  });
+
+  it('should search', 24, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav'), function () {
+          lib.setDefaultViewport();
+          lib.fmock('/api/navigation/global', 'global.json');
+          lib.fmock('/api/components/suggestions', 'search.json');
+          lib.fmock('/api/favourites', 'favorite.json');
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.user = 'user';
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            window.localStorage.setItem('sonar_recent_history',
+                '[{"key":"localhistoryproject","name":"Local History Project","icon":"trk"}]');
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForSelector('.navbar-global a[href*="/page/1"]');
+        })
+
+        .then(function () {
+          test.assertExists('.navbar-global .js-search-dropdown-toggle');
+          casper.click('.navbar-global .js-search-dropdown-toggle');
+          casper.waitForSelector('.navbar-search');
+        })
+
+        .then(function () {
+          // for top-level qualifiers
+          test.assertExists('.js-search-results a[href*="/all_projects?qualifier=TRK"]');
+          test.assertExists('.js-search-results a[href*="/all_projects?qualifier=VW"]');
+          test.assertExists('.js-search-results a[href*="/all_projects?qualifier=DEV"]');
+
+          // browsed recently
+          test.assertExists('.js-search-results a[href*="localhistoryproject"]');
+          test.assertSelectorContains('.js-search-results a[href*="localhistoryproject"]', 'Local History Project');
+
+          // favorite
+          test.assertExists('.js-search-results a[href*="favorite-project-key"]');
+          test.assertSelectorContains('.js-search-results a[href*="favorite-project-key"]', 'Favorite Project');
+          test.assertExists('.js-search-results a[href*="favorite-file-key"]');
+          test.assertSelectorContains('.js-search-results a[href*="favorite-file-key"]', 'FavoriteFile.java');
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            jQuery('.navbar-search [name="q"]').val('quality').keyup();
+          });
+          casper.evaluate(function () {
+            jQuery('.navbar-search [name="q"]').keyup();
+          });
+          casper.waitForSelectorTextChange('.js-search-results');
+        })
+
+        .then(function () {
+          test.assertElementCount('.js-search-results a', 7);
+          test.assertExists('.js-search-results a[href*="/profiles"]');
+          test.assertExists('.js-search-results a[href*="/quality_gates"]');
+          test.assertExists('.js-search-results a[href*="/dashboard/index?did=50"]');
+          test.assertExists('.js-search-results a[href*="quality-project"]');
+          test.assertSelectorContains('.js-search-results a', 'SonarQube Java');
+          test.assertSelectorContains('.js-search-results a', 'SonarQube Java :: Squid');
+          test.assertSelectorContains('.js-search-results a', 'SonarQube Java :: Checks');
+        })
+
+        .then(function () {
+          // should reset search results
+          casper.evaluate(function () {
+            jQuery('.navbar-search [name="q"]').val('').keyup();
+          });
+          casper.waitForSelectorTextChange('.js-search-results');
+        })
+
+        .then(function () {
+          test.assertSelectorDoesntContain('.js-search-results a', 'SonarQube Java');
+          test.assertExists('.js-search-results a[href*="/all_projects?qualifier=TRK"]');
+          test.assertExists('.js-search-results a[href*="/all_projects?qualifier=VW"]');
+          test.assertExists('.js-search-results a[href*="/all_projects?qualifier=DEV"]');
+
+          test.assertExists('.js-search-results a[href*="localhistoryproject"]');
+          test.assertSelectorContains('.js-search-results a[href*="localhistoryproject"]', 'Local History Project');
         });
-      })
-
-      .then(function () {
-        lib.sendCoverage();
-      })
-
-      .run(function () {
-        test.done();
-      });
-});
-
-
-casper.test.begin(testName('Search'), 24, function (test) {
-  casper
-      .start(lib.buildUrl('nav'), function () {
-        lib.setDefaultViewport();
-
-        lib.mockRequestFromFile('/api/navigation/global', 'global.json');
-        lib.mockRequestFromFile('/api/components/suggestions', 'search.json');
-        lib.mockRequestFromFile('/api/favourites', 'favorite.json');
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          window.SS.user = 'user';
-          window.SS.isUserAdmin = false;
-          window.navbarOptions = new Backbone.Model();
-          window.localStorage.setItem('sonar_recent_history',
-              '[{"key":"localhistoryproject","name":"Local History Project","icon":"trk"}]');
-
-          require(['apps/nav/app']);
-        });
-      })
-
-      .then(function () {
-        casper.waitForSelector('.navbar-global a[href*="/page/1"]');
-      })
-
-      .then(function () {
-        test.assertExists('.navbar-global .js-search-dropdown-toggle');
-        casper.click('.navbar-global .js-search-dropdown-toggle');
-        casper.waitForSelector('.navbar-search');
-      })
-
-      .then(function () {
-        // for top-level qualifiers
-        test.assertExists('.js-search-results a[href*="/all_projects?qualifier=TRK"]');
-        test.assertExists('.js-search-results a[href*="/all_projects?qualifier=VW"]');
-        test.assertExists('.js-search-results a[href*="/all_projects?qualifier=DEV"]');
-
-        // browsed recently
-        test.assertExists('.js-search-results a[href*="localhistoryproject"]');
-        test.assertSelectorContains('.js-search-results a[href*="localhistoryproject"]', 'Local History Project');
-
-        // favorite
-        test.assertExists('.js-search-results a[href*="favorite-project-key"]');
-        test.assertSelectorContains('.js-search-results a[href*="favorite-project-key"]', 'Favorite Project');
-        test.assertExists('.js-search-results a[href*="favorite-file-key"]');
-        test.assertSelectorContains('.js-search-results a[href*="favorite-file-key"]', 'FavoriteFile.java');
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          jQuery('.navbar-search [name="q"]').val('quality').keyup();
-        });
-        casper.evaluate(function () {
-          jQuery('.navbar-search [name="q"]').keyup();
-        });
-        casper.waitForSelectorTextChange('.js-search-results');
-      })
-
-      .then(function () {
-        test.assertElementCount('.js-search-results a', 7);
-        test.assertExists('.js-search-results a[href*="/profiles"]');
-        test.assertExists('.js-search-results a[href*="/quality_gates"]');
-        test.assertExists('.js-search-results a[href*="/dashboard/index?did=50"]');
-        test.assertExists('.js-search-results a[href*="quality-project"]');
-        test.assertSelectorContains('.js-search-results a', 'SonarQube Java');
-        test.assertSelectorContains('.js-search-results a', 'SonarQube Java :: Squid');
-        test.assertSelectorContains('.js-search-results a', 'SonarQube Java :: Checks');
-      })
-
-      .then(function () {
-        // should reset search results
-        casper.evaluate(function () {
-          jQuery('.navbar-search [name="q"]').val('').keyup();
+  });
+
+  it('should show context bar', 3, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav'), function () {
+          lib.setDefaultViewport();
+          lib.fmock('/api/navigation/component', 'component.json',
+              { data: { componentKey: 'org.codehaus.sonar-plugins.java:java' } });
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            window.navbarOptions.set({ space: 'component', componentKey: 'org.codehaus.sonar-plugins.java:java' });
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForText('SonarQube Java');
+        })
+
+        .then(function () {
+          test.assertSelectorContains('.navbar-context .nav-crumbs', 'SonarQube Java');
+          test.assertSelectorContains('.navbar-context .navbar-context-meta', '2.9-SNAPSHOT');
+          test.assertSelectorContains('.navbar-context .navbar-context-meta', '2015');
         });
-        casper.waitForSelectorTextChange('.js-search-results');
-      })
-
-      .then(function () {
-        test.assertSelectorDoesntContain('.js-search-results a', 'SonarQube Java');
-        test.assertExists('.js-search-results a[href*="/all_projects?qualifier=TRK"]');
-        test.assertExists('.js-search-results a[href*="/all_projects?qualifier=VW"]');
-        test.assertExists('.js-search-results a[href*="/all_projects?qualifier=DEV"]');
-
-        test.assertExists('.js-search-results a[href*="localhistoryproject"]');
-        test.assertSelectorContains('.js-search-results a[href*="localhistoryproject"]', 'Local History Project');
-      })
-
-      .then(function () {
-        lib.sendCoverage();
-      })
-
-      .run(function () {
-        test.done();
-      });
-});
-
-
-casper.test.begin(testName('Context'), function (test) {
-  casper
-      .start(lib.buildUrl('nav'), function () {
-        lib.setDefaultViewport();
-
-        lib.mockRequestFromFile('/api/navigation/component', 'component.json',
-            { data: { componentKey: 'org.codehaus.sonar-plugins.java:java' } });
-      })
-
-      .then(function () {
-        casper.evaluate(function () {
-          window.SS.isUserAdmin = false;
-          window.navbarOptions = new Backbone.Model();
-          window.navbarOptions.set({ space: 'component', componentKey: 'org.codehaus.sonar-plugins.java:java' });
-
-          require(['apps/nav/app']);
+  });
+
+  it('should favorite component', 1, function (casper, test) {
+    return casper
+        .start(lib.buildUrl('nav'), function () {
+          lib.setDefaultViewport();
+          lib.fmock('/api/navigation/component', 'component.json',
+              { data: { componentKey: 'org.codehaus.sonar-plugins.java:java' } });
+          lib.smock('/api/favourites?key=org.codehaus.sonar-plugins.java%3Ajava', '{}', { data: { type: 'POST' } });
+          lib.smock('/api/favourites/org.codehaus.sonar-plugins.java%3Ajava', '{}', { data: { type: 'DELETE' } });
+        })
+
+        .then(function () {
+          casper.evaluate(function () {
+            window.SS.isUserAdmin = false;
+            window.navbarOptions = new Backbone.Model();
+            window.navbarOptions.set({ space: 'component', componentKey: 'org.codehaus.sonar-plugins.java:java' });
+            require(['apps/nav/app']);
+          });
+        })
+
+        .then(function () {
+          casper.waitForText('SonarQube Java');
+        })
+
+        .then(function () {
+          lib.capture();
+          test.assertExists('.js-favorite.icon-not-favorite');
+          casper.click('.js-favorite');
+          casper.waitForSelector('.js-favorite.icon-favorite');
+        })
+
+        .then(function () {
+          casper.click('.js-favorite');
+          casper.waitForSelector('.js-favorite.icon-not-favorite');
         });
-      })
-
-      .then(function () {
-        casper.waitForText('SonarQube Java');
-      })
-
-      .then(function () {
-        test.assertSelectorContains('.navbar-context .nav-crumbs', 'SonarQube Java');
-        test.assertSelectorContains('.navbar-context .navbar-context-meta', '2.9-SNAPSHOT');
-        test.assertSelectorContains('.navbar-context .navbar-context-meta', '2015');
-      })
-
-      .then(function () {
-        lib.sendCoverage();
-      })
+  });
 
-      .run(function () {
-        test.done();
-      });
 });
index aaa0c919da2f5f97764923e9f87144941d313e58..c55e713e463e027ad8b829f54e5cedce20a77db5 100644 (file)
@@ -3,7 +3,7 @@
   "uuid": "acfc6a2d-d28c-4302-987c-697544fb096e",
   "name": "MAIF :: Cobol plugin",
   "isComparable": true,
-  "canBeFavorite": false,
+  "canBeFavorite": true,
   "isFavorite": false,
   "dashboards": [
     {