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…
	
		Reference in a new issue