From 8d46de48199b817aecc71c1350dc54ebf1cdfa26 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 10 Feb 2015 11:18:16 -0500 Subject: [PATCH] Add a spec for the new plugins controller --- .../admin/routes/admin-plugins.js.es6 | 2 +- app/controllers/admin/plugins_controller.rb | 3 +-- lib/discourse.rb | 15 ++++++-------- .../admin/plugins_controller_spec.rb | 20 +++++++++++++++++++ 4 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 spec/controllers/admin/plugins_controller_spec.rb diff --git a/app/assets/javascripts/admin/routes/admin-plugins.js.es6 b/app/assets/javascripts/admin/routes/admin-plugins.js.es6 index 6cf5c11b5..3e8246ccc 100644 --- a/app/assets/javascripts/admin/routes/admin-plugins.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-plugins.js.es6 @@ -1,6 +1,6 @@ export default Ember.Route.extend({ model() { - return Discourse.ajax("/admin/plugins.json"); + return Discourse.ajax("/admin/plugins.json").then(res => res.plugins); }, actions: { diff --git a/app/controllers/admin/plugins_controller.rb b/app/controllers/admin/plugins_controller.rb index 743fe97d2..516c1e056 100644 --- a/app/controllers/admin/plugins_controller.rb +++ b/app/controllers/admin/plugins_controller.rb @@ -1,8 +1,7 @@ class Admin::PluginsController < Admin::AdminController def index - # json = Discourse.plugins.map(&:metadata) - render_serialized(Discourse.plugins, AdminPluginSerializer) + render_serialized(Discourse.plugins, AdminPluginSerializer, root: 'plugins') end end diff --git a/lib/discourse.rb b/lib/discourse.rb index 0e299758e..81c7f4d74 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -85,12 +85,11 @@ module Discourse end def self.disabled_plugin_names - return [] if @plugins.blank? - @plugins.select {|p| !p.enabled?}.map(&:name) + plugins.select {|p| !p.enabled?}.map(&:name) end def self.plugins - @plugins + @plugins ||= [] end def self.assets_digest @@ -119,12 +118,10 @@ module Discourse def self.auth_providers providers = [] - if plugins - plugins.each do |p| - next unless p.auth_providers - p.auth_providers.each do |prov| - providers << prov - end + plugins.each do |p| + next unless p.auth_providers + p.auth_providers.each do |prov| + providers << prov end end providers diff --git a/spec/controllers/admin/plugins_controller_spec.rb b/spec/controllers/admin/plugins_controller_spec.rb new file mode 100644 index 000000000..f4b70bac0 --- /dev/null +++ b/spec/controllers/admin/plugins_controller_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe Admin::PluginsController do + + it "is a subclass of AdminController" do + expect(Admin::PluginsController < Admin::AdminController).to eq(true) + end + + context "while logged in as an admin" do + let!(:admin) { log_in(:admin) } + + it 'should return JSON' do + xhr :get, :index + response.should be_success + ::JSON.parse(response.body).has_key?('plugins').should == true + end + end + +end +