code: def test_issue(fake_issue_tracker):
      i = Issue("ARROW-1234", type="Bug", summary="title")
      assert i.key == "ARROW-1234"
      assert i.type == "Bug"
      assert i.summary == "title"
      assert i.project == "ARROW"
      assert i.number == 1234
  
      i = Issue(
          "PARQUET-1111", type="Improvement", summary="another title"
      )
      assert i.key == "PARQUET-1111"
      assert i.type == "Improvement"
      assert i.summary == "another title"
      assert i.project == "PARQUET"
      assert i.number == 1111
  
      fake_jira_issue = DotDict(
          {
              "key": "ARROW-2222",
              "fields": {
                  "issuetype": {"name": "Feature"},
                  "summary": "Issue title",
              },
          }
      )
      i = Issue.from_jira(fake_jira_issue)
      assert i.key == "ARROW-2222"
      assert i.type == "Feature"
      assert i.summary == "Issue title"
      assert i.project == "ARROW"
      assert i.number == 2222
  
file_path: arrow/dev/archery/archery/release/tests/test_release.py
imports: import pytest
  from archery.release.core import Release, MajorRelease, MinorRelease, PatchRelease, IssueTracker, Version, Issue, CommitTitle, Commit
  from archery.testing import DotDict
label_desc: Use image node_id 3 for calling a global function with example usage: test_issue(fake_issue_tracker) without return types