(t *testing.T)
| 516 | } |
| 517 | |
| 518 | func TestManager_MultipleDependencies(t *testing.T) { |
| 519 | t.Parallel() |
| 520 | |
| 521 | t.Run("UnitWithMultipleDependencies", func(t *testing.T) { |
| 522 | t.Parallel() |
| 523 | |
| 524 | manager := unit.NewManager() |
| 525 | |
| 526 | // Register all units |
| 527 | units := []unit.ID{unitA, unitB, unitC, unitD} |
| 528 | for _, unit := range units { |
| 529 | err := manager.Register(unit) |
| 530 | require.NoError(t, err) |
| 531 | } |
| 532 | |
| 533 | // A depends on B being unit.StatusStarted AND C being "started" |
| 534 | err := manager.AddDependency(unitA, unitB, unit.StatusStarted) |
| 535 | require.NoError(t, err) |
| 536 | err = manager.AddDependency(unitA, unitC, unit.StatusStarted) |
| 537 | require.NoError(t, err) |
| 538 | |
| 539 | // A should not be ready (depends on both B and C) |
| 540 | isReady, err := manager.IsReady(unitA) |
| 541 | require.NoError(t, err) |
| 542 | assert.False(t, isReady) |
| 543 | |
| 544 | // Update B to unit.StatusStarted - A should still not be ready (needs C too) |
| 545 | err = manager.UpdateStatus(unitB, unit.StatusStarted) |
| 546 | require.NoError(t, err) |
| 547 | |
| 548 | isReady, err = manager.IsReady(unitA) |
| 549 | require.NoError(t, err) |
| 550 | assert.False(t, isReady) |
| 551 | |
| 552 | // Update C to "started" - A should now be ready |
| 553 | err = manager.UpdateStatus(unitC, unit.StatusStarted) |
| 554 | require.NoError(t, err) |
| 555 | |
| 556 | isReady, err = manager.IsReady(unitA) |
| 557 | require.NoError(t, err) |
| 558 | assert.True(t, isReady) |
| 559 | }) |
| 560 | |
| 561 | t.Run("ComplexDependencyChain", func(t *testing.T) { |
| 562 | t.Parallel() |
| 563 | |
| 564 | manager := unit.NewManager() |
| 565 | |
| 566 | // Register all units |
| 567 | units := []unit.ID{unitA, unitB, unitC, unitD} |
| 568 | for _, unit := range units { |
| 569 | err := manager.Register(unit) |
| 570 | require.NoError(t, err) |
| 571 | } |
| 572 | |
| 573 | // Create complex dependency graph: |
| 574 | // A depends on B being unit.StatusStarted AND C being "started" |
| 575 | err := manager.AddDependency(unitA, unitB, unit.StatusStarted) |
nothing calls this directly
no test coverage detected