diff --git a/models/user_heatmap.go b/models/user_heatmap.go
index 8482cba2d5..a86ae39fce 100644
--- a/models/user_heatmap.go
+++ b/models/user_heatmap.go
@@ -16,7 +16,8 @@ type UserHeatmapData struct {
 }
 
 // GetUserHeatmapDataByUser returns an array of UserHeatmapData
-func GetUserHeatmapDataByUser(user *User) (hdata []*UserHeatmapData, err error) {
+func GetUserHeatmapDataByUser(user *User) ([]*UserHeatmapData, error) {
+	hdata := make([]*UserHeatmapData, 0)
 	var groupBy string
 	switch {
 	case setting.UseSQLite3:
@@ -29,12 +30,12 @@ func GetUserHeatmapDataByUser(user *User) (hdata []*UserHeatmapData, err error)
 		groupBy = "dateadd(DAY,0, datediff(day,0, dateadd(s, created_unix, '19700101')))"
 	}
 
-	err = x.Select(groupBy+" as timestamp, count(user_id) as contributions").
+	err := x.Select(groupBy+" as timestamp, count(user_id) as contributions").
 		Table("action").
 		Where("user_id = ?", user.ID).
 		And("created_unix > ?", (util.TimeStampNow() - 31536000)).
 		GroupBy("timestamp").
 		OrderBy("timestamp").
 		Find(&hdata)
-	return
+	return hdata, err
 }
diff --git a/models/user_heatmap_test.go b/models/user_heatmap_test.go
index aeea427499..a71202d857 100644
--- a/models/user_heatmap_test.go
+++ b/models/user_heatmap_test.go
@@ -5,29 +5,48 @@
 package models
 
 import (
-	"github.com/stretchr/testify/assert"
+	"encoding/json"
 	"testing"
+
+	"github.com/stretchr/testify/assert"
 )
 
 func TestGetUserHeatmapDataByUser(t *testing.T) {
+	testCases := []struct {
+		userID      int64
+		CountResult int
+		JSONResult  string
+	}{
+		{2, 1, `[{"timestamp":1540080000,"contributions":1}]`},
+		{3, 0, `[]`},
+	}
 	// Prepare
 	assert.NoError(t, PrepareTestDatabase())
 
-	// Insert some action
-	user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
-
-	// get the action for comparison
-	actions, err := GetFeeds(GetFeedsOptions{
-		RequestedUser:    user,
-		RequestingUserID: user.ID,
-		IncludePrivate:   true,
-		OnlyPerformedBy:  false,
-		IncludeDeleted:   true,
-	})
-	assert.NoError(t, err)
-
-	// Get the heatmap and compare
-	heatmap, err := GetUserHeatmapDataByUser(user)
-	assert.NoError(t, err)
-	assert.Equal(t, len(actions), len(heatmap))
+	for _, tc := range testCases {
+
+		// Insert some action
+		user := AssertExistsAndLoadBean(t, &User{ID: tc.userID}).(*User)
+
+		// get the action for comparison
+		actions, err := GetFeeds(GetFeedsOptions{
+			RequestedUser:    user,
+			RequestingUserID: user.ID,
+			IncludePrivate:   true,
+			OnlyPerformedBy:  false,
+			IncludeDeleted:   true,
+		})
+		assert.NoError(t, err)
+
+		// Get the heatmap and compare
+		heatmap, err := GetUserHeatmapDataByUser(user)
+		assert.NoError(t, err)
+		assert.Equal(t, len(actions), len(heatmap))
+		assert.Equal(t, tc.CountResult, len(heatmap))
+
+		//Test JSON rendering
+		jsonData, err := json.Marshal(heatmap)
+		assert.NoError(t, err)
+		assert.Equal(t, tc.JSONResult, string(jsonData))
+	}
 }