Skip to content

Commit c1dce48

Browse files
authored
Merge pull request #27 from nativeapptemplate/fix/nil-pointer-version-lookups-and-permissions
Fix nil pointer bugs in version lookups and permissions
2 parents 8e251cc + f6dfbbc commit c1dce48

7 files changed

Lines changed: 32 additions & 23 deletions

File tree

app/models/accounts_shopkeeper.rb

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,8 @@ def account_owner?
1717
end
1818

1919
def permissions
20-
role = if admin?
21-
Role.find_by(tag: "admin")
22-
elsif senior_manager?
23-
Role.find_by(tag: "senior_manager")
24-
elsif junior_manager?
25-
Role.find_by(tag: "junior_manager")
26-
elsif senior_member?
27-
Role.find_by(tag: "senior_member")
28-
elsif junior_member?
29-
Role.find_by(tag: "junior_member")
30-
elsif guest?
31-
Role.find_by(tag: "guest")
32-
end
33-
20+
role_tag = active_roles.first&.to_s
21+
role = Role.find_by!(tag: role_tag)
3422
role.permissions
3523
end
3624

app/models/app_version.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ class AppVersion < ApplicationRecord
33
enum :forced_update_type, {unforced_update: 1, forced_update: 2}
44

55
def self.current_version(platform:)
6-
AppVersion
7-
.current
6+
current
87
.where(platform: platform)
98
.order(version: :desc)
109
.first
11-
.version
10+
&.version
1211
end
1312
end

app/models/privacy_version.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ class PrivacyVersion < ApplicationRecord
22
enum :current_type, {uncurrent: 1, current: 2}
33

44
def self.current_version
5-
PrivacyVersion
6-
.current
5+
current
76
.order(version: :desc)
87
.first
9-
.version
8+
&.version
109
end
1110
end

app/models/terms_version.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ class TermsVersion < ApplicationRecord
22
enum :current_type, {uncurrent: 1, current: 2}
33

44
def self.current_version
5-
TermsVersion
6-
.current
5+
current
76
.order(version: :desc)
87
.first
9-
.version
8+
&.version
109
end
1110
end

test/models/app_version_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,20 @@ class AppVersionTest < ActiveSupport::TestCase
9999
assert_equal 5, AppVersion.current_version(platform: "android")
100100
end
101101

102+
test "current_version returns nil for nonexistent platform" do
103+
assert_nil AppVersion.current_version(platform: "nonexistent")
104+
end
105+
106+
test "current_version respects chained scopes" do
107+
version = AppVersion.forced_update.current_version(platform: "ios")
108+
assert_not_nil version
109+
110+
# unforced_update scope should not find forced_update records
111+
AppVersion.where(platform: "ios").update_all(forced_update_type: :forced_update)
112+
version = AppVersion.unforced_update.current_version(platform: "ios")
113+
assert_nil version
114+
end
115+
102116
test "should load from fixtures" do
103117
assert AppVersion.count > 0
104118

test/models/privacy_version_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ class PrivacyVersionTest < ActiveSupport::TestCase
7373
assert_equal 5, PrivacyVersion.current_version
7474
end
7575

76+
test "current_version returns nil when no current version exists" do
77+
PrivacyVersion.update_all(current_type: :uncurrent)
78+
assert_nil PrivacyVersion.current_version
79+
end
80+
7681
test "should load from fixtures" do
7782
assert PrivacyVersion.count > 0
7883

test/models/terms_version_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ class TermsVersionTest < ActiveSupport::TestCase
7373
assert_equal 5, TermsVersion.current_version
7474
end
7575

76+
test "current_version returns nil when no current version exists" do
77+
TermsVersion.update_all(current_type: :uncurrent)
78+
assert_nil TermsVersion.current_version
79+
end
80+
7681
test "should load from fixtures" do
7782
assert TermsVersion.count > 0
7883

0 commit comments

Comments
 (0)