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  }