Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 85 lines 2.3 kB view raw
1# frozen_string_literal: true 2 3require_relative "test_helper" 4 5class PluginTest < Minitest::Test 6 class TestPlugin < Rockbox::Plugin 7 attr_reader :installed_with, :uninstalled 8 9 def initialize(name = "test-plugin") 10 super() 11 @plugin_name = name 12 @uninstalled = false 13 end 14 15 def name; @plugin_name; end 16 def version; "1.0.0"; end 17 18 def install(ctx) 19 @installed_with = ctx 20 end 21 22 def uninstall 23 @uninstalled = true 24 end 25 end 26 27 def setup 28 @registry = Rockbox::PluginRegistry.new 29 @events = Rockbox::EventEmitter.new 30 @ctx = Rockbox::PluginContext.new(query: ->(_, _ = nil) {}, events: @events) 31 end 32 33 def test_register_calls_install_with_context 34 plugin = TestPlugin.new 35 @registry.register(plugin, @ctx) 36 assert_same @ctx, plugin.installed_with 37 assert @registry.installed?("test-plugin") 38 end 39 40 def test_double_register_raises 41 @registry.register(TestPlugin.new, @ctx) 42 assert_raises(ArgumentError) { @registry.register(TestPlugin.new, @ctx) } 43 end 44 45 def test_unregister_calls_uninstall 46 plugin = TestPlugin.new 47 @registry.register(plugin, @ctx) 48 @registry.unregister("test-plugin") 49 assert plugin.uninstalled 50 refute @registry.installed?("test-plugin") 51 end 52 53 def test_unregister_unknown_is_a_noop 54 assert_nil @registry.unregister("nope") 55 end 56 57 def test_list_returns_registered_plugins 58 a = TestPlugin.new("a") 59 b = TestPlugin.new("b") 60 @registry.register(a, @ctx) 61 @registry.register(b, @ctx) 62 assert_equal %w[a b], @registry.list.map(&:name).sort 63 end 64 65 def test_plugin_base_class_defaults 66 base = Rockbox::Plugin.new 67 assert_raises(NotImplementedError) { base.name } 68 assert_equal "0.0.0", base.version 69 assert_nil base.description 70 assert_nil base.install(nil) 71 assert_nil base.uninstall 72 end 73 74 def test_plugin_context_query_bang_delegates 75 captured = nil 76 ctx = Rockbox::PluginContext.new( 77 query: ->(q, vars = nil) { captured = [q, vars]; { ok: true } }, 78 events: @events 79 ) 80 result = ctx.query!("query Foo { foo }", { id: 1 }) 81 assert_equal({ ok: true }, result) 82 assert_equal "query Foo { foo }", captured[0] 83 assert_equal({ id: 1 }, captured[1]) 84 end 85end