--- a/types.go Sun May 27 00:14:40 2018 -0500
+++ b/types.go Sun May 27 01:38:02 2018 -0500
@@ -1,8 +1,6 @@
// Address represents a Patreon's address.
@@ -21,26 +19,26 @@
ID string `jsonapi:"primary,user"`
- FirstName string `jsonapi:"attr,first_name"`
- LastName string `jsonapi:"attr,last_name"`
- FullName string `jsonapi:"attr,full_name"`
- Vanity string `jsonapi:"attr,vanity"`
- Email string `jsonapi:"attr,email"`
- About string `jsonapi:"attr,about"`
- FacebookId string `jsonapi:"attr,facebook_id"`
- Gender int `jsonapi:"attr,gender"`
- HasPassword bool `jsonapi:"attr,has_password"`
- ImageURL string `jsonapi:"attr,image_url"`
- ThumbURL string `jsonapi:"attr,thumb_url"`
- YouTube string `jsonapi:"attr,youtube"`
- Twitter string `jsonapi:"attr,twitter"`
- Facebook string `jsonapi:"attr,facebook"`
- IsEmailVerified bool `jsonapi:"attr,is_email_verified"`
- IsSuspended bool `jsonapi:"attr,is_suspended"`
- IsDeleted bool `jsonapi:"attr,is_deleted"`
- IsNuked bool `jsonapi:"attr,is_nuked"`
- Created time.Time `jsonapi:"attr,created"`
- URL string `jsonapi:"attr,url"`
+ FirstName string `jsonapi:"attr,first_name"` + LastName string `jsonapi:"attr,last_name"` + FullName string `jsonapi:"attr,full_name"` + Vanity string `jsonapi:"attr,vanity"` + Email string `jsonapi:"attr,email"` + About string `jsonapi:"attr,about"` + FacebookId string `jsonapi:"attr,facebook_id"` + Gender int `jsonapi:"attr,gender"` + HasPassword bool `jsonapi:"attr,has_password"` + ImageURL string `jsonapi:"attr,image_url"` + ThumbURL string `jsonapi:"attr,thumb_url"` + YouTube string `jsonapi:"attr,youtube"` + Twitter string `jsonapi:"attr,twitter"` + Facebook string `jsonapi:"attr,facebook"` + IsEmailVerified bool `jsonapi:"attr,is_email_verified"` + IsSuspended bool `jsonapi:"attr,is_suspended"` + IsDeleted bool `jsonapi:"attr,is_deleted"` + IsNuked bool `jsonapi:"attr,is_nuked"` + Created string `jsonapi:"attr,created"` + URL string `jsonapi:"attr,url"` Pledges *Pledge `jsonapi:"relation,pledges"`
@@ -48,11 +46,11 @@
ID string `jsonapi:"primary,pledge"`
- AmountCents int `jsonapi:"attr,amount_cents"`
- CreatedAt time.Time `jsonapi:"attr,created_at"`
- DeclinedSince time.Time `jsonapi:"attr,declined_since"`
- PledgeCapCents int `jsonapi:"attr,pledge_cap_cents"`
- PatronPaysFees bool `jsonapi:"attr,patron_pays_fees"`
+ AmountCents int `jsonapi:"attr,amount_cents"` + CreatedAt string `jsonapi:"attr,created_at"` + DeclinedSince string `jsonapi:"attr,declined_since"` + PledgeCapCents int `jsonapi:"attr,pledge_cap_cents"` + PatronPaysFees bool `jsonapi:"attr,patron_pays_fees"` TotalHistoricalAmountCents *int `jsonapi:"attr,total_historical_amount_cents,omitempty"`
IsPaused *bool `jsonapi:"attr,is_paused,omitempty"`
@@ -68,49 +66,49 @@
ID string `jsonapi:"primary,reward"`
- Amount int `jsonapi:"attr,amount"`
- AmountCents int `jsonapi:"attr,amount_cents"`
- CreatedAt time.Time `jsonapi:"attr,created_at"`
- DeletedAt time.Time `jsonapi:"attr,deleted_at"`
- EditedAt time.Time `jsonapi:"attr,edited_at"`
- Description string `jsonapi:"attr,description"`
- ImageURL string `jsonapi:"attr,image_url"`
- PatronCount int `jsonapi:"attr,patron_count"`
- PostCount int `jsonapi:"attr,post_count"`
- Published bool `jsonapi:"attr,published"`
- PublishedAt time.Time `jsonapi:"attr,published_at"`
- RequiresShipping bool `jsonapi:"attr,requires_shipping"`
- Title string `jsonapi:"attr,title"`
- UnpublishedAt time.Time `jsonapi:"attr,unpublished_at"`
- URL string `jsonapi:"attr,url"`
+ Amount int `jsonapi:"attr,amount"` + AmountCents int `jsonapi:"attr,amount_cents"` + CreatedAt string `jsonapi:"attr,created_at,iso8601"` + DeletedAt string `jsonapi:"attr,deleted_at,iso8601,omitempty"` + EditedAt string `jsonapi:"attr,edited_at,iso8601"` + Description string `jsonapi:"attr,description"` + ImageURL string `jsonapi:"attr,image_url"` + PatronCount int `jsonapi:"attr,patron_count"` + PostCount int `jsonapi:"attr,post_count"` + Published bool `jsonapi:"attr,published"` + PublishedAt string `jsonapi:"attr,published_at,iso8601"` + RequiresShipping bool `jsonapi:"attr,requires_shipping"` + Title string `jsonapi:"attr,title"` + UnpublishedAt string `jsonapi:"attr,unpublished_at,iso8601,omitempty"` + URL string `jsonapi:"attr,url"` ID string `jsonapi:"primary,campaign"`
- Summary string `jsonapi:"attr,summary"`
- CreationName string `jsonapi:"attr,creation_name"`
- DisplayPatronGoals bool `jsonapi:"attr,display_patron_goals"`
- PayPerName string `jsonapi:"attr,pay_per_name"`
- OneLiner string `jsonapi:"attr,one_liner"`
- MainVideoEmbed string `jsonapi:"attr,main_video_embed"`
- MainVideoURL string `jsonapi:"attr,main_video_url"`
- ImageSmallURL string `jsonapi:"attr,image_small_url"`
- ImageURL string `jsonapi:"attr,image_url"`
- ThanksVideoURL string `jsonapi:"attr,thanks_video_url"`
- ThanksEmbed string `jsonapi:"attr,thanks_embed"`
- ThanksMsg string `jsonapi:"attr,thanks_msg"`
- IsChargedImmediately bool `jsonapi:"attr,is_charged_immediately"`
- IsMonthly bool `jsonapi:"attr,is_monthly"`
- IsNsfw bool `jsonapi:"attr,is_nsfw"`
- IsPlural bool `jsonapi:"attr,is_plural"`
- CreatedAt time.Time `jsonapi:"attr,created_at"`
- PublishedAt time.Time `jsonapi:"attr,published_at"`
- PledgeURL string `jsonapi:"attr,pledge_url"`
- PledgeSum int `jsonapi:"attr,pledge_sum"`
- PatronCount int `jsonapi:"attr,patron_count"`
- CreationCount int `jsonapi:"attr,creation_count"`
- OutstandingPaymentAmountCents int `jsonapi:"attr,outstanding_payment_amount_cents"`
+ Summary string `jsonapi:"attr,summary"` + CreationName string `jsonapi:"attr,creation_name"` + DisplayPatronGoals bool `jsonapi:"attr,display_patron_goals"` + PayPerName string `jsonapi:"attr,pay_per_name"` + OneLiner string `jsonapi:"attr,one_liner"` + MainVideoEmbed string `jsonapi:"attr,main_video_embed"` + MainVideoURL string `jsonapi:"attr,main_video_url"` + ImageSmallURL string `jsonapi:"attr,image_small_url"` + ImageURL string `jsonapi:"attr,image_url"` + ThanksVideoURL string `jsonapi:"attr,thanks_video_url"` + ThanksEmbed string `jsonapi:"attr,thanks_embed"` + ThanksMsg string `jsonapi:"attr,thanks_msg"` + IsChargedImmediately bool `jsonapi:"attr,is_charged_immediately"` + IsMonthly bool `jsonapi:"attr,is_monthly"` + IsNsfw bool `jsonapi:"attr,is_nsfw"` + IsPlural bool `jsonapi:"attr,is_plural"` + CreatedAt string `jsonapi:"attr,created_at"` + PublishedAt string `jsonapi:"attr,published_at"` + PledgeURL string `jsonapi:"attr,pledge_url"` + PledgeSum int `jsonapi:"attr,pledge_sum"` + PatronCount int `jsonapi:"attr,patron_count"` + CreationCount int `jsonapi:"attr,creation_count"` + OutstandingPaymentAmountCents int `jsonapi:"attr,outstanding_payment_amount_cents"` // Categories *CategoriesRelationship `jsonapi:"relation,categories,omitempty"`
Creator *User `jsonapi:"relation,creator,omitempty"`
@@ -123,11 +121,11 @@
ID string `jsonapi:"primary,goal"`
- Amount int `jsonapi:"attr,amount"`
- AmountCents int `jsonapi:"attr,amount_cents"`
- CompletedPercentage int `jsonapi:"attr,completed_percentage"`
- CreatedAt time.Time `jsonapi:"attr,created_at"`
- ReachedAt time.Time `jsonapi:"attr,reached_at"`
- Title string `jsonapi:"attr,title"`
- Description string `jsonapi:"attr,description"`
+ Amount int `jsonapi:"attr,amount"` + AmountCents int `jsonapi:"attr,amount_cents"` + CompletedPercentage int `jsonapi:"attr,completed_percentage"` + CreatedAt string `jsonapi:"attr,created_at"` + ReachedAt string `jsonapi:"attr,reached_at"` + Title string `jsonapi:"attr,title"` + Description string `jsonapi:"attr,description"` --- a/types_test.go Sun May 27 00:14:40 2018 -0500
+++ b/types_test.go Sun May 27 01:38:02 2018 -0500
@@ -1,13 +1,15 @@
"github.com/google/jsonapi"
func TestAddressUnmarshal(t *testing.T) {
@@ -20,12 +22,119 @@
- err := jsonapi.UnmarshalPayload(data, &addr)
+ Country: "somecountry", + PostalCode: "somepostalcode", + err := jsonapi.UnmarshalPayload(strings.NewReader(data), &address) t.Errorf("unexpected error: %s", err)
+ if !reflect.DeepEqual(address, exp) { + t.Errorf("value mismatch\n%#v\nis not equal to\n%#v", address, exp) +func TestRewardUnmarshal(t *testing.T) { + "created_at": "2018-05-23T21:27:59.077755+00:00", + "edited_at": "2018-05-23T21:27:59.077755+00:00", + "description": "somedescription", + "image_url": "http://some.img", + "published_at": "2018-05-23T21:27:59.077755+00:00", + "requires_shipping": true, + "unpublished_at": null, + "url": "http://some.reward" + expDate := "2018-05-23T21:27:59.077755+00:00" + Description: "somedescription", + ImageURL: "http://some.img", + RequiresShipping: true, + URL: "http://some.reward", + err := jsonapi.UnmarshalPayload(strings.NewReader(data), &act) + t.Errorf("unexpected error: %s", err) + if !reflect.DeepEqual(act, exp) { + t.Errorf("value mismatch\n%#v\nis not equal to\n%#v", act, exp) +func TestGoalUnmarshal(t *testing.T) { + "completed_percentage": 75, + "created_at": "2018-05-23T21:27:59.077755+00:00", + "description": "somedescription" + expDate := "2018-05-23T21:27:59.077755+00:00" + CompletedPercentage: 75, + Description: "somedescription", + err := jsonapi.UnmarshalPayload(strings.NewReader(data), &act) + t.Errorf("unexpected error: %s", err) + if !reflect.DeepEqual(act, exp) { + t.Errorf("value mismatch\n%#v\nis not equal to\n%#v", act, exp)