Skip to content

Commit 7194534

Browse files
committed
update interfaces and adds tests
1 parent 8e29d58 commit 7194534

File tree

2 files changed

+192
-4
lines changed

2 files changed

+192
-4
lines changed

internal/ballot/ballot.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ type AgentInterface interface {
5050
}
5151

5252
type AgentWrapper struct {
53-
agent *api.Agent
53+
agent AgentInterface
5454
}
5555

5656
func (a *AgentWrapper) ServiceRegister(service *api.AgentServiceRegistration) error {
@@ -68,7 +68,7 @@ type CatalogInterface interface {
6868
}
6969

7070
type CatalogWrapper struct {
71-
catalog *api.Catalog
71+
catalog CatalogInterface
7272
}
7373

7474
func (c *CatalogWrapper) Service(serviceName, tag string, q *api.QueryOptions) ([]*api.CatalogService, *api.QueryMeta, error) {
@@ -101,7 +101,7 @@ type SessionInterface interface {
101101
}
102102

103103
type SessionWrapper struct {
104-
session *api.Session
104+
session SessionInterface
105105
}
106106

107107
func (s *SessionWrapper) Create(se *api.SessionEntry, q *api.WriteOptions) (string, *api.WriteMeta, error) {
@@ -128,7 +128,7 @@ type KVInterface interface {
128128
}
129129

130130
type KVWrapper struct {
131-
kv *api.KV
131+
kv KVInterface
132132
}
133133

134134
func (k *KVWrapper) Get(key string, q *api.QueryOptions) (*api.KVPair, *api.QueryMeta, error) {

internal/ballot/ballot_test.go

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ballot
33
import (
44
"context"
55
"encoding/json"
6+
"errors"
67
"fmt"
78
"os/exec"
89
"slices"
@@ -1305,6 +1306,193 @@ func TestElection(t *testing.T) {
13051306
})
13061307
}
13071308

1309+
func TestAgentWrapper_ServiceRegister(t *testing.T) {
1310+
// Arrange
1311+
mockAgent := new(MockAgent)
1312+
agentWrapper := &AgentWrapper{agent: mockAgent}
1313+
1314+
serviceReg := &api.AgentServiceRegistration{
1315+
Name: "test_service",
1316+
}
1317+
1318+
expectedErr := errors.New("registration error")
1319+
mockAgent.On("ServiceRegister", serviceReg).Return(expectedErr)
1320+
1321+
// Act
1322+
err := agentWrapper.ServiceRegister(serviceReg)
1323+
1324+
// Assert
1325+
assert.Equal(t, expectedErr, err)
1326+
mockAgent.AssertCalled(t, "ServiceRegister", serviceReg)
1327+
}
1328+
1329+
func TestAgentWrapper_Service(t *testing.T) {
1330+
// Arrange
1331+
mockAgent := new(MockAgent)
1332+
agentWrapper := &AgentWrapper{agent: mockAgent}
1333+
1334+
serviceID := "test_service_id"
1335+
queryOptions := &api.QueryOptions{}
1336+
1337+
expectedService := &api.AgentService{ID: serviceID}
1338+
expectedMeta := &api.QueryMeta{}
1339+
expectedErr := errors.New("service error")
1340+
1341+
mockAgent.On("Service", serviceID, queryOptions).Return(expectedService, expectedMeta, expectedErr)
1342+
1343+
// Act
1344+
service, meta, err := agentWrapper.Service(serviceID, queryOptions)
1345+
1346+
// Assert
1347+
assert.Equal(t, expectedService, service)
1348+
assert.Equal(t, expectedMeta, meta)
1349+
assert.Equal(t, expectedErr, err)
1350+
mockAgent.AssertCalled(t, "Service", serviceID, queryOptions)
1351+
}
1352+
1353+
func TestCatalogWrapper_Service(t *testing.T) {
1354+
// Arrange
1355+
mockCatalog := new(MockCatalog)
1356+
catalogWrapper := &CatalogWrapper{catalog: mockCatalog}
1357+
1358+
serviceName := "test_service"
1359+
tag := "test_tag"
1360+
queryOptions := &api.QueryOptions{}
1361+
1362+
expectedServices := []*api.CatalogService{
1363+
{ServiceName: serviceName},
1364+
}
1365+
expectedMeta := &api.QueryMeta{}
1366+
expectedErr := errors.New("catalog service error")
1367+
1368+
mockCatalog.On("Service", serviceName, tag, queryOptions).Return(expectedServices, expectedMeta, expectedErr)
1369+
1370+
// Act
1371+
services, meta, err := catalogWrapper.Service(serviceName, tag, queryOptions)
1372+
1373+
// Assert
1374+
assert.Equal(t, expectedServices, services)
1375+
assert.Equal(t, expectedMeta, meta)
1376+
assert.Equal(t, expectedErr, err)
1377+
mockCatalog.AssertCalled(t, "Service", serviceName, tag, queryOptions)
1378+
}
1379+
1380+
func TestCatalogWrapper_Register(t *testing.T) {
1381+
// Arrange
1382+
mockCatalog := new(MockCatalog)
1383+
catalogWrapper := &CatalogWrapper{catalog: mockCatalog}
1384+
1385+
registration := &api.CatalogRegistration{}
1386+
writeOptions := &api.WriteOptions{}
1387+
1388+
expectedMeta := &api.WriteMeta{}
1389+
expectedErr := errors.New("register error")
1390+
1391+
mockCatalog.On("Register", registration, writeOptions).Return(expectedMeta, expectedErr)
1392+
1393+
// Act
1394+
meta, err := catalogWrapper.Register(registration, writeOptions)
1395+
1396+
// Assert
1397+
assert.Equal(t, expectedMeta, meta)
1398+
assert.Equal(t, expectedErr, err)
1399+
mockCatalog.AssertCalled(t, "Register", registration, writeOptions)
1400+
}
1401+
1402+
func TestSessionWrapper_Create(t *testing.T) {
1403+
// Arrange
1404+
mockSession := new(MockSession)
1405+
sessionWrapper := &SessionWrapper{session: mockSession}
1406+
1407+
sessionEntry := &api.SessionEntry{}
1408+
writeOptions := &api.WriteOptions{}
1409+
1410+
expectedID := "session_id"
1411+
expectedMeta := &api.WriteMeta{}
1412+
expectedErr := errors.New("session create error")
1413+
1414+
mockSession.On("Create", sessionEntry, writeOptions).Return(expectedID, expectedMeta, expectedErr)
1415+
1416+
// Act
1417+
sessionID, meta, err := sessionWrapper.Create(sessionEntry, writeOptions)
1418+
1419+
// Assert
1420+
assert.Equal(t, expectedID, sessionID)
1421+
assert.Equal(t, expectedMeta, meta)
1422+
assert.Equal(t, expectedErr, err)
1423+
mockSession.AssertCalled(t, "Create", sessionEntry, writeOptions)
1424+
}
1425+
1426+
func TestSessionWrapper_RenewPeriodic(t *testing.T) {
1427+
// Arrange
1428+
mockSession := new(MockSession)
1429+
sessionWrapper := &SessionWrapper{session: mockSession}
1430+
1431+
initialTTL := "15s"
1432+
sessionID := "session_id"
1433+
writeOptions := &api.WriteOptions{}
1434+
doneCh := make(chan struct{})
1435+
1436+
expectedErr := errors.New("renew error")
1437+
1438+
mockSession.On("RenewPeriodic", initialTTL, sessionID, writeOptions, doneCh).Return(expectedErr)
1439+
1440+
// Act
1441+
err := sessionWrapper.RenewPeriodic(initialTTL, sessionID, writeOptions, doneCh)
1442+
1443+
// Assert
1444+
assert.Equal(t, expectedErr, err)
1445+
mockSession.AssertCalled(t, "RenewPeriodic", initialTTL, sessionID, writeOptions, doneCh)
1446+
}
1447+
1448+
func TestKVWrapper_Get(t *testing.T) {
1449+
// Arrange
1450+
mockKV := new(MockKV)
1451+
kvWrapper := &KVWrapper{kv: mockKV}
1452+
1453+
key := "test_key"
1454+
queryOptions := &api.QueryOptions{}
1455+
1456+
expectedKVPair := &api.KVPair{Key: key}
1457+
expectedMeta := &api.QueryMeta{}
1458+
expectedErr := errors.New("get error")
1459+
1460+
mockKV.On("Get", key, queryOptions).Return(expectedKVPair, expectedMeta, expectedErr)
1461+
1462+
// Act
1463+
kvPair, meta, err := kvWrapper.Get(key, queryOptions)
1464+
1465+
// Assert
1466+
assert.Equal(t, expectedKVPair, kvPair)
1467+
assert.Equal(t, expectedMeta, meta)
1468+
assert.Equal(t, expectedErr, err)
1469+
mockKV.AssertCalled(t, "Get", key, queryOptions)
1470+
}
1471+
1472+
func TestKVWrapper_Acquire(t *testing.T) {
1473+
// Arrange
1474+
mockKV := new(MockKV)
1475+
kvWrapper := &KVWrapper{kv: mockKV}
1476+
1477+
kvPair := &api.KVPair{Key: "test_key"}
1478+
writeOptions := &api.WriteOptions{}
1479+
1480+
expectedSuccess := true
1481+
expectedMeta := &api.WriteMeta{}
1482+
expectedErr := errors.New("acquire error")
1483+
1484+
mockKV.On("Acquire", kvPair, writeOptions).Return(expectedSuccess, expectedMeta, expectedErr)
1485+
1486+
// Act
1487+
success, meta, err := kvWrapper.Acquire(kvPair, writeOptions)
1488+
1489+
// Assert
1490+
assert.Equal(t, expectedSuccess, success)
1491+
assert.Equal(t, expectedMeta, meta)
1492+
assert.Equal(t, expectedErr, err)
1493+
mockKV.AssertCalled(t, "Acquire", kvPair, writeOptions)
1494+
}
1495+
13081496
// MockConsulClient is a mock implementation of the api.Client interface
13091497
type MockConsulClient struct {
13101498
mock.Mock

0 commit comments

Comments
 (0)