Skip to content

Commit 059cea0

Browse files
authored
test(plugins): add registry tests and mock completions (#225)
1 parent 9d3e567 commit 059cea0

6 files changed

Lines changed: 311 additions & 2 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package depsync
2+
3+
import (
4+
"testing"
5+
6+
"github.com/indaco/sley/internal/plugins"
7+
"github.com/indaco/sley/internal/semver"
8+
)
9+
10+
func TestDeriveDependencyName(t *testing.T) {
11+
tests := []struct {
12+
name string
13+
path string
14+
expected string
15+
}{
16+
{
17+
name: "version file returns parent dir",
18+
path: "subdir/.version",
19+
expected: "subdir",
20+
},
21+
{
22+
name: "nested version file returns parent dir",
23+
path: "a/b/c/.version",
24+
expected: "c",
25+
},
26+
{
27+
name: "package.json returns filename",
28+
path: "frontend/package.json",
29+
expected: "package.json",
30+
},
31+
{
32+
name: "plain filename",
33+
path: "go.mod",
34+
expected: "go.mod",
35+
},
36+
}
37+
38+
for _, tt := range tests {
39+
t.Run(tt.name, func(t *testing.T) {
40+
got := deriveDependencyName(tt.path)
41+
if got != tt.expected {
42+
t.Errorf("deriveDependencyName(%q) = %q, want %q", tt.path, got, tt.expected)
43+
}
44+
})
45+
}
46+
}
47+
48+
func TestSyncDependencies_NilChecker(t *testing.T) {
49+
registry := plugins.NewPluginRegistry()
50+
ver := semver.SemVersion{Major: 1, Minor: 0, Patch: 0}
51+
52+
err := SyncDependencies(registry, ver)
53+
if err != nil {
54+
t.Errorf("expected nil error when no dependency checker, got %v", err)
55+
}
56+
}

internal/core/mocks.go

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,17 +349,25 @@ type MockGitTagOperations struct {
349349
// Error responses for each operation
350350
CreateAnnotatedTagErr error
351351
CreateLightweightTagErr error
352+
CreateSignedTagErr error
352353
TagExistsErr error
353354
GetLatestTagErr error
354355
PushTagErr error
356+
ListTagsErr error
357+
DeleteTagErr error
358+
DeleteRemoteTagErr error
355359

356360
// Response values
357361
TagExistsResult bool
358362
GetLatestTagName string
363+
ListTagsResult []string
359364

360365
// Call tracking
361-
CreatedTags []string
362-
PushedTags []string
366+
CreatedTags []string
367+
PushedTags []string
368+
DeletedTags []string
369+
DeletedRemote []string
370+
ListTagsCalled bool
363371
}
364372

365373
// NewMockGitTagOperations creates a new MockGitTagOperations.
@@ -418,6 +426,46 @@ func (m *MockGitTagOperations) PushTag(name string) error {
418426
return nil
419427
}
420428

429+
func (m *MockGitTagOperations) CreateSignedTag(name, message, keyID string) error {
430+
m.mu.Lock()
431+
defer m.mu.Unlock()
432+
if m.CreateSignedTagErr != nil {
433+
return m.CreateSignedTagErr
434+
}
435+
m.CreatedTags = append(m.CreatedTags, name)
436+
return nil
437+
}
438+
439+
func (m *MockGitTagOperations) ListTags(pattern string) ([]string, error) {
440+
m.mu.Lock()
441+
defer m.mu.Unlock()
442+
m.ListTagsCalled = true
443+
if m.ListTagsErr != nil {
444+
return nil, m.ListTagsErr
445+
}
446+
return m.ListTagsResult, nil
447+
}
448+
449+
func (m *MockGitTagOperations) DeleteTag(name string) error {
450+
m.mu.Lock()
451+
defer m.mu.Unlock()
452+
if m.DeleteTagErr != nil {
453+
return m.DeleteTagErr
454+
}
455+
m.DeletedTags = append(m.DeletedTags, name)
456+
return nil
457+
}
458+
459+
func (m *MockGitTagOperations) DeleteRemoteTag(name string) error {
460+
m.mu.Lock()
461+
defer m.mu.Unlock()
462+
if m.DeleteRemoteTagErr != nil {
463+
return m.DeleteRemoteTagErr
464+
}
465+
m.DeletedRemote = append(m.DeletedRemote, name)
466+
return nil
467+
}
468+
421469
// MockGitCommitOperations is a mock git commit operations for testing.
422470
type MockGitCommitOperations struct {
423471
mu sync.Mutex
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package changelogparser
2+
3+
import "testing"
4+
5+
func TestRegisterAndGet(t *testing.T) {
6+
ResetChangelogParser()
7+
defer ResetChangelogParser()
8+
9+
cfg := &Config{Enabled: true, Path: "CHANGELOG.md"}
10+
Register(cfg)
11+
12+
cp := GetChangelogParserFn()
13+
if cp == nil {
14+
t.Fatal("expected changelog parser to be registered")
15+
}
16+
17+
plugin, ok := cp.(*ChangelogParserPlugin)
18+
if !ok {
19+
t.Fatal("expected ChangelogParserPlugin type")
20+
}
21+
22+
if !plugin.IsEnabled() {
23+
t.Error("expected plugin to be enabled")
24+
}
25+
}
26+
27+
func TestGetReturnsNilWhenNotRegistered(t *testing.T) {
28+
ResetChangelogParser()
29+
defer ResetChangelogParser()
30+
31+
cp := GetChangelogParserFn()
32+
if cp != nil {
33+
t.Error("expected nil when not registered")
34+
}
35+
}
36+
37+
func TestReset(t *testing.T) {
38+
ResetChangelogParser()
39+
defer ResetChangelogParser()
40+
41+
Register(&Config{Enabled: true})
42+
ResetChangelogParser()
43+
44+
cp := GetChangelogParserFn()
45+
if cp != nil {
46+
t.Error("expected nil after reset")
47+
}
48+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package dependencycheck
2+
3+
import "testing"
4+
5+
func TestRegisterAndGet(t *testing.T) {
6+
ResetDependencyChecker()
7+
defer ResetDependencyChecker()
8+
9+
cfg := &Config{Enabled: true, AutoSync: true}
10+
Register(cfg)
11+
12+
dc := GetDependencyCheckerFn()
13+
if dc == nil {
14+
t.Fatal("expected dependency checker to be registered")
15+
}
16+
17+
plugin, ok := dc.(*DependencyCheckerPlugin)
18+
if !ok {
19+
t.Fatal("expected DependencyCheckerPlugin type")
20+
}
21+
22+
if !plugin.IsEnabled() {
23+
t.Error("expected plugin to be enabled")
24+
}
25+
}
26+
27+
func TestGetReturnsNilWhenNotRegistered(t *testing.T) {
28+
ResetDependencyChecker()
29+
defer ResetDependencyChecker()
30+
31+
dc := GetDependencyCheckerFn()
32+
if dc != nil {
33+
t.Error("expected nil when not registered")
34+
}
35+
}
36+
37+
func TestReset(t *testing.T) {
38+
ResetDependencyChecker()
39+
defer ResetDependencyChecker()
40+
41+
Register(&Config{Enabled: true})
42+
ResetDependencyChecker()
43+
44+
dc := GetDependencyCheckerFn()
45+
if dc != nil {
46+
t.Error("expected nil after reset")
47+
}
48+
}
49+
50+
func TestUnregister(t *testing.T) {
51+
ResetDependencyChecker()
52+
defer ResetDependencyChecker()
53+
54+
Register(&Config{Enabled: true})
55+
Unregister()
56+
57+
dc := GetDependencyCheckerFn()
58+
if dc != nil {
59+
t.Error("expected nil after unregister")
60+
}
61+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package releasegate
2+
3+
import "testing"
4+
5+
func TestRegisterAndGet(t *testing.T) {
6+
Unregister()
7+
defer Unregister()
8+
9+
cfg := &Config{Enabled: true}
10+
Register(cfg)
11+
12+
rg := GetReleaseGateFn()
13+
if rg == nil {
14+
t.Fatal("expected release gate to be registered")
15+
}
16+
17+
plugin, ok := rg.(*ReleaseGatePlugin)
18+
if !ok {
19+
t.Fatal("expected ReleaseGatePlugin type")
20+
}
21+
22+
if !plugin.IsEnabled() {
23+
t.Error("expected plugin to be enabled")
24+
}
25+
}
26+
27+
func TestGetReturnsNilWhenNotRegistered(t *testing.T) {
28+
Unregister()
29+
defer Unregister()
30+
31+
rg := GetReleaseGateFn()
32+
if rg != nil {
33+
t.Error("expected nil when not registered")
34+
}
35+
}
36+
37+
func TestRegistryUnregister(t *testing.T) {
38+
Unregister()
39+
defer Unregister()
40+
41+
Register(&Config{Enabled: true})
42+
Unregister()
43+
44+
rg := GetReleaseGateFn()
45+
if rg != nil {
46+
t.Error("expected nil after unregister")
47+
}
48+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package versionvalidator
2+
3+
import "testing"
4+
5+
func TestRegisterAndGet(t *testing.T) {
6+
Unregister()
7+
defer Unregister()
8+
9+
cfg := &Config{Enabled: true}
10+
Register(cfg)
11+
12+
vv := GetVersionValidatorFn()
13+
if vv == nil {
14+
t.Fatal("expected version validator to be registered")
15+
}
16+
17+
plugin, ok := vv.(*VersionValidatorPlugin)
18+
if !ok {
19+
t.Fatal("expected VersionValidatorPlugin type")
20+
}
21+
22+
if !plugin.IsEnabled() {
23+
t.Error("expected plugin to be enabled")
24+
}
25+
}
26+
27+
func TestGetReturnsNilWhenNotRegistered(t *testing.T) {
28+
Unregister()
29+
defer Unregister()
30+
31+
vv := GetVersionValidatorFn()
32+
if vv != nil {
33+
t.Error("expected nil when not registered")
34+
}
35+
}
36+
37+
func TestRegistryUnregister(t *testing.T) {
38+
Unregister()
39+
defer Unregister()
40+
41+
Register(&Config{Enabled: true})
42+
Unregister()
43+
44+
vv := GetVersionValidatorFn()
45+
if vv != nil {
46+
t.Error("expected nil after unregister")
47+
}
48+
}

0 commit comments

Comments
 (0)