diff options
| -rw-r--r-- | service/pixelated/resources/features_resource.py | 15 | ||||
| -rw-r--r-- | web-ui/app/js/page/feedback.js | 9 | ||||
| -rw-r--r-- | web-ui/test/spec/page/feedback.spec.js | 25 | 
3 files changed, 37 insertions, 12 deletions
| diff --git a/service/pixelated/resources/features_resource.py b/service/pixelated/resources/features_resource.py index 6a1a49ca..0770d867 100644 --- a/service/pixelated/resources/features_resource.py +++ b/service/pixelated/resources/features_resource.py @@ -20,13 +20,14 @@ from twisted.web.resource import Resource  class FeaturesResource(Resource): -    DISABLED_FEATURES = ['draftReply'] -      isLeaf = True      def render_GET(self, request): -        try: -            disabled_features = {'logout': os.environ['DISPATCHER_LOGOUT_URL']} -        except KeyError: -            disabled_features = {} -        return respond_json({'disabled_features': self.DISABLED_FEATURES, 'dispatcher_features': disabled_features}, request) +        disabled_features = ['draftReply'] +        dispatcher_features = {'logout': os.environ.get('DISPATCHER_LOGOUT_URL')} + +        if not os.environ.get('FEEDBACK_ENABLE'): +            self.DISABLED_FEATURES.append('feedback') + +        return respond_json( +            {'disabled_features': disabled_features, 'dispatcher_features': dispatcher_features}, request) diff --git a/web-ui/app/js/page/feedback.js b/web-ui/app/js/page/feedback.js index 34af9b67..48747280 100644 --- a/web-ui/app/js/page/feedback.js +++ b/web-ui/app/js/page/feedback.js @@ -15,7 +15,8 @@   * along with Pixelated. If not, see <http://www.gnu.org/licenses/>.   */ -define(['flight/lib/component', 'views/templates', 'page/events'], function (defineComponent, templates, events) { +define(['flight/lib/component', 'views/templates', 'page/events', 'features'], +    function (defineComponent, templates, events, features) {    'use strict';    return defineComponent(function () { @@ -28,8 +29,10 @@ define(['flight/lib/component', 'views/templates', 'page/events'], function (def      }      this.after('initialize', function () { -      this.render(); -      this.on('click', this.onClick); +      if (features.isEnabled('feedback')) { +          this.render(); +          this.on('click', this.onClick); +      }      });    }); diff --git a/web-ui/test/spec/page/feedback.spec.js b/web-ui/test/spec/page/feedback.spec.js index 1435a4b8..fd46fe5b 100644 --- a/web-ui/test/spec/page/feedback.spec.js +++ b/web-ui/test/spec/page/feedback.spec.js @@ -1,9 +1,30 @@  describeComponent('page/feedback', function () {    'use strict'; -  describe('feedback link', function () { +  describe('Feedback form', function () { +   var features; -    it('should trigger ui:feedback:open event on click', function () { +    beforeEach(function() { +      features = require('features'); +    }); + +    it('Should provide feedback link if logout is enabled', function () { +      spyOn(features, 'isEnabled').and.returnValue(true); +      this.setupComponent('<nav id="feedback"></nav>', {}); + +      var feedback_link = this.component.$node.find('a')[0]; +      expect(feedback_link).toExist(); +    }); + +    it('Should not provide feedback link if disabled', function() { +      spyOn(features, 'isEnabled').and.returnValue(false); +      this.setupComponent('<nav id="feedback"></nav>', {}); + +      var feedback_link = this.component.$node.find('a')[0]; +      expect(feedback_link).not.toExist(); +    }); + +    it('Should trigger ui:feedback:open event on click', function () {        this.setupComponent('<nav id="feedback"></nav>', {});        var spy = spyOnEvent(document, Pixelated.events.ui.feedback.open); | 
