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

     1  package query
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"testing"
     7  )
     8  
     9  func TestNil(t *testing.T) {
    10  	q := NewQuery()
    11  	_,_,err := q.EndpointReqWithConf(nil)
    12  	if err == nil {
    13  		t.Errorf("nil conf should result in error")
    14  	}
    15  }
    16  
    17  func TestRequestUnmarshal(t *testing.T) {
    18  	s := []string{`{"TableName":"Thread","IndexName":"LastPostIndex","Select":"ALL_ATTRIBUTES","Limit":3,"ConsistentRead":true,"KeyConditions":{"LastPostDateTime":{"AttributeValueList":[{"S":"20130101"},{"S":"20130115"}],"ComparisonOperator":"BETWEEN"},"ForumName":{"AttributeValueList":[{"S":"AmazonDynamoDB"}],"ComparisonOperator":"EQ"}}}`, `{"TableName":"Thread","Select":"COUNT","ConsistentRead":true,"KeyConditions":{"ForumName":{"AttributeValueList":[{"S":"AmazonDynamoDB"}],"ComparisonOperator":"EQ"}}}`}
    19  	for _, v := range s {
    20  		var q Query
    21  		um_err := json.Unmarshal([]byte(v), &q)
    22  		if um_err != nil {
    23  			e := fmt.Sprintf("unmarshal Query: %v", um_err)
    24  			t.Errorf(e)
    25  		}
    26  		_, jerr := json.Marshal(q)
    27  		if jerr != nil {
    28  			t.Errorf("cannot marshal\n")
    29  		}
    30  	}
    31  }
    32  
    33  func TestResponseUnmarshal(t *testing.T) {
    34  	s := []string{`{"Count":3,"Items":[{"LastPostedBy":{"S":"fred@example.com"},"ForumName":{"S":"AmazonDynamoDB"},"LastPostDateTime":{"S":"20130102054211"},"Tags":{"SS":["Problem","Question"]}},{"LastPostedBy":{"S":"alice@example.com"},"ForumName":{"S":"AmazonDynamoDB"},"LastPostDateTime":{"S":"20130105111307"},"Tags":{"SS":["Idea"]}},{"LastPostedBy":{"S":"bob@example.com"},"ForumName":{"S":"AmazonDynamoDB"},"LastPostDateTime":{"S":"20130108094417"},"Tags":{"SS":["AppDesign","HelpMe"]}}]}`, `{"Count":17}`}
    35  	for _, v := range s {
    36  		var q Response
    37  		um_err := json.Unmarshal([]byte(v), &q)
    38  		if um_err != nil {
    39  			e := fmt.Sprintf("unmarshal Response: %v", um_err)
    40  			t.Errorf(e)
    41  		}
    42  		_, jerr := json.Marshal(q)
    43  		if jerr != nil {
    44  			t.Errorf("cannot marshal\n")
    45  		}
    46  	}
    47  }