}
// 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:
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
}
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))
+ }
}