mirror of
https://github.com/fluent/fluentd-ui.git
synced 2026-05-05 19:06:12 +02:00
Add models/plugin_test.rb
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
This commit is contained in:
parent
be4753ab16
commit
9ff7a7ef88
144
test/models/plugin_test.rb
Normal file
144
test/models/plugin_test.rb
Normal file
@ -0,0 +1,144 @@
|
||||
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
|
||||
Loading…
x
Reference in New Issue
Block a user