github.com/smugmug/godynamo@v0.0.0-20151122084750-7913028f6623/endpoints/update_item/update_item_test.go (about)

     1  package update_item
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  )
     7  
     8  func TestNil(t *testing.T) {
     9  	s := NewUpdateItem()
    10  	_,_,err := s.EndpointReqWithConf(nil)
    11  	if err == nil {
    12  		t.Errorf("nil conf should result in error")
    13  	}
    14  }
    15  
    16  func TestRequestUnmarshal(t *testing.T) {
    17  	s := []string{`{"TableName":"Thread","Key":{"ForumName":{"S":"AmazonDynamoDB"},"Subject":{"S":"HowdoIupdatemultipleitems?"}},"AttributeUpdates":{"LastPostedBy":{"Value":{"S":"alice@example.com"},"Action":"PUT"}},"Expected":{"LastPostedBy":{"Value":{"S":"fred@example.com"},"Exists":true}},"ReturnValues":"ALL_NEW"}`, `{"TableName":"Thread","Key":{"ForumName":{"S":"AmazonDynamoDB"},"Subject":{"S":"Maximumnumberofitems?"}},"UpdateExpression":"setLastPostedBy=:val1","ConditionExpression":"LastPostedBy=:val2","ExpressionAttributeValues":{":val1":{"S":"alice@example.com"},":val2":{"S":"fred@example.com"}},"ReturnValues":"ALL_NEW"}`, `{"TableName":"Thread","Key":{"ForumName":{"S":"AmazonDynamoDB"},"Subject":{"S":"Aquestionaboutupdates"}},"UpdateExpression":"setReplies=Replies+:num","ExpressionAttributeValues":{":num":{"N":"1"}},"ReturnValues":"NONE"}`}
    18  	for _, v := range s {
    19  		var u UpdateItem
    20  		um_err := json.Unmarshal([]byte(v), &u)
    21  		if um_err != nil {
    22  			t.Errorf("cannot unmarshal\n")
    23  		}
    24  		_, jerr := json.Marshal(u)
    25  		if jerr != nil {
    26  			t.Errorf("cannot marshal\n")
    27  		}
    28  	}
    29  }
    30  
    31  func TestResponseUnmarshal(t *testing.T) {
    32  	s := []string{`{"Attributes":{"LastPostedBy":{"S":"alice@example.com"},"ForumName":{"S":"AmazonDynamoDB"},"LastPostDateTime":{"S":"20130320010350"},"Tags":{"SS":["Update","MultipleItems","HelpMe"]},"Subject":{"S":"Maximumnumberofitems?"},"Views":{"N":"5"},"Message":{"S":"Iwanttoput10milliondataitemstoanAmazonDynamoDBtable.Isthereanupperlimit?"}}}`}
    33  	for _, v := range s {
    34  		var u Response
    35  		um_err := json.Unmarshal([]byte(v), &u)
    36  		if um_err != nil {
    37  			t.Errorf("cannot unmarshal\n")
    38  		}
    39  		_, jerr := json.Marshal(u)
    40  		if jerr != nil {
    41  			t.Errorf("cannot marshal\n")
    42  		}
    43  	}
    44  }