Fix JSON result of empty array (#5154)
This commit is contained in:
		
							parent
							
								
									317ddb7283
								
							
						
					
					
						commit
						70ad46133f
					
				
					 2 changed files with 39 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
	for _, tc := range testCases {
 | 
			
		||||
 | 
			
		||||
	// get the action for comparison
 | 
			
		||||
	actions, err := GetFeeds(GetFeedsOptions{
 | 
			
		||||
		RequestedUser:    user,
 | 
			
		||||
		RequestingUserID: user.ID,
 | 
			
		||||
		IncludePrivate:   true,
 | 
			
		||||
		OnlyPerformedBy:  false,
 | 
			
		||||
		IncludeDeleted:   true,
 | 
			
		||||
	})
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
		// Insert some action
 | 
			
		||||
		user := AssertExistsAndLoadBean(t, &User{ID: tc.userID}).(*User)
 | 
			
		||||
 | 
			
		||||
	// Get the heatmap and compare
 | 
			
		||||
	heatmap, err := GetUserHeatmapDataByUser(user)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, len(actions), len(heatmap))
 | 
			
		||||
		// 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))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue