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

pulibrary / orangelight / 00dbc10b-d747-4ad7-b211-7b26d753abbb

14 Aug 2025 01:25PM UTC coverage: 0.483% (-94.9%) from 95.343%
00dbc10b-d747-4ad7-b211-7b26d753abbb

push

circleci

web-flow
Merge pull request #5181 from pulibrary/dependabot/bundler/activestorage-7.2.2.2

Bump activestorage from 7.2.2.1 to 7.2.2.2

47 of 9721 relevant lines covered (0.48%)

0.01 hits per line

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

0.0
/app/services/db_migrate_uppercase_usernames.rb
1
# frozen_string_literal: false
2

3
class DBMigrateUppercaseUsernames
×
4
  def self.run
×
5
    new.run
×
6
  end
×
7

8
  def run
×
9
    find_uppercase_users.map { |uppercase_user| UserLowercaser.new(uppercase_user).convert }
×
10
  end
×
11

12
  # find all users with uppercase letters in their username
13
  def find_uppercase_users
×
14
    User.where("uid ~ ?", "[A-Z]").to_a
×
15
  end
×
16

17
  class UserLowercaser
×
18
    attr_reader :uppercase_user
×
19

20
    def initialize(uppercase_user)
×
21
      @uppercase_user = uppercase_user
×
22
    end
×
23

24
    def convert
×
25
      lowercase_user = find_lowercase_user
×
26
      merge_bookmarks(lowercase_user)
×
27
      merge_searches(lowercase_user)
×
28
    end
×
29

30
    # find lowercase version of the user with uppercase letters in their username
31
    def find_lowercase_user
×
32
      User.find_by(username: uppercase_user.uid.downcase) || User.create(uid: uppercase_user.uid.downcase, username: uppercase_user.uid.downcase)
×
33
    end
×
34

35
    # merge uppercase user's bookmarks into lowercase user's bookmarks
36
    def merge_bookmarks(lowercase_user)
×
37
      uppercase_user_bookmarks = Bookmark.where(user_id: uppercase_user.id)
×
38
      lowercase_user_bookmarks = Bookmark.where(user_id: lowercase_user.id).to_a
×
39
      lowercase_bookmarks_doc_ids = lowercase_user_bookmarks.map(&:document_id)
×
40
      lowercase_user.bookmarks = lowercase_user_bookmarks + uppercase_user_bookmarks.reject { |bookmark| lowercase_bookmarks_doc_ids.include? bookmark.document_id }
×
41
    end
×
42

43
    # merge uppercase user's searches into lowercase user's searches
44
    def merge_searches(lowercase_user)
×
45
      uppercase_user_searches = Search.where(user_id: uppercase_user.id)
×
46
      lowercase_user_searches = Search.where(user_id: lowercase_user.id).to_a
×
47
      lowercase_searches_queries = lowercase_user_searches.map(&:query_params)
×
48
      lowercase_user.searches = lowercase_user_searches + uppercase_user_searches.reject { |search| lowercase_searches_queries.include? search.query_params }
×
49
    end
×
50
  end
×
51
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