(t *testing.T)
| 123 | } |
| 124 | |
| 125 | func TestManager_AddDependency(t *testing.T) { |
| 126 | t.Parallel() |
| 127 | |
| 128 | t.Run("AddDependencyBetweenRegisteredUnits", func(t *testing.T) { |
| 129 | t.Parallel() |
| 130 | |
| 131 | manager := unit.NewManager() |
| 132 | |
| 133 | // Given: units A and B are registered |
| 134 | err := manager.Register(unitA) |
| 135 | require.NoError(t, err) |
| 136 | err = manager.Register(unitB) |
| 137 | require.NoError(t, err) |
| 138 | |
| 139 | // Given: Unit A depends on Unit B being unit.StatusStarted |
| 140 | err = manager.AddDependency(unitA, unitB, unit.StatusStarted) |
| 141 | require.NoError(t, err) |
| 142 | |
| 143 | // Then: Unit A should not be ready (depends on B) |
| 144 | u, err := manager.Unit(unitA) |
| 145 | require.NoError(t, err) |
| 146 | assert.Equal(t, unit.StatusPending, u.Status()) |
| 147 | isReady, err := manager.IsReady(unitA) |
| 148 | require.NoError(t, err) |
| 149 | assert.False(t, isReady) |
| 150 | |
| 151 | // Then: Unit B should still be ready (no dependencies) |
| 152 | u, err = manager.Unit(unitB) |
| 153 | require.NoError(t, err) |
| 154 | assert.Equal(t, unit.StatusPending, u.Status()) |
| 155 | isReady, err = manager.IsReady(unitB) |
| 156 | require.NoError(t, err) |
| 157 | assert.True(t, isReady) |
| 158 | |
| 159 | // When: Unit B is started |
| 160 | err = manager.UpdateStatus(unitB, unit.StatusStarted) |
| 161 | require.NoError(t, err) |
| 162 | |
| 163 | // Then: Unit A should be ready, because its dependency is now in the desired state. |
| 164 | isReady, err = manager.IsReady(unitA) |
| 165 | require.NoError(t, err) |
| 166 | assert.True(t, isReady) |
| 167 | |
| 168 | // When: Unit B is stopped |
| 169 | err = manager.UpdateStatus(unitB, unit.StatusPending) |
| 170 | require.NoError(t, err) |
| 171 | |
| 172 | // Then: Unit A should no longer be ready, because its dependency is not in the desired state. |
| 173 | isReady, err = manager.IsReady(unitA) |
| 174 | require.NoError(t, err) |
| 175 | assert.False(t, isReady) |
| 176 | }) |
| 177 | |
| 178 | t.Run("AddDependencyByAnUnregisteredDependentUnit", func(t *testing.T) { |
| 179 | t.Parallel() |
| 180 | |
| 181 | manager := unit.NewManager() |
| 182 |
nothing calls this directly
no test coverage detected