Skip to content
This repository was archived by the owner on Oct 24, 2025. It is now read-only.

Commit 2ba0106

Browse files
committed
fix: treecluster tests
1 parent c7166e9 commit 2ba0106

1 file changed

Lines changed: 41 additions & 7 deletions

File tree

internal/service/domain/treecluster/treecluster_test.go

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ func TestTreeClusterService_Create(t *testing.T) {
158158
mock.Anything,
159159
).Return(expectedCluster, nil)
160160

161+
// UpdateWateringStatuses
162+
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(testClusters, int64(len(testClusters)), nil)
163+
161164
clusterRepo.EXPECT().GetAllLatestSensorDataByClusterID(
162165
ctx,
163166
int32(1),
@@ -208,6 +211,9 @@ func TestTreeClusterService_Create(t *testing.T) {
208211
mock.Anything,
209212
).Return(expectedCluster, nil)
210213

214+
// UpdateWateringStatuses
215+
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(testClusters, int64(len(testClusters)), nil)
216+
211217
clusterRepo.EXPECT().GetAllLatestSensorDataByClusterID(
212218
ctx,
213219
int32(2),
@@ -297,6 +303,9 @@ func TestTreeClusterService_Create(t *testing.T) {
297303
mock.Anything,
298304
).Return(expectedCluster, nil)
299305

306+
// UpdateWateringStatuses
307+
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(testClusters, int64(len(testClusters)), nil)
308+
300309
clusterRepo.EXPECT().GetAllLatestSensorDataByClusterID(
301310
ctx,
302311
int32(1),
@@ -390,6 +399,9 @@ func TestTreeClusterService_Update(t *testing.T) {
390399
mock.Anything,
391400
).Return(nil)
392401

402+
// UpdateWateringStatuses
403+
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(testClusters, int64(len(testClusters)), nil)
404+
393405
// when
394406
result, err := svc.Update(ctx, clusterID, updatedCluster)
395407

@@ -432,6 +444,9 @@ func TestTreeClusterService_Update(t *testing.T) {
432444
mock.Anything,
433445
).Return(nil)
434446

447+
// UpdateWateringStatuses
448+
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(testClusters, int64(len(testClusters)), nil)
449+
435450
// when
436451
result, err := svc.Update(ctx, expectedCluster.ID, updatedClusterEmptyTrees)
437452

@@ -590,6 +605,9 @@ func TestTreeClusterService_EventSystem(t *testing.T) {
590605
mock.Anything,
591606
).Return(nil)
592607

608+
// UpdateWateringStatuses
609+
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(testClusters, int64(len(testClusters)), nil)
610+
593611
svc := NewTreeClusterService(clusterRepo, treeRepo, regionRepo, eventManager)
594612

595613
// when
@@ -696,11 +714,13 @@ func TestTreeClusterService_UpdateWateringStatuses(t *testing.T) {
696714
staleCluster := &entities.TreeCluster{
697715
ID: 1,
698716
LastWatered: &staleDate, // Older than 24h
717+
Trees: testTrees,
699718
WateringStatus: entities.WateringStatusJustWatered,
700719
}
701720
recentCluster := &entities.TreeCluster{
702721
ID: 2,
703722
LastWatered: &recentDate,
723+
Trees: testTrees,
704724
WateringStatus: entities.WateringStatusJustWatered,
705725
}
706726
expectList := []*entities.TreeCluster{staleCluster, recentCluster}
@@ -722,34 +742,48 @@ func TestTreeClusterService_UpdateWateringStatuses(t *testing.T) {
722742
clusterRepo.AssertExpectations(t)
723743
})
724744

725-
t.Run("should do nothing when there are no tree cluster with correct watering status", func(t *testing.T) {
745+
t.Run("should update watering status to unknown when tree cluster has no trees", func(t *testing.T) {
726746
// given
727747
ctx := context.Background()
728748
clusterRepo := storageMock.NewMockTreeClusterRepository(t)
729749
treeRepo := storageMock.NewMockTreeRepository(t)
730750
regionRepo := storageMock.NewMockRegionRepository(t)
731751
svc := NewTreeClusterService(clusterRepo, treeRepo, regionRepo, globalEventManager)
732752

753+
staleDate := time.Now().Add(-34 * time.Hour)
733754
recentDate := time.Now().Add(-2 * time.Hour)
734-
recentCluster := &entities.TreeCluster{
755+
756+
staleCluster := &entities.TreeCluster{
735757
ID: 1,
758+
LastWatered: &staleDate, // Older than 24h
759+
Trees: nil,
760+
WateringStatus: entities.WateringStatusJustWatered,
761+
}
762+
recentCluster := &entities.TreeCluster{
763+
ID: 2,
736764
LastWatered: &recentDate,
765+
Trees: nil,
737766
WateringStatus: entities.WateringStatusJustWatered,
738767
}
739-
740-
expectList := []*entities.TreeCluster{recentCluster}
768+
expectList := []*entities.TreeCluster{staleCluster, recentCluster}
741769

742770
// when
743771
clusterRepo.EXPECT().GetAll(mock.Anything, entities.TreeClusterQuery{}).Return(expectList, int64(len(expectList)), nil)
772+
clusterRepo.EXPECT().GetAllLatestSensorDataByClusterID(mock.Anything, staleCluster.ID).Return(allLatestSensorData, nil)
773+
treeRepo.EXPECT().GetBySensorIDs(ctx, "sensor-1").Return(testTrees, nil)
774+
clusterRepo.EXPECT().Update(mock.Anything, staleCluster.ID, mock.Anything).Return(nil)
775+
clusterRepo.EXPECT().Update(mock.Anything, recentCluster.ID, mock.Anything).Return(nil)
744776

745777
err := svc.UpdateWateringStatuses(ctx)
746778

747779
// then
748780
assert.NoError(t, err)
749781
clusterRepo.AssertCalled(t, "GetAll", mock.Anything, entities.TreeClusterQuery{})
750-
clusterRepo.AssertNotCalled(t, "GetAllLatestSensorDataByClusterID")
751-
clusterRepo.AssertNotCalled(t, "GetBySensorIDs")
752-
clusterRepo.AssertNotCalled(t, "Update")
782+
clusterRepo.AssertCalled(t, "GetAllLatestSensorDataByClusterID", mock.Anything, staleCluster.ID)
783+
// clusterRepo.AssertCalled(t, "GetAllLatestSensorDataByClusterID", mock.Anything, recentCluster.ID)
784+
treeRepo.AssertCalled(t, "GetBySensorIDs", mock.Anything, mock.Anything)
785+
clusterRepo.AssertCalled(t, "Update", mock.Anything, staleCluster.ID, mock.Anything)
786+
clusterRepo.AssertCalled(t, "Update", mock.Anything, recentCluster.ID, mock.Anything)
753787
clusterRepo.AssertExpectations(t)
754788
})
755789

0 commit comments

Comments
 (0)