github.com/aavshr/aws-sdk-go@v1.41.3/example/service/dynamodb/unitTest/unitTest_test.go (about) 1 //go:build example 2 // +build example 3 4 // Unit tests for package unitTest. 5 package unitTest 6 7 import ( 8 "errors" 9 "testing" 10 11 "github.com/aavshr/aws-sdk-go/aws" 12 "github.com/aavshr/aws-sdk-go/service/dynamodb" 13 "github.com/aavshr/aws-sdk-go/service/dynamodb/dynamodbiface" 14 ) 15 16 // A fakeDynamoDB instance. During testing, instatiate ItemGetter, then simply 17 // assign an instance of fakeDynamoDB to it. 18 type fakeDynamoDB struct { 19 dynamodbiface.DynamoDBAPI 20 payload map[string]string // Store expected return values 21 err error 22 } 23 24 // Mock GetItem such that the output returned carries values identical to input. 25 func (fd *fakeDynamoDB) GetItem(input *dynamodb.GetItemInput) (*dynamodb.GetItemOutput, error) { 26 output := new(dynamodb.GetItemOutput) 27 output.Item = make(map[string]*dynamodb.AttributeValue) 28 for key, value := range fd.payload { 29 output.Item[key] = &dynamodb.AttributeValue{ 30 S: aws.String(value), 31 } 32 } 33 return output, fd.err 34 } 35 36 func TestItemGetterGet(t *testing.T) { 37 expectedKey := "expected key" 38 expectedValue := "expected value" 39 getter := new(ItemGetter) 40 getter.DynamoDB = &fakeDynamoDB{ 41 payload: map[string]string{"id": expectedKey, "value": expectedValue}, 42 } 43 if actualValue := getter.Get(expectedKey); actualValue != expectedValue { 44 t.Errorf("Expected %q but got %q", expectedValue, actualValue) 45 } 46 } 47 48 // When DynamoDB.GetItem returns a non-nil error, expect an empty string. 49 func TestItemGetterGetFail(t *testing.T) { 50 expectedKey := "expected key" 51 expectedValue := "expected value" 52 getter := new(ItemGetter) 53 getter.DynamoDB = &fakeDynamoDB{ 54 payload: map[string]string{"id": expectedKey, "value": expectedValue}, 55 err: errors.New("any error"), 56 } 57 if actualValue := getter.Get(expectedKey); len(actualValue) > 0 { 58 t.Errorf("Expected %q but got %q", expectedValue, actualValue) 59 } 60 }