@@ -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