mirror of
https://github.com/navidrome/navidrome.git
synced 2026-01-03 06:15:22 +00:00
82 lines
2.2 KiB
Go
82 lines
2.2 KiB
Go
package plugins
|
|
|
|
import (
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
// mockFunctionChecker implements functionExistsChecker for testing
|
|
type mockFunctionChecker struct {
|
|
functions map[string]bool
|
|
}
|
|
|
|
func (m *mockFunctionChecker) FunctionExists(name string) bool {
|
|
return m.functions[name]
|
|
}
|
|
|
|
var _ = Describe("Capabilities", func() {
|
|
Describe("detectCapabilities", func() {
|
|
It("detects MetadataAgent capability when plugin exports artist biography function", func() {
|
|
checker := &mockFunctionChecker{
|
|
functions: map[string]bool{
|
|
FuncGetArtistBiography: true,
|
|
},
|
|
}
|
|
|
|
caps := detectCapabilities(checker)
|
|
Expect(caps).To(ContainElement(CapabilityMetadataAgent))
|
|
})
|
|
|
|
It("detects MetadataAgent capability when plugin exports multiple functions", func() {
|
|
checker := &mockFunctionChecker{
|
|
functions: map[string]bool{
|
|
FuncGetArtistMBID: true,
|
|
FuncGetArtistURL: true,
|
|
FuncGetAlbumInfo: true,
|
|
FuncGetAlbumImages: true,
|
|
},
|
|
}
|
|
|
|
caps := detectCapabilities(checker)
|
|
Expect(caps).To(ContainElement(CapabilityMetadataAgent))
|
|
Expect(caps).To(HaveLen(1)) // Should only have one MetadataAgent capability
|
|
})
|
|
|
|
It("returns empty slice when no capability functions are exported", func() {
|
|
checker := &mockFunctionChecker{
|
|
functions: map[string]bool{
|
|
"some_other_function": true,
|
|
},
|
|
}
|
|
|
|
caps := detectCapabilities(checker)
|
|
Expect(caps).To(BeEmpty())
|
|
})
|
|
|
|
It("returns empty slice when plugin exports no functions", func() {
|
|
checker := &mockFunctionChecker{
|
|
functions: map[string]bool{},
|
|
}
|
|
|
|
caps := detectCapabilities(checker)
|
|
Expect(caps).To(BeEmpty())
|
|
})
|
|
})
|
|
|
|
Describe("hasCapability", func() {
|
|
It("returns true when capability exists", func() {
|
|
caps := []Capability{CapabilityMetadataAgent}
|
|
Expect(hasCapability(caps, CapabilityMetadataAgent)).To(BeTrue())
|
|
})
|
|
|
|
It("returns false when capability does not exist", func() {
|
|
var caps []Capability
|
|
Expect(hasCapability(caps, CapabilityMetadataAgent)).To(BeFalse())
|
|
})
|
|
|
|
It("returns false when capabilities slice is nil", func() {
|
|
Expect(hasCapability(nil, CapabilityMetadataAgent)).To(BeFalse())
|
|
})
|
|
})
|
|
})
|