Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/users/heatmaps_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class HeatmapsController < ApplicationController
def show
@user = User.find_by(:display_name => params[:user_display_name])

if @user && (@user.visible? || current_user&.administrator?)
if current_user && @user && (@user.visible? || current_user.administrator?)
@heatmap_data = Rails.cache.fetch("heatmap_data_of_user_#{@user.id}", :expires_at => Time.zone.now.end_of_day) do
from = 1.year.ago.beginning_of_day
to = Time.zone.now.end_of_day
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def show

if @user && (@user.visible? || current_user&.administrator?)
@title = @user.display_name
@heatmap_frame = true
@heatmap_frame = true if current_user
else
render_unknown_user params[:display_name]
end
Expand Down
2 changes: 1 addition & 1 deletion app/views/users/heatmaps/show.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<%= turbo_frame_tag "#{dom_id(@user)}_heatmap", :data => { :turbo => false } do %>
<% if @heatmap_data[:count].positive? %>
<% if @heatmap_data.present? && @heatmap_data[:count].positive? %>
<h2 class="text-body-secondary fs-5 mt-4"><%= t("users.show.contributions", :count => @heatmap_data[:count]) %></h2>
<% cal_data = prepare_heatmap(@heatmap_data[:data], @heatmap_data[:from], @heatmap_data[:to]) %>
<div class="row">
Expand Down
22 changes: 19 additions & 3 deletions test/controllers/users/heatmaps_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,22 @@ def test_routes
)
end

def test_show_data_when_not_logged_in
user = create(:user)
create(:changeset, :user => user, :created_at => 6.months.ago, :num_changes => 10)

get user_heatmap_path(user)

assert_response :success
assert_nil assigns(:heatmap_data)
end

def test_show_data
user = create(:user)
# Create two changesets
create(:changeset, :user => user, :created_at => 6.months.ago, :num_changes => 10)
create(:changeset, :user => user, :created_at => 3.months.ago, :num_changes => 20)

session_for(create(:user))
get user_heatmap_path(user)

assert_response :success
Expand All @@ -43,6 +53,7 @@ def test_show_data_caching
create(:changeset, :user => user, :created_at => 6.months.ago, :num_changes => 15)

# First request to populate the cache
session_for(create(:user))
get user_heatmap_path(user)
first_response_data = assigns(:heatmap_data)
assert_not_nil first_response_data, "Expected heatmap data to be assigned on the first request"
Expand Down Expand Up @@ -75,19 +86,20 @@ def test_show_data_caching
Rails.cache = @original_cache_store
end

def test_show_data_no_changesets
def test_show_rendering_when_not_logged_in
user = create(:user)
create(:changeset, :user => user, :created_at => 6.months.ago, :num_changes => 10)

get user_heatmap_path(user)

assert_response :success
assert_empty(assigns(:heatmap_data)[:data].values)
assert_select ".heatmap", :count => 0
end

def test_show_rendering_of_user_with_no_changesets
user_without_changesets = create(:user)

session_for(create(:user))
get user_heatmap_path(user_without_changesets)

assert_response :success
Expand All @@ -100,6 +112,7 @@ def test_show_rendering_of_user_with_changesets
_changeset5 = create(:changeset, :user => user, :created_at => 3.months.ago.beginning_of_day, :num_changes => 5)
changeset11 = create(:changeset, :user => user, :created_at => 3.months.ago.beginning_of_day, :num_changes => 11)

session_for(create(:user))
get user_heatmap_path(user)

assert_response :success
Expand All @@ -114,6 +127,7 @@ def test_show_rendering_of_user_with_changesets
def test_headline_changeset_zero
user = create(:user)

session_for(create(:user))
get user_heatmap_path(user)

assert_response :success
Expand All @@ -124,6 +138,7 @@ def test_headline_changeset_singular
user = create(:user)
create(:changeset, :user => user, :created_at => 4.months.ago.beginning_of_day, :num_changes => 1)

session_for(create(:user))
get user_heatmap_path(user)

assert_response :success
Expand All @@ -134,6 +149,7 @@ def test_headline_changeset_plural
user = create(:user)
create(:changeset, :user => user, :created_at => 4.months.ago.beginning_of_day, :num_changes => 12)

session_for(create(:user))
get user_heatmap_path(user)

assert_response :success
Expand Down
Loading