Class: GitlabQuality::TestTooling::FeatureReadiness::AnalyzedItems::AnalyzedEpic

Inherits:
Object
  • Object
show all
Includes:
Concerns::WorkItemConcern
Defined in:
lib/gitlab_quality/test_tooling/feature_readiness/analyzed_items/analyzed_epic.rb

Constant Summary

Constants included from Concerns::WorkItemConcern

Concerns::WorkItemConcern::OPERATIONAL_READINESS_NOTE_ID, Concerns::WorkItemConcern::OPERATIONAL_READINESS_TRACKING_LABEL

Instance Method Summary collapse

Methods included from Concerns::WorkItemConcern

#add_labels, #add_operational_readiness_precheck_comment, #existing_note_containing_text, #extract_id_from_gid, #fetch_work_item, #get_id_for_group_label, #get_id_for_label, #get_issue_iids, #get_labels, #has_a_child_epic?, #has_label?, #ids_for_group_labels, #ids_for_labels, #label_gids, #link_operation_readiness_issue, #linked_issue_iids, #note_has_emoji?, #post_comment_about_operation_readiness_issue_created, #work_item_author_id

Constructor Details

#initialize(epic:, token:, project:, group:, dry_run:) ⇒ AnalyzedEpic

Returns a new instance of AnalyzedEpic.



10
11
12
13
14
15
16
17
# File 'lib/gitlab_quality/test_tooling/feature_readiness/analyzed_items/analyzed_epic.rb', line 10

def initialize(epic:, token:, project:, group:, dry_run:)
  @token = token
  @project = project
  @group = group
  @dry_run = dry_run
  @epic = epic
  @analyzed_issues = []
end

Instance Method Details

#analyzeObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/gitlab_quality/test_tooling/feature_readiness/analyzed_items/analyzed_epic.rb', line 19

def analyze
  issue_iids = get_issue_iids(epic, project)
  return if issue_iids.none?

  open_issues = fetch_open_issues(issue_iids)

  puts "\nProcessing epic: #{epic[:webUrl]} with #{open_issues.count} open feature addition issues."

  process_issues(open_issues)
end

#process_issues(issues) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/gitlab_quality/test_tooling/feature_readiness/analyzed_items/analyzed_epic.rb', line 30

def process_issues(issues)
  @analyzed_issues.concat(
    issues.map do |issue|
      AnalyzedIssue.new(issue: issue, token: token, project: project, group: group, dry_run: dry_run)
                   .tap(&:analyze)
                   .result
    end
  )
end

#resultObject



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/gitlab_quality/test_tooling/feature_readiness/analyzed_items/analyzed_epic.rb', line 40

def result
  {
    epic_iid: epic[:iid],
    epic_id: epic[:id],
    epic_web_url: epic[:webUrl],
    issues: analyzed_issues,
    doc_mrs: doc_mrs,
    feature_spec_mrs: feature_spec_mrs,
    e2e_spec_mrs: e2e_spec_mrs,
    feature_flag_mrs: feature_flag_mrs
  }
end