mirror of
https://github.com/danielmiessler/fabric
synced 2024-11-08 07:11:06 +00:00
21f4b5f774
In golang, contexts should be propagated downwards in order to be able to provide features such as cancellation. This commit refactors the Vendor interface to accept a context as a first parameter so that it can be propagated downwards.
132 lines
3.1 KiB
Go
132 lines
3.1 KiB
Go
package core
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/danielmiessler/fabric/common"
|
|
)
|
|
|
|
func TestNewVendorsManager(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
if vendorsManager == nil {
|
|
t.Fatalf("NewVendorsManager() returned nil")
|
|
}
|
|
}
|
|
|
|
func TestAddVendors(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
mockVendor := &MockVendor{name: "testVendor"}
|
|
vendorsManager.AddVendors(mockVendor)
|
|
|
|
if _, exists := vendorsManager.Vendors[mockVendor.GetName()]; !exists {
|
|
t.Fatalf("AddVendors() did not add vendor")
|
|
}
|
|
}
|
|
|
|
func TestGetModels(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
mockVendor := &MockVendor{name: "testVendor"}
|
|
vendorsManager.AddVendors(mockVendor)
|
|
|
|
models := vendorsManager.GetModels()
|
|
if models == nil {
|
|
t.Fatalf("GetModels() returned nil")
|
|
}
|
|
}
|
|
|
|
func TestHasVendors(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
if vendorsManager.HasVendors() {
|
|
t.Fatalf("HasVendors() should return false for an empty manager")
|
|
}
|
|
|
|
mockVendor := &MockVendor{name: "testVendor"}
|
|
vendorsManager.AddVendors(mockVendor)
|
|
if !vendorsManager.HasVendors() {
|
|
t.Fatalf("HasVendors() should return true after adding a vendor")
|
|
}
|
|
}
|
|
|
|
func TestFindByName(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
mockVendor := &MockVendor{name: "testVendor"}
|
|
vendorsManager.AddVendors(mockVendor)
|
|
|
|
foundVendor := vendorsManager.FindByName("testVendor")
|
|
if foundVendor == nil {
|
|
t.Fatalf("FindByName() did not find added vendor")
|
|
}
|
|
}
|
|
|
|
func TestReadModels(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
mockVendor := &MockVendor{name: "testVendor"}
|
|
vendorsManager.AddVendors(mockVendor)
|
|
|
|
vendorsManager.readModels()
|
|
if vendorsManager.Models == nil || len(vendorsManager.Models.Vendors) == 0 {
|
|
t.Fatalf("readModels() did not read models correctly")
|
|
}
|
|
}
|
|
|
|
func TestSetup(t *testing.T) {
|
|
vendorsManager := NewVendorsManager()
|
|
mockVendor := &MockVendor{name: "testVendor"}
|
|
vendorsManager.AddVendors(mockVendor)
|
|
|
|
vendors, err := vendorsManager.Setup()
|
|
if err != nil {
|
|
t.Fatalf("Setup() error = %v", err)
|
|
}
|
|
if len(vendors) == 0 {
|
|
t.Fatalf("Setup() did not setup any vendors")
|
|
}
|
|
}
|
|
|
|
// MockVendor is a mock implementation of the Vendor interface for testing purposes.
|
|
type MockVendor struct {
|
|
*common.Settings
|
|
name string
|
|
}
|
|
|
|
func (o *MockVendor) SendStream(messages []*common.Message, options *common.ChatOptions, strings chan string) error {
|
|
// TODO implement me
|
|
panic("implement me")
|
|
}
|
|
|
|
func (o *MockVendor) Send(ctx context.Context, messages []*common.Message, options *common.ChatOptions) (string, error) {
|
|
// TODO implement me
|
|
panic("implement me")
|
|
}
|
|
|
|
func (o *MockVendor) SetupFillEnvFileContent(buffer *bytes.Buffer) {
|
|
// TODO implement me
|
|
panic("implement me")
|
|
}
|
|
|
|
func (o *MockVendor) IsConfigured() bool {
|
|
return false
|
|
}
|
|
|
|
func (o *MockVendor) GetSettings() *common.Settings {
|
|
return o.Settings
|
|
}
|
|
|
|
func (o *MockVendor) GetName() string {
|
|
return o.name
|
|
}
|
|
|
|
func (o *MockVendor) Configure() error {
|
|
return nil
|
|
}
|
|
|
|
func (o *MockVendor) Setup() error {
|
|
return nil
|
|
}
|
|
|
|
func (o *MockVendor) ListModels() ([]string, error) {
|
|
return []string{"model1", "model2"}, nil
|
|
}
|