2020-02-07 17:27:45 +01:00
|
|
|
// Vikunja is a to-do list application to facilitate your life.
|
2021-02-02 20:19:13 +01:00
|
|
|
// Copyright 2018-2021 Vikunja and contributors. All rights reserved.
|
2019-12-07 15:30:51 +01:00
|
|
|
//
|
2020-01-09 18:33:22 +01:00
|
|
|
// This program is free software: you can redistribute it and/or modify
|
2020-12-23 16:41:52 +01:00
|
|
|
// it under the terms of the GNU Affero General Public Licensee as published by
|
2020-01-09 18:33:22 +01:00
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// (at your option) any later version.
|
2019-12-07 15:30:51 +01:00
|
|
|
//
|
2020-01-09 18:33:22 +01:00
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2020-12-23 16:41:52 +01:00
|
|
|
// GNU Affero General Public Licensee for more details.
|
2019-12-07 15:30:51 +01:00
|
|
|
//
|
2020-12-23 16:41:52 +01:00
|
|
|
// You should have received a copy of the GNU Affero General Public Licensee
|
2020-01-09 18:33:22 +01:00
|
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
2019-12-07 15:30:51 +01:00
|
|
|
|
|
|
|
package models
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2020-10-11 22:10:03 +02:00
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2019-12-07 15:30:51 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestSortParamValidation(t *testing.T) {
|
|
|
|
t.Run("Test valid order by", func(t *testing.T) {
|
|
|
|
t.Run(orderAscending.String(), func(t *testing.T) {
|
|
|
|
s := &sortParam{
|
|
|
|
orderBy: orderAscending,
|
|
|
|
sortBy: "id",
|
|
|
|
}
|
|
|
|
err := s.validate()
|
|
|
|
assert.NoError(t, err)
|
|
|
|
})
|
|
|
|
t.Run(orderDescending.String(), func(t *testing.T) {
|
|
|
|
s := &sortParam{
|
|
|
|
orderBy: orderDescending,
|
|
|
|
sortBy: "id",
|
|
|
|
}
|
|
|
|
err := s.validate()
|
|
|
|
assert.NoError(t, err)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
t.Run("Test valid sort by", func(t *testing.T) {
|
2020-04-11 16:20:33 +02:00
|
|
|
for _, test := range []string{
|
2019-12-07 15:30:51 +01:00
|
|
|
taskPropertyID,
|
2020-05-16 12:17:44 +02:00
|
|
|
taskPropertyTitle,
|
2019-12-07 15:30:51 +01:00
|
|
|
taskPropertyDescription,
|
|
|
|
taskPropertyDone,
|
2020-06-27 19:04:01 +02:00
|
|
|
taskPropertyDoneAt,
|
|
|
|
taskPropertyDueDate,
|
2019-12-07 15:30:51 +01:00
|
|
|
taskPropertyCreatedByID,
|
|
|
|
taskPropertyListID,
|
|
|
|
taskPropertyRepeatAfter,
|
|
|
|
taskPropertyPriority,
|
2020-06-27 19:04:01 +02:00
|
|
|
taskPropertyStartDate,
|
|
|
|
taskPropertyEndDate,
|
2019-12-07 15:30:51 +01:00
|
|
|
taskPropertyHexColor,
|
|
|
|
taskPropertyPercentDone,
|
|
|
|
taskPropertyUID,
|
|
|
|
taskPropertyCreated,
|
|
|
|
taskPropertyUpdated,
|
2020-04-24 17:23:03 +02:00
|
|
|
taskPropertyPosition,
|
2019-12-07 15:30:51 +01:00
|
|
|
} {
|
2020-04-11 16:20:33 +02:00
|
|
|
t.Run(test, func(t *testing.T) {
|
2019-12-07 15:30:51 +01:00
|
|
|
s := &sortParam{
|
|
|
|
orderBy: orderAscending,
|
2020-04-24 17:23:03 +02:00
|
|
|
sortBy: test,
|
2019-12-07 15:30:51 +01:00
|
|
|
}
|
|
|
|
err := s.validate()
|
|
|
|
assert.NoError(t, err)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})
|
|
|
|
t.Run("Test invalid order by", func(t *testing.T) {
|
|
|
|
s := &sortParam{
|
|
|
|
orderBy: "somethingInvalid",
|
|
|
|
sortBy: "id",
|
|
|
|
}
|
|
|
|
err := s.validate()
|
|
|
|
assert.Error(t, err)
|
|
|
|
assert.True(t, IsErrInvalidSortOrder(err))
|
|
|
|
})
|
|
|
|
t.Run("Test invalid sort by", func(t *testing.T) {
|
|
|
|
s := &sortParam{
|
|
|
|
orderBy: orderAscending,
|
|
|
|
sortBy: "somethingInvalid",
|
|
|
|
}
|
|
|
|
err := s.validate()
|
|
|
|
assert.Error(t, err)
|
2020-04-11 16:20:33 +02:00
|
|
|
assert.True(t, IsErrInvalidTaskField(err))
|
2019-12-07 15:30:51 +01:00
|
|
|
})
|
|
|
|
}
|