mirror of
https://github.com/danielmiessler/fabric
synced 2024-11-08 07:11:06 +00:00
test: core
This commit is contained in:
parent
839c468b2f
commit
58c9af6aac
@ -23,10 +23,6 @@ func (o *Configurable) GetName() string {
|
||||
return o.Label
|
||||
}
|
||||
|
||||
func (o *Configurable) GetSettings() Settings {
|
||||
return o.Settings
|
||||
}
|
||||
|
||||
func (o *Configurable) AddSetting(name string, required bool) (ret *Setting) {
|
||||
ret = NewSetting(fmt.Sprintf("%v%v", o.EnvNamePrefix, BuildEnvVariable(name)), required)
|
||||
o.Settings = append(o.Settings, ret)
|
||||
@ -74,6 +70,10 @@ func (o *Configurable) SetupOrSkip() (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (o *Configurable) SetupFillEnvFileContent(fileEnvFileContent *bytes.Buffer) {
|
||||
o.Settings.FillEnvFileContent(fileEnvFileContent)
|
||||
}
|
||||
|
||||
func NewSetting(envVariable string, required bool) *Setting {
|
||||
return &Setting{
|
||||
EnvVariable: envVariable,
|
||||
|
21
core/chatter_test.go
Normal file
21
core/chatter_test.go
Normal file
@ -0,0 +1,21 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBuildChatSession(t *testing.T) {
|
||||
chat := &Chat{
|
||||
Context: "test context",
|
||||
Pattern: "test pattern",
|
||||
Message: "test message",
|
||||
}
|
||||
session, err := chat.BuildChatSession()
|
||||
if err != nil {
|
||||
t.Fatalf("BuildChatSession() error = %v", err)
|
||||
}
|
||||
|
||||
if session == nil {
|
||||
t.Fatalf("BuildChatSession() returned nil session")
|
||||
}
|
||||
}
|
@ -85,13 +85,13 @@ func (o *Fabric) SaveEnvFile() (err error) {
|
||||
var envFileContent bytes.Buffer
|
||||
|
||||
o.Settings.FillEnvFileContent(&envFileContent)
|
||||
o.PatternsLoader.FillEnvFileContent(&envFileContent)
|
||||
o.PatternsLoader.SetupFillEnvFileContent(&envFileContent)
|
||||
|
||||
for _, vendor := range o.Vendors {
|
||||
vendor.GetSettings().FillEnvFileContent(&envFileContent)
|
||||
vendor.SetupFillEnvFileContent(&envFileContent)
|
||||
}
|
||||
|
||||
o.YouTube.FillEnvFileContent(&envFileContent)
|
||||
o.YouTube.SetupFillEnvFileContent(&envFileContent)
|
||||
|
||||
err = o.Db.SaveEnv(envFileContent.String())
|
||||
return
|
||||
|
48
core/fabric_test.go
Normal file
48
core/fabric_test.go
Normal file
@ -0,0 +1,48 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/danielmiessler/fabric/db"
|
||||
)
|
||||
|
||||
func TestNewFabric(t *testing.T) {
|
||||
_, err := NewFabric(db.NewDb(os.TempDir()))
|
||||
if err == nil {
|
||||
t.Fatal("without setup error expected")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSaveEnvFile(t *testing.T) {
|
||||
fabric := NewFabricBase(db.NewDb(os.TempDir()))
|
||||
|
||||
err := fabric.SaveEnvFile()
|
||||
if err != nil {
|
||||
t.Fatalf("SaveEnvFile() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCopyToClipboard(t *testing.T) {
|
||||
fabric := NewFabricBase(db.NewDb(os.TempDir()))
|
||||
|
||||
message := "test message"
|
||||
err := fabric.CopyToClipboard(message)
|
||||
if err != nil {
|
||||
t.Fatalf("CopyToClipboard() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateOutputFile(t *testing.T) {
|
||||
mockDb := &db.Db{}
|
||||
fabric := NewFabricBase(mockDb)
|
||||
|
||||
fileName := "test_output.txt"
|
||||
message := "test message"
|
||||
err := fabric.CreateOutputFile(message, fileName)
|
||||
if err != nil {
|
||||
t.Fatalf("CreateOutputFile() error = %v", err)
|
||||
}
|
||||
|
||||
defer os.Remove(fileName)
|
||||
}
|
52
core/models_test.go
Normal file
52
core/models_test.go
Normal file
@ -0,0 +1,52 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNewVendorsModels(t *testing.T) {
|
||||
vendors := NewVendorsModels()
|
||||
if vendors == nil {
|
||||
t.Fatalf("NewVendorsModels() returned nil")
|
||||
}
|
||||
if len(vendors.VendorsModels) != 0 {
|
||||
t.Fatalf("NewVendorsModels() returned non-empty VendorsModels map")
|
||||
}
|
||||
}
|
||||
|
||||
func TestFindVendorsByModelFirst(t *testing.T) {
|
||||
vendors := NewVendorsModels()
|
||||
vendors.AddVendorModels("vendor1", []string{"model1", "model2"})
|
||||
vendor := vendors.FindVendorsByModelFirst("model1")
|
||||
if vendor != "vendor1" {
|
||||
t.Fatalf("FindVendorsByModelFirst() = %v, want %v", vendor, "vendor1")
|
||||
}
|
||||
}
|
||||
|
||||
func TestFindVendorsByModel(t *testing.T) {
|
||||
vendors := NewVendorsModels()
|
||||
vendors.AddVendorModels("vendor1", []string{"model1", "model2"})
|
||||
foundVendors := vendors.FindVendorsByModel("model1")
|
||||
if len(foundVendors) != 1 || foundVendors[0] != "vendor1" {
|
||||
t.Fatalf("FindVendorsByModel() = %v, want %v", foundVendors, []string{"vendor1"})
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddVendorModels(t *testing.T) {
|
||||
vendors := NewVendorsModels()
|
||||
vendors.AddVendorModels("vendor1", []string{"model1", "model2"})
|
||||
models := vendors.GetVendorModels("vendor1")
|
||||
if len(models) != 2 {
|
||||
t.Fatalf("AddVendorModels() failed to add models")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddError(t *testing.T) {
|
||||
vendors := NewVendorsModels()
|
||||
err := errors.New("sample error")
|
||||
vendors.AddError(err)
|
||||
if len(vendors.Errs) != 1 {
|
||||
t.Fatalf("AddError() failed to add error")
|
||||
}
|
||||
}
|
129
core/vendors_test.go
Normal file
129
core/vendors_test.go
Normal file
@ -0,0 +1,129 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/danielmiessler/fabric/common"
|
||||
"testing"
|
||||
)
|
||||
|
||||
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(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
|
||||
}
|
7
vendors/vendor.go
vendored
7
vendors/vendor.go
vendored
@ -1,6 +1,9 @@
|
||||
package vendors
|
||||
|
||||
import "github.com/danielmiessler/fabric/common"
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/danielmiessler/fabric/common"
|
||||
)
|
||||
|
||||
type Vendor interface {
|
||||
GetName() string
|
||||
@ -9,6 +12,6 @@ type Vendor interface {
|
||||
ListModels() ([]string, error)
|
||||
SendStream([]*common.Message, *common.ChatOptions, chan string) error
|
||||
Send([]*common.Message, *common.ChatOptions) (string, error)
|
||||
GetSettings() common.Settings
|
||||
Setup() error
|
||||
SetupFillEnvFileContent(*bytes.Buffer)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user