MCPcopy Create free account
hub / github.com/compozy/agh / createTaskBlockForTest

Method createTaskBlockForTest

internal/task/manager_test.go:737–808  ·  view source on GitHub ↗
(
	block TaskBlock,
	recurrenceLimit int,
)

Source from the content-addressed store, hash-verified

735}
736
737func (s *inMemoryManagerStore) createTaskBlockForTest(
738 block TaskBlock,
739 recurrenceLimit int,
740) (BlockMutationResult, error) {
741 trimmedTaskID := strings.TrimSpace(block.TaskID)
742 taskRecord, ok := s.tasks[trimmedTaskID]
743 if !ok {
744 return BlockMutationResult{}, ErrTaskNotFound
745 }
746 hadClearedPrior := s.hasClearedTaskBlockKindForTest(trimmedTaskID, block.Kind)
747 created := cloneTaskBlock(block)
748 created.ID = strings.TrimSpace(created.ID)
749 created.TaskID = trimmedTaskID
750 created.WorkspaceID = strings.TrimSpace(taskRecord.WorkspaceID)
751 created.Kind = created.Kind.Normalize()
752 created.Reason = strings.TrimSpace(created.Reason)
753 created.CreatedBy.Kind = created.CreatedBy.Kind.Normalize()
754 created.CreatedBy.Ref = strings.TrimSpace(created.CreatedBy.Ref)
755 created.ClearedAt = time.Time{}
756 created.ClearedBy = ActorIdentity{}
757 created.ClearNote = ""
758 if created.ID == "" {
759 return BlockMutationResult{}, ErrValidation
760 }
761 if err := created.Kind.Validate("task_block.kind"); err != nil {
762 return BlockMutationResult{}, err
763 }
764 if created.Reason == "" {
765 return BlockMutationResult{}, ErrValidation
766 }
767 if s.blocks[trimmedTaskID] == nil {
768 s.blocks[trimmedTaskID] = make(map[string]TaskBlock)
769 }
770 s.blocks[trimmedTaskID][created.ID] = cloneTaskBlock(created)
771 result := BlockMutationResult{
772 Block: cloneTaskBlock(created),
773 Recurrence: BlockRecurrence{
774 TaskID: created.TaskID,
775 Kind: created.Kind,
776 },
777 }
778 if !hadClearedPrior {
779 return result, nil
780 }
781 key := blockRecurrenceTestKey(created.TaskID, created.Kind)
782 recurrence := s.blockRecurrences[key]
783 recurrence.TaskID = created.TaskID
784 recurrence.Kind = created.Kind
785 recurrence.Count++
786 recurrence.UpdatedAt = created.CreatedAt.UTC()
787 s.blockRecurrences[key] = recurrence
788 result.Recurrence = recurrence
789 if recurrenceLimit > 0 && recurrence.Count >= recurrenceLimit {
790 escalated := s.tasks[created.TaskID]
791 if escalated.NeedsAttention == nil {
792 needsAttention := NeedsAttention{
793 Reason: fmt.Sprintf(
794 "task re-blocked %d times with %q blocks",

Callers 2

CreateTaskBlockMethod · 0.95

Calls 6

cloneTaskBlockFunction · 0.85
blockRecurrenceTestKeyFunction · 0.85
cloneTaskFunction · 0.85
ValidateMethod · 0.65
NormalizeMethod · 0.45

Tested by

no test coverage detected