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

pulibrary / tigerdata-app / 8d70f2ab-acc5-4aab-b64b-743d66ddd2eb

29 Aug 2025 06:22PM UTC coverage: 87.983% (-0.1%) from 88.118%
8d70f2ab-acc5-4aab-b64b-743d66ddd2eb

Pull #1801

circleci

JaymeeH
Merge branch '1586-request-mailer' of https://github.com/pulibrary/tiger-data-app into 1586-request-mailer
Pull Request #1801: 1586 request mailer

10 of 10 new or added lines in 2 files covered. (100.0%)

1173 existing lines in 56 files now uncovered.

2482 of 2821 relevant lines covered (87.98%)

317.98 hits per line

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

100.0
/app/services/user_error_parser.rb
1
# frozen_string_literal: true
UNCOV
2
class UserErrorParser
1✔
UNCOV
3
  class << self
1✔
UNCOV
4
    def csv_users(errors_str)
1✔
UNCOV
5
      users = parse(errors_str)
1✔
UNCOV
6
      "uid,email,given_name,family_name,display_name,eligible_sponsor," \
1✔
UNCOV
7
      "eligible_manager,superuser,sysadmin,tester_trainer,DateAdded,AddedBy,Notes\n" \
UNCOV
8
      "#{users.join("\n")}"
UNCOV
9
    end
10

UNCOV
11
    def parse(errors_str)
1✔
UNCOV
12
      errors = errors_str.split("\n")
5✔
UNCOV
13
      roles = errors.map { |error| parse_line(error) }.flatten
16✔
UNCOV
14
      user_roles = roles.group_by { |role| role[:uid] }
48✔
UNCOV
15
      user_roles.map do |uid, user_role|
5✔
UNCOV
16
        "#{uid},,,,,#{sponsor_flag(user_role)},#{manager_flag(user_role)},,,,#{report_date},ImportProcess,\"Capacity Early Adopter\""
36✔
UNCOV
17
      end
UNCOV
18
    end
19

UNCOV
20
      private
1✔
21

UNCOV
22
        def parse_line(error)
1✔
UNCOV
23
          error_messages = error.split(";")
11✔
UNCOV
24
          error_messages.map do |str|
11✔
UNCOV
25
            user_role = str.split(":").last
43✔
UNCOV
26
            parts = user_role.split(" for role ")
43✔
UNCOV
27
            uid = parts.first
43✔
UNCOV
28
            role = parts.last
43✔
UNCOV
29
            { uid: uid.strip, role: role.strip }
43✔
UNCOV
30
          end
UNCOV
31
        end
32

UNCOV
33
        def report_date
1✔
UNCOV
34
          Time.current.in_time_zone("America/New_York").strftime("%Y-%m-%d")
36✔
UNCOV
35
        end
36

UNCOV
37
        def sponsor_flag(roles)
1✔
UNCOV
38
          if roles.count { |data| data[:role] == "Data Sponsor" }.positive?
79✔
UNCOV
39
            "TRUE"
11✔
UNCOV
40
          else
UNCOV
41
            ""
25✔
UNCOV
42
          end
UNCOV
43
        end
44

UNCOV
45
        def manager_flag(roles)
1✔
UNCOV
46
          if roles.count { |data| data[:role] == "Data Manager" }.positive?
79✔
UNCOV
47
            "TRUE"
8✔
UNCOV
48
          else
UNCOV
49
            ""
28✔
UNCOV
50
          end
UNCOV
51
        end
UNCOV
52
  end
UNCOV
53
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