mirror of
https://github.com/fluent/fluentd-ui.git
synced 2025-08-07 14:57:18 +02:00
145 lines
4.3 KiB
Ruby
145 lines
4.3 KiB
Ruby
require "test_helper"
|
|
|
|
class PluginTest < ActiveSupport::TestCase
|
|
setup do
|
|
@plugin = FactoryBot.build(:plugin)
|
|
end
|
|
|
|
sub_test_case ".installed" do
|
|
setup do
|
|
gem_list = <<-GEM_LIST.strip_heredoc
|
|
dummy (3.3.3)
|
|
fluent-plugin-foo (0.1.2)
|
|
more_dummy (0.0.1)
|
|
GEM_LIST
|
|
stub(FluentGem).gem { "gem" }
|
|
stub(FluentGem).__double_definition_create__.call(:`, "gem list 2>&1") { gem_list }
|
|
@target = Plugin.new(gem_name: "fluent-plugin-foo", version: "0.1.2")
|
|
end
|
|
|
|
test "detect foo plugin" do
|
|
assert_equal(@target.inspect, Plugin.installed.first.inspect)
|
|
end
|
|
|
|
test "detected foo plugin is marked as installed" do
|
|
assert do
|
|
@target.installed?
|
|
end
|
|
end
|
|
|
|
test "detected foo plugin version to be installed_version" do
|
|
assert_equal(@target.version, @target.installed_version)
|
|
end
|
|
end
|
|
|
|
sub_test_case "#valid?" do
|
|
data("nil is invalid" => [nil, false],
|
|
"something filled is valid" => ["foobar", true])
|
|
test "gem_name" do |(name, is_valid)|
|
|
@plugin.gem_name = name
|
|
assert_equal(is_valid, @plugin.valid?)
|
|
end
|
|
|
|
data("nil is invalid" => [nil, false],
|
|
"something filled is valid" => ["0.0.1", true])
|
|
test "version" do |(version, is_valid)|
|
|
@plugin.version = version
|
|
assert_equal(is_valid, @plugin.valid?)
|
|
end
|
|
end
|
|
|
|
sub_test_case "#install!" do
|
|
def install_plugin(is_valid, is_installed)
|
|
stub(@plugin).valid? { is_valid }
|
|
stub(@plugin).installed? { is_installed }
|
|
@plugin.install!
|
|
end
|
|
|
|
|
|
data("installed" => [true, 0],
|
|
"not installed" => [false, 1])
|
|
test "valid" do |(is_installed, n)|
|
|
mock(FluentGem).install(anything, "--no-ri", "--no-rdoc", "-v", anything).times(n) {}
|
|
install_plugin(true, is_installed)
|
|
end
|
|
|
|
data("installed" => [true, :install],
|
|
"not installed" => [false, :installed])
|
|
test "invalid" do |(is_installed, method)|
|
|
mock(FluentGem).__send__(method).times(0)
|
|
install_plugin(false, is_installed)
|
|
end
|
|
|
|
test "system command error" do
|
|
stub(FluentGem).gem { "gem" }
|
|
mock(FluentGem).system("gem", "install", "fluent-plugin-dummy", "--no-ri", "--no-rdoc", "-v", "1.2.3").at_least(1) { false }
|
|
assert_raise(FluentGem::GemError.new("failed command: `gem install fluent-plugin-dummy --no-ri --no-rdoc -v 1.2.3`")) do
|
|
@plugin.install!
|
|
end
|
|
end
|
|
end
|
|
|
|
data("installed" => [true, 1],
|
|
"uninstalled" => [false, 0])
|
|
test "#uninstall!" do |(is_installed, n)|
|
|
installed_plugin = FactoryBot.build(:plugin, gem_name: "fluent-plugin-foobar")
|
|
mock(installed_plugin).installed? { is_installed }
|
|
mock(installed_plugin).gem_uninstall.times(n) {}
|
|
installed_plugin.uninstall!
|
|
end
|
|
|
|
test "#upgrade!" do
|
|
installed_plugin = FactoryBot.build(:plugin, gem_name: "fluent-plugin-foobar", version: "1.0.0")
|
|
stub(installed_plugin).installed? { true }
|
|
stub(FluentGem).gem { "gem" }
|
|
stub(FluentGem).run("gem", "install", "fluent-plugin-foobar", "--no-ri", "--no-rdoc", "-v", "1.2.0") { true }
|
|
mock(installed_plugin).uninstall! {}
|
|
mock(FluentGem).install("fluent-plugin-foobar", "--no-ri", "--no-rdoc", "-v", "1.2.0") {}
|
|
installed_plugin.upgrade!("1.2.0")
|
|
end
|
|
|
|
test "#to_param" do
|
|
assert do
|
|
@plugin.to_param == @plugin.gem_name
|
|
end
|
|
end
|
|
|
|
sub_test_case "Gem version" do
|
|
setup do
|
|
@plugin = FactoryBot.build(:plugin, version: "1.0.0")
|
|
@versions = %w(1.0.1 0.99.1 1.0.0 0.99.0 0.1.0 0.0.3 0.0.2 0.0.1)
|
|
@authors = %w(foo bar)
|
|
json_response = @versions.map do |version|
|
|
{
|
|
number: version,
|
|
summary: "summary of #{version}",
|
|
authors: @authors
|
|
}
|
|
end.to_json
|
|
stub_request(:get, @plugin.gem_json_url).to_return(body: json_response)
|
|
end
|
|
|
|
test "latest version is 1.0.0" do
|
|
assert_equal("1.0.1", @plugin.latest_version)
|
|
end
|
|
|
|
test "1.0.0 is not lates" do
|
|
assert do
|
|
!@plugin.latest_version?
|
|
end
|
|
end
|
|
|
|
test "released_versions is sorted" do
|
|
assert_equal(@versions.sort_by{|ver| Gem::Version.new(ver) }.reverse, @plugin.released_versions)
|
|
end
|
|
|
|
test "authors" do
|
|
assert_equal(@authors, @plugin.authors)
|
|
end
|
|
|
|
test "summary" do
|
|
assert_equal("summary of #{@plugin.version}", @plugin.summary)
|
|
end
|
|
end
|
|
end
|