Started working on proper controllers

This commit is contained in:
Leon Mika 2022-05-19 09:55:15 +10:00
parent 306640abdb
commit 6df67ce93b
9 changed files with 225 additions and 91 deletions

View file

@ -13,9 +13,12 @@ import (
"github.com/stretchr/testify/assert"
)
type TestData []map[string]interface{}
type TestData struct {
TableName string
Data []map[string]interface{}
}
func SetupTestTable(t *testing.T, tableName string, testData TestData) (*dynamodb.Client, func()) {
func SetupTestTable(t *testing.T, testData []TestData) (*dynamodb.Client, func()) {
t.Helper()
ctx := context.Background()
@ -27,37 +30,41 @@ func SetupTestTable(t *testing.T, tableName string, testData TestData) (*dynamod
dynamoClient := dynamodb.NewFromConfig(cfg,
dynamodb.WithEndpointResolver(dynamodb.EndpointResolverFromURL("http://localhost:8000")))
_, err = dynamoClient.CreateTable(ctx, &dynamodb.CreateTableInput{
TableName: aws.String(tableName),
KeySchema: []types.KeySchemaElement{
{AttributeName: aws.String("pk"), KeyType: types.KeyTypeHash},
{AttributeName: aws.String("sk"), KeyType: types.KeyTypeRange},
},
AttributeDefinitions: []types.AttributeDefinition{
{AttributeName: aws.String("pk"), AttributeType: types.ScalarAttributeTypeS},
{AttributeName: aws.String("sk"), AttributeType: types.ScalarAttributeTypeS},
},
ProvisionedThroughput: &types.ProvisionedThroughput{
ReadCapacityUnits: aws.Int64(100),
WriteCapacityUnits: aws.Int64(100),
},
})
assert.NoError(t, err)
for _, item := range testData {
m, err := attributevalue.MarshalMap(item)
assert.NoError(t, err)
_, err = dynamoClient.PutItem(ctx, &dynamodb.PutItemInput{
TableName: aws.String(tableName),
Item: m,
for _, table := range testData {
_, err = dynamoClient.CreateTable(ctx, &dynamodb.CreateTableInput{
TableName: aws.String(table.TableName),
KeySchema: []types.KeySchemaElement{
{AttributeName: aws.String("pk"), KeyType: types.KeyTypeHash},
{AttributeName: aws.String("sk"), KeyType: types.KeyTypeRange},
},
AttributeDefinitions: []types.AttributeDefinition{
{AttributeName: aws.String("pk"), AttributeType: types.ScalarAttributeTypeS},
{AttributeName: aws.String("sk"), AttributeType: types.ScalarAttributeTypeS},
},
ProvisionedThroughput: &types.ProvisionedThroughput{
ReadCapacityUnits: aws.Int64(100),
WriteCapacityUnits: aws.Int64(100),
},
})
assert.NoError(t, err)
for _, item := range table.Data {
m, err := attributevalue.MarshalMap(item)
assert.NoError(t, err)
_, err = dynamoClient.PutItem(ctx, &dynamodb.PutItemInput{
TableName: aws.String(table.TableName),
Item: m,
})
assert.NoError(t, err)
}
}
return dynamoClient, func() {
dynamoClient.DeleteTable(ctx, &dynamodb.DeleteTableInput{
TableName: aws.String(tableName),
})
for _, table := range testData {
dynamoClient.DeleteTable(ctx, &dynamodb.DeleteTableInput{
TableName: aws.String(table.TableName),
})
}
}
}