unitTest.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // +build example
  2. // Package unitTest demonstrates how to unit test, without needing to pass a
  3. // connector to every function, code that uses DynamoDB.
  4. package unitTest
  5. import (
  6. "github.com/aws/aws-sdk-go/aws"
  7. "github.com/aws/aws-sdk-go/service/dynamodb"
  8. "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
  9. "github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface"
  10. )
  11. // ItemGetter can be assigned a DynamoDB connector like:
  12. // svc := dynamodb.DynamoDB(sess)
  13. // getter.DynamoDB = dynamodbiface.DynamoDBAPI(svc)
  14. type ItemGetter struct {
  15. DynamoDB dynamodbiface.DynamoDBAPI
  16. }
  17. // Get a value from a DynamoDB table containing entries like:
  18. // {"id": "my primary key", "value": "valuable value"}
  19. func (ig *ItemGetter) Get(id string) (value string) {
  20. var input = &dynamodb.GetItemInput{
  21. Key: map[string]*dynamodb.AttributeValue{
  22. "id": {
  23. S: aws.String(id),
  24. },
  25. },
  26. TableName: aws.String("my_table"),
  27. AttributesToGet: []*string{
  28. aws.String("value"),
  29. },
  30. }
  31. if output, err := ig.DynamoDB.GetItem(input); err == nil {
  32. if _, ok := output.Item["value"]; ok {
  33. dynamodbattribute.Unmarshal(output.Item["value"], &value)
  34. }
  35. }
  36. return
  37. }