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

pulibrary / tigerdata-app / 7593fed5-ddd2-4131-b3d3-90812144e9eb

17 Nov 2025 05:51PM UTC coverage: 51.662% (-39.7%) from 91.318%
7593fed5-ddd2-4131-b3d3-90812144e9eb

Pull #2208

circleci

leefaisonr
Indicate emdash for empty project purpose field for projects
Co-authored-by: Hector Correa <hectorcorrea@users.noreply.github.com>
Co-authored-by: Precilla Prempeh <precillap@users.noreply.github.com>
Pull Request #2208: Indicate emdash for empty project purpose field for projects

1787 of 3459 relevant lines covered (51.66%)

66.66 hits per line

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

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

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

20
      private
×
21

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

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

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

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

© 2026 Coveralls, Inc