• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / pdc_describe / 7031ff5b-e2d7-4285-af8b-e7b55adfc48a

pending completion
7031ff5b-e2d7-4285-af8b-e7b55adfc48a

Pull #899

circleci

mccalluc
Finish removal of explicit if-then in js
Pull Request #899: Move messages up to sidebar on the right which can be toggled

1623 of 1788 relevant lines covered (90.77%)

105.5 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.56
/app/models/pdc_metadata/creator.rb
1
# frozen_string_literal: true
2
# Class for storing a creator in our local representation
3
module PDCMetadata
1✔
4
  # value: "Miller, Elizabeth"
5
  # name_type: "Personal"
6
  # given_name: "Elizabeth"
7
  # family_name: "Miller"
8
  class Creator
1✔
9
    attr_accessor :value, :name_type, :given_name, :family_name, :identifier, :affiliations, :sequence, :type
1✔
10

11
    class << self
1✔
12
      def from_hash(creator)
1✔
13
        given_name = creator["given_name"]
1,963✔
14
        family_name = creator["family_name"]
1,963✔
15
        orcid = creator.dig("identifier", "scheme") == "ORCID" ? creator.dig("identifier", "value") : nil
1,963✔
16
        sequence = (creator["sequence"] || "").to_i
1,963✔
17
        PDCMetadata::Creator.new_person(given_name, family_name, orcid, sequence)
1,963✔
18
      end
19

20
      def contributor_from_hash(contributor)
1✔
21
        given_name = contributor["given_name"]
14✔
22
        family_name = contributor["family_name"]
14✔
23
        orcid = contributor.dig("identifier", "scheme") == "ORCID" ? contributor.dig("identifier", "value") : nil
14✔
24
        sequence = (contributor["sequence"] || "").to_i
14✔
25
        type = contributor["type"]
14✔
26
        PDCMetadata::Creator.new_contributor(given_name, family_name, orcid, type, sequence)
14✔
27
      end
28
    end
29

30
    # rubocop:disable Metrics/ParameterLists
31
    def initialize(value: nil, name_type: nil, given_name: nil, family_name: nil, identifier: nil, sequence: 0)
1✔
32
      @value = value
2,325✔
33
      @name_type = name_type
2,325✔
34
      @given_name = given_name
2,325✔
35
      @family_name = family_name
2,325✔
36
      @identifier = identifier
2,325✔
37
      @affiliations = []
2,325✔
38
      @sequence = sequence
2,325✔
39
    end
40
    # rubocop:enable Metrics/ParameterLists
41

42
    def orcid_url
1✔
43
      identifier&.orcid_url
×
44
    end
45

46
    def orcid
1✔
47
      identifier&.orcid
1,328✔
48
    end
49

50
    def compare_value
1✔
51
      "#{value} | #{sequence} | #{type}"
117✔
52
    end
53

54
    def self.new_person(given_name, family_name, orcid_id = nil, sequence = 0)
1✔
55
      full_name = "#{family_name}, #{given_name}"
2,325✔
56
      creator = Creator.new(value: full_name, name_type: "Personal", given_name: given_name, family_name: family_name, sequence: sequence)
2,325✔
57
      if orcid_id.present?
2,325✔
58
        creator.identifier = NameIdentifier.new_orcid(orcid_id.strip)
35✔
59
      end
60
      creator
2,325✔
61
    end
62

63
    def self.new_contributor(given_name, family_name, orcid_id, type, sequence)
1✔
64
      contributor = new_person(given_name, family_name, orcid_id, sequence)
16✔
65
      contributor.type = type
16✔
66
      contributor
16✔
67
    end
68
  end
69
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc