diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index a093c836e9a..6b294c351ad 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -220,15 +220,15 @@ class UserSerializer < BasicUserSerializer end def bio_raw - object.user_profile.bio_raw + object.user_profile&.bio_raw end def bio_cooked - object.user_profile.bio_processed + object.user_profile&.bio_processed end def website - object.user_profile.website + object.user_profile&.website end def website_name @@ -246,7 +246,7 @@ class UserSerializer < BasicUserSerializer end def location - object.user_profile.location + object.user_profile&.location end def can_edit @@ -300,7 +300,7 @@ class UserSerializer < BasicUserSerializer end def bio_excerpt - object.user_profile.bio_excerpt(350 , keep_newlines: true, keep_emoji_images: true) + object.user_profile&.bio_excerpt(350 , keep_newlines: true, keep_emoji_images: true) end def include_suspend_reason? @@ -470,7 +470,7 @@ class UserSerializer < BasicUserSerializer end def profile_view_count - object.user_profile.views + object.user_profile&.views end def time_read diff --git a/spec/serializers/user_serializer_spec.rb b/spec/serializers/user_serializer_spec.rb index 7f896a285ff..a02d4e9ca71 100644 --- a/spec/serializers/user_serializer_spec.rb +++ b/spec/serializers/user_serializer_spec.rb @@ -250,4 +250,17 @@ describe UserSerializer do expect(json[:user_api_keys][2][:id]).to eq(user_api_key_2.id) end end + + context "with missing user profile" do + fab!(:user) { Fabricate(:user) } + + it "does not throw an error" do + id = user.id + UserProfile.delete(id) + user_b = User.find(id) + json = UserSerializer.new(user_b, scope: Guardian.new(user_b), root: false).as_json + + expect(json[:bio_raw]).to eq nil + end + end end