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

pulibrary / bibdata / 1dcebae2-3318-4e77-bc53-82276e293354

02 May 2025 04:45PM UTC coverage: 28.256% (-63.9%) from 92.189%
1dcebae2-3318-4e77-bc53-82276e293354

push

circleci

sandbergja
Add basic infrastructure for compiling rust code

* Add a rake compile task to compile
* Run the rake task in CI
* Run the rake task before rspec tests with the rust tag, to provide quick feedback on rust changes in TDD cycles

2 of 7 new or added lines in 2 files covered. (28.57%)

2467 existing lines in 97 files now uncovered.

1089 of 3854 relevant lines covered (28.26%)

0.29 hits per line

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

29.41
/marc_to_solr/lib/electronic_portfolio_builder.rb
1
# Class for building electronic portfolio JSON from marc fields
2
class ElectronicPortfolioBuilder
1✔
3
  # Build electronic portfolio JSON from marc fields
4
  # @param field [MARC::DataField] data from 951 field
5
  # @param date [MARC::DataField] date range data from 953 field
6
  # @param embargo [MARC::DataField] embargo data from 954 field
7
  # @return [String] JSON string
8
  def self.build(field:, date:, embargo:)
1✔
UNCOV
9
    new(field:, date:, embargo:).build
×
10
  end
11

12
  attr_reader :embargo, :field, :date
1✔
13

14
  # Constructor
15
  # @param field [MARC::DataField] data from 951 field
16
  # @param date [MARC::DataField] date range data from 953 field
17
  # @param embargo [MARC::DataField] embargo data from 954 field
18
  def initialize(field:, date:, embargo:)
1✔
UNCOV
19
    @field = field
×
UNCOV
20
    @date = date
×
UNCOV
21
    @embargo = embargo
×
22
  end
23

24
  def build
1✔
25
    {
UNCOV
26
      desc: field['k'],
×
27
      title: portfolio_title,
28
      url: field['x'],
29
      start: start_date,
30
      end: end_date,
31
      notes: public_notes
32
    }.to_json
33
  end
34

35
  private
1✔
36

37
    # Formulas for start and end dates come from Alma
38
    # documentation on the embargo operator:
39
    # <=  Most recent X year(s) available
40
    # >=  Most recent X year(s) not available
41
    # <   Most recent X year(s)-1 available
42
    # >   Most recent X year(s)+1 not available
43
    def start_date
1✔
UNCOV
44
      if embargo && (embargo['b'] == '<=')
×
45
        (DateTime.now.year - embargo['c'].to_i).to_s
×
UNCOV
46
      elsif embargo && embargo['b'] == '<'
×
47
        (DateTime.now.year - (embargo['c'].to_i - 1)).to_s
×
UNCOV
48
      elsif date
×
UNCOV
49
        date['b']
×
50
      end
51
    end
52

53
    def end_date
1✔
UNCOV
54
      if embargo && (embargo['b'] == '>=')
×
UNCOV
55
        (DateTime.now.year - embargo['c'].to_i).to_s
×
UNCOV
56
      elsif embargo && (embargo['b'] == '<=')
×
57
        'latest'
×
UNCOV
58
      elsif embargo && embargo['b'] == '<'
×
59
        'latest'
×
UNCOV
60
      elsif embargo && embargo['b'] == '>'
×
61
        (DateTime.now.year - (embargo['c'].to_i + 1)).to_s
×
UNCOV
62
      elsif date && date['c']
×
UNCOV
63
        date['c']
×
64
      else
UNCOV
65
        'latest'
×
66
      end
67
    end
68

69
    def portfolio_title
1✔
UNCOV
70
      field['n'].nil? ? 'Online Content' : field['n']
×
71
    end
72

73
    def public_notes
1✔
UNCOV
74
      field.select { |s| s.code == 'i' }.map(&:value)
×
75
    end
76
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