discourse/spec/serializers/admin_plugin_serializer_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

96 lines
3.0 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
RSpec.describe AdminPluginSerializer do
subject(:serializer) { described_class.new(instance) }
let(:all_test_plugins) { Plugin::Instance.find_all("#{Rails.root}/spec/fixtures/plugins") }
let(:instance) { all_test_plugins.find { |plugin| plugin.name == "color_definition" } }
describe "admin_route" do
it "returns the correct values when use_new_show_route is false" do
instance.expects(:admin_route).returns(
location: "admin",
label: "admin.test",
use_new_show_route: false,
)
expect(serializer.admin_route).to eq(
location: "admin",
label: "admin.test",
full_location: "adminPlugins.admin",
use_new_show_route: false,
)
end
it "returns the correct values when use_new_show_route is true" do
instance.expects(:admin_route).returns(
location: "admin",
label: "admin.test",
use_new_show_route: true,
)
expect(serializer.admin_route).to eq(
location: "admin",
label: "admin.test",
full_location: "adminPlugins.show",
use_new_show_route: true,
)
end
end
describe "has_settings" do
it "is false for plugins with no settings" do
expect(described_class.new(instance).has_settings).to eq(false)
end
it "is true for plugins with settings" do
SiteSetting.expects(:plugins).returns(
{
"color_definition_enabled" => "color_definition",
"color_definition_api_key" => "color_definition",
},
)
expect(described_class.new(instance).has_settings).to eq(true)
end
end
describe "has_only_enabled_settings" do
it "is false for plugins with no settings" do
expect(described_class.new(instance).has_settings).to eq(false)
end
it "is true if only enabled_site_setting is present for the plugin" do
SiteSetting.expects(:plugins).returns({ "color_definition_enabled" => "color_definition" })
expect(described_class.new(instance).has_settings).to eq(true)
end
it "is false if there are other settings for the plugin" do
SiteSetting.expects(:plugins).returns(
{
"color_definition_enabled" => "color_definition",
"color_definition_api_key" => "color_definition",
},
)
expect(described_class.new(instance).has_only_enabled_setting).to eq(false)
end
end
describe "enabled_setting" do
it "should return the right value" do
instance.enabled_site_setting("test")
expect(serializer.enabled_setting).to eq("test")
end
end
describe "commit_hash" do
it "should return commit_hash and commit_url" do
git_repo = instance.git_repo
git_repo.stubs(:latest_local_commit).returns("123456")
git_repo.stubs(:url).returns("http://github.com/discourse/discourse-plugin")
expect(serializer.commit_hash).to eq("123456")
expect(serializer.commit_url).to eq(
"http://github.com/discourse/discourse-plugin/commit/123456",
)
end
end
end