dynamo-browse/internal/dynamo-browse/models/sorted_test.go
Leon Mika f65c5778a9
issue-50: fixed package name (#52)
Changed package name from github.com/lmika/audax to github.com/lmika/dynamo-browse
2023-04-17 08:31:03 +10:00

111 lines
3.5 KiB
Go

package models_test
import (
"testing"
"github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
"github.com/lmika/dynamo-browse/internal/dynamo-browse/models"
"github.com/stretchr/testify/assert"
)
func TestSort(t *testing.T) {
t.Run("pk and sk are both strings", func(t *testing.T) {
tableInfo := &models.TableInfo{Keys: models.KeyAttribute{PartitionKey: "pk", SortKey: "sk"}}
items := make([]models.Item, len(testStringData))
copy(items, testStringData)
models.Sort(items, tableInfo)
assert.Equal(t, items[0], testStringData[1])
assert.Equal(t, items[1], testStringData[2])
assert.Equal(t, items[2], testStringData[0])
})
t.Run("pk and sk are both numbers", func(t *testing.T) {
tableInfo := &models.TableInfo{Keys: models.KeyAttribute{PartitionKey: "pk", SortKey: "sk"}}
items := make([]models.Item, len(testNumberData))
copy(items, testNumberData)
models.Sort(items, tableInfo)
assert.Equal(t, items[0], testNumberData[2])
assert.Equal(t, items[1], testNumberData[1])
assert.Equal(t, items[2], testNumberData[0])
})
t.Run("pk and sk are both bools", func(t *testing.T) {
tableInfo := &models.TableInfo{Keys: models.KeyAttribute{PartitionKey: "pk", SortKey: "sk"}}
items := make([]models.Item, len(testBoolData))
copy(items, testBoolData)
models.Sort(items, tableInfo)
assert.Equal(t, items[0], testBoolData[2])
assert.Equal(t, items[1], testBoolData[1])
assert.Equal(t, items[2], testBoolData[0])
})
}
var testStringData = []models.Item{
{
"pk": &types.AttributeValueMemberS{Value: "bbb"},
"sk": &types.AttributeValueMemberS{Value: "131"},
"beta": &types.AttributeValueMemberN{Value: "2468"},
"gamma": &types.AttributeValueMemberS{Value: "foobar"},
},
{
"pk": &types.AttributeValueMemberS{Value: "abc"},
"sk": &types.AttributeValueMemberS{Value: "111"},
"alpha": &types.AttributeValueMemberS{Value: "This is some value"},
},
{
"pk": &types.AttributeValueMemberS{Value: "abc"},
"sk": &types.AttributeValueMemberS{Value: "222"},
"alpha": &types.AttributeValueMemberS{Value: "This is another some value"},
"beta": &types.AttributeValueMemberN{Value: "2468"},
},
}
var testNumberData = []models.Item{
{
"pk": &types.AttributeValueMemberN{Value: "1141"},
"sk": &types.AttributeValueMemberN{Value: "1111"},
"beta": &types.AttributeValueMemberN{Value: "2468"},
"gamma": &types.AttributeValueMemberS{Value: "foobar"},
},
{
"pk": &types.AttributeValueMemberN{Value: "1141"},
"sk": &types.AttributeValueMemberN{Value: "111.5"},
"alpha": &types.AttributeValueMemberS{Value: "This is some value"},
},
{
"pk": &types.AttributeValueMemberN{Value: "5"},
"sk": &types.AttributeValueMemberN{Value: "222"},
"alpha": &types.AttributeValueMemberS{Value: "This is another some value"},
"beta": &types.AttributeValueMemberN{Value: "2468"},
},
}
var testBoolData = []models.Item{
{
"pk": &types.AttributeValueMemberBOOL{Value: true},
"sk": &types.AttributeValueMemberBOOL{Value: true},
"beta": &types.AttributeValueMemberN{Value: "2468"},
"gamma": &types.AttributeValueMemberS{Value: "foobar"},
},
{
"pk": &types.AttributeValueMemberBOOL{Value: true},
"sk": &types.AttributeValueMemberBOOL{Value: false},
"alpha": &types.AttributeValueMemberS{Value: "This is some value"},
},
{
"pk": &types.AttributeValueMemberBOOL{Value: false},
"sk": &types.AttributeValueMemberBOOL{Value: false},
"alpha": &types.AttributeValueMemberS{Value: "This is another some value"},
"beta": &types.AttributeValueMemberN{Value: "2468"},
},
}