aboutsummaryrefslogtreecommitdiffstats
path: root/print_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'print_test.go')
-rw-r--r--print_test.go85
1 files changed, 53 insertions, 32 deletions
diff --git a/print_test.go b/print_test.go
index d14c529..ec4e455 100644
--- a/print_test.go
+++ b/print_test.go
@@ -75,49 +75,70 @@ func TestUnmarshalGetPrintJobsResp(t *testing.T) {
Messages: LineItemStatusMessages{
Info: "Line-item is currently being validated",
},
- Status: OrderCreated,
+ Status: ItemCreated,
},
Title: "My Book",
}},
- ProductionDelay: 120 * time.Minute,
- ProductionDue: time.Time{},
- AddressValidation: ShippingAddressValidation{
- Address: ShippingAddress{
- City: "Lübeck",
- Country: "DE",
- IsBusiness: false,
- Name: "Hans Dampf",
- Phone: "844-212-0689",
- PostCode: "23552",
- State: "",
- Street1: "Holstenstr. 40",
- Street2: "",
- },
- Suggested: ShippingAddress{
- Country: "DE",
- State: "",
- PostCode: "23552",
- City: "Lübeck",
- Street1: "Holstenstraße 40",
- Street2: "",
- },
- Warnings: []ShippingAddressWarning{{
- Type: "validation_warning",
- Path: "external",
- Code: "REPLACED",
- Msg: "street1: Holstenstr. 40 -> Holstenstraße 40",
- }},
+ ProductionDelay: 120 * time.Minute,
+ ProductionDue: time.Time{},
+ AddressValidation: shipAddrValidationSample,
+ ShipOpt: Mail,
+ Status: PrintJobStatus{
+ Changed: mustParseTime(time.RFC3339, "2017-08-07T08:47:26.480493Z"),
+ Msg: "Print-job is currently being validated",
+ Status: OrderCreated,
},
- ShipOpt: Mail,
}},
}
requireUnmarshalJsonEq(t, want, getPrintJobsRespJson)
}
-func TestPrintJobs(t *testing.T) {
+func TestGetPrintJobs(t *testing.T) {
t.Fail() // TODO: create a few print jobs and retrieve them
c := newClient(t)
- _, err := c.PrintJobs()
+ _, err := c.GetPrintJobs()
+ require.NoError(t, err)
+}
+
+func TestPrint(t *testing.T) {
+ contact := MustParseEmailAddress("test@test.com")
+ jobEid := "demo-time"
+ productionDelay := 120 * time.Minute
+ addr := shipAddrSample
+ shipOpt := Mail
+ item := Printable{
+ ExternalId: "item-reference-1",
+ CoverUrl: "https://www.dropbox.com/s/7bv6mg2tj0h3l0r/lulu_trade_perfect_template.pdf?dl=1&raw=1",
+ InteriorUrl: "https://www.dropbox.com/s/r20orb8umqjzav9/lulu_trade_interior_template-32.pdf?dl=1&raw=1",
+ Mfg: PkgId{UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Matte, NoLinen, NoFoil},
+ Quantity: 30,
+ Title: "My Book",
+ }
+
+ c := newClient(t)
+ startTime := time.Now()
+ job, err := c.Print(contact, jobEid, productionDelay, addr, shipOpt, []Printable{item})
require.NoError(t, err)
+ require.Equal(t, contact, job.Contact)
+ requireAfter(t, job.Created, startTime)
+ requireAfter(t, job.Modified, startTime)
+ require.Equal(t, jobEid, job.ExternalId)
+ require.NotZero(t, job.Id)
+ require.Len(t, job.LineItems, 1)
+ jobItem := job.LineItems[0]
+ require.Equal(t, item.ExternalId, jobItem.ExternalId)
+ require.NotZero(t, jobItem.Id)
+ require.Equal(t, item.CoverUrl, jobItem.PrintableNormalization.Cover.SrcUrl)
+ require.Equal(t, item.InteriorUrl, jobItem.PrintableNormalization.Interior.SrcUrl)
+ require.Equal(t, item.Mfg, jobItem.Mfg)
+ require.Equal(t, item.Quantity, jobItem.Quantity)
+ require.NotEmpty(t, jobItem.Status.Messages.Info)
+ require.NotEmpty(t, jobItem.Status.Status)
+ require.Equal(t, productionDelay, job.ProductionDelay)
+ requireMatchShipAddrValidationSample(t, job.AddressValidation)
+ require.Equal(t, shipOpt, job.ShipOpt)
+ requireAfter(t, job.Status.Changed, startTime)
+ require.NotEmpty(t, job.Status.Msg)
+ require.NotEmpty(t, job.Status.Status)
}