Class: PlanMyStuff::TestingProjectMetadata

Inherits:
BaseProjectMetadata show all
Defined in:
lib/plan_my_stuff/testing_project_metadata.rb

Overview

Metadata for testing projects, stored in the GH Project readme field. Detected at read time by kind: “testing” in the serialized metadata blob.

Constant Summary

Constants inherited from BaseMetadata

BaseMetadata::SCHEMA_VERSION

Instance Attribute Summary collapse

Attributes inherited from BaseProjectMetadata

#kind

Attributes inherited from BaseMetadata

#app_name, #created_by, #custom_fields, #gem_version, #rails_env, #schema_version, #visibility

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseMetadata

#internal?, #public?, #to_json, #validate_custom_fields!

Constructor Details

#initializeTestingProjectMetadata

Returns a new instance of TestingProjectMetadata.



79
80
81
82
83
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 79

def initialize
  super
  @kind = 'testing'
  @subject_urls = []
end

Instance Attribute Details

#deadline_miss_reasonString?

Returns free-text captured when the project deadline slips.

Returns:

  • (String, nil)

    free-text captured when the project deadline slips



12
13
14
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 12

def deadline_miss_reason
  @deadline_miss_reason
end

#due_dateDate?

Returns project-level deadline.

Returns:

  • (Date, nil)

    project-level deadline



10
11
12
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 10

def due_date
  @due_date
end

#subject_urlsArray<String>

Returns PR/issue URLs this testing project covers.

Returns:

  • (Array<String>)

    PR/issue URLs this testing project covers



8
9
10
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 8

def subject_urls
  @subject_urls
end

Class Method Details

.build(user:, visibility: 'internal', custom_fields: {}, subject_urls: [], due_date: nil, deadline_miss_reason: nil) ⇒ PlanMyStuff::TestingProjectMetadata

Builds a new TestingProjectMetadata for project creation.

Parameters:

  • user (Object, Integer)

    user object or user_id

  • visibility (String) (defaults to: 'internal')

    “public” or “internal”

  • custom_fields (Hash) (defaults to: {})

    app-defined field values

  • subject_urls (Array<String>) (defaults to: [])

    PR/issue URLs covered

  • due_date (Date, nil) (defaults to: nil)

    project-level deadline

  • deadline_miss_reason (String, nil) (defaults to: nil)

Returns:



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 41

def build(
  user:,
  visibility: 'internal',
  custom_fields: {},
  subject_urls: [],
  due_date: nil,
  deadline_miss_reason: nil
)
   = new
  apply_common_build(
    ,
    user: user,
    visibility: visibility,
    custom_fields_data: custom_fields,
    custom_fields_schema: PlanMyStuff.configuration.custom_fields_for(:testing),
  )
  .subject_urls = Array.wrap(subject_urls)
  .due_date = due_date
  .deadline_miss_reason = deadline_miss_reason
  
end

.from_hash(hash) ⇒ PlanMyStuff::TestingProjectMetadata

Builds a TestingProjectMetadata from a parsed hash.

Parameters:

  • hash (Hash)

Returns:



21
22
23
24
25
26
27
28
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 21

def from_hash(hash)
   = new
  apply_common_from_hash(, hash, PlanMyStuff.configuration.custom_fields_for(:testing))
  .subject_urls = Array.wrap(hash[:subject_urls])
  .due_date = parse_date(hash[:due_date])
  .deadline_miss_reason = hash[:deadline_miss_reason]
  
end

Instance Method Details

#to_hHash

Returns:

  • (Hash)


86
87
88
89
90
91
92
# File 'lib/plan_my_stuff/testing_project_metadata.rb', line 86

def to_h
  super.merge(
    subject_urls: subject_urls,
    due_date: due_date&.iso8601,
    deadline_miss_reason: deadline_miss_reason,
  )
end