diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2026-05-16 12:09:09 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2026-05-16 12:09:09 -0400 |
| commit | 45914474e6d25b97e51f7858ddb5c78438d386d7 (patch) | |
| tree | ad19125bb2ef8295d6a297511a9eacd06151adfd /print_test.go | |
| parent | b2930794aaac97e1ee89c3c214f8cc42e254d02c (diff) | |
| download | lulu-45914474e6d25b97e51f7858ddb5c78438d386d7.zip | |
implement GET /print-jobs/id
Diffstat (limited to 'print_test.go')
| -rw-r--r-- | print_test.go | 196 |
1 files changed, 113 insertions, 83 deletions
diff --git a/print_test.go b/print_test.go index ce9fbda..ad8730b 100644 --- a/print_test.go +++ b/print_test.go @@ -12,85 +12,86 @@ import ( //go:embed testdata/getprintjobsresp.json var getPrintJobsRespJson string -func TestUnmarshalGetPrintJobsResp(t *testing.T) { - want := getPrintJobsResp{ - Count: 1, - Next: "https://api.lulu.com/resources/?page=1&page_size=1", - Prev: "https://api.lulu.com/resources/?page=1&page_size=1", - Results: []PrintJob{{ - Contact: MustParseEmailAddress("test@test.com"), - Cost: PrintJobCost{ - LineItemCosts: nil, - ShipCost: FulfillmentCost{ - TotalCostExclTax: decimal.RequireFromString("132.74"), - TotalCostInclTax: decimal.RequireFromString("132.74"), - TotalTax: decimal.RequireFromString("0.00"), - TaxRate: decimal.RequireFromString("0.000000"), - }, - FulfillmentCost: FulfillmentCost{ - TotalCostExclTax: decimal.RequireFromString("0.75"), - TotalCostInclTax: decimal.RequireFromString("0.81"), - TotalTax: decimal.RequireFromString("0.06"), - TaxRate: decimal.RequireFromString("0.080000"), - }, - Fees: []Fee{{ - Currency: "USD", - Type: "HANDLING_FEE", - Sku: "HANDLING_FEE_6", - TaxRate: decimal.RequireFromString("0.088750"), - TotalCostExclTax: decimal.RequireFromString("4.00"), - TotalCostInclTax: decimal.RequireFromString("4.36"), - TotalTax: decimal.RequireFromString("0.36"), - }}, - TotalCostExclTax: decimal.RequireFromString("123.45"), - TotalCostInclTax: decimal.RequireFromString("678.00"), - TotalTax: decimal.RequireFromString("0.123400"), +var printJobSample = PrintJob{ + Contact: MustParseEmailAddress("test@test.com"), + Cost: PrintJobCost{ + LineItemCosts: nil, + ShipCost: FulfillmentCost{ + TotalCostExclTax: decimal.RequireFromString("132.74"), + TotalCostInclTax: decimal.RequireFromString("132.74"), + TotalTax: decimal.RequireFromString("0.00"), + TaxRate: decimal.RequireFromString("0.000000"), + }, + FulfillmentCost: FulfillmentCost{ + TotalCostExclTax: decimal.RequireFromString("0.75"), + TotalCostInclTax: decimal.RequireFromString("0.81"), + TotalTax: decimal.RequireFromString("0.06"), + TaxRate: decimal.RequireFromString("0.080000"), + }, + Fees: []Fee{{ + Currency: "USD", + Type: "HANDLING_FEE", + Sku: "HANDLING_FEE_6", + TaxRate: decimal.RequireFromString("0.088750"), + TotalCostExclTax: decimal.RequireFromString("4.00"), + TotalCostInclTax: decimal.RequireFromString("4.36"), + TotalTax: decimal.RequireFromString("0.36"), + }}, + TotalCostExclTax: decimal.RequireFromString("123.45"), + TotalCostInclTax: decimal.RequireFromString("678.00"), + TotalTax: decimal.RequireFromString("0.123400"), + }, + Created: mustParseTime(time.RFC3339, "2017-08-07T08:47:26.485456Z"), + Modified: mustParseTime(time.RFC3339, "2017-08-07T08:47:26.485490Z"), + EstimatedShippingDates: EstimatedShippingDates{ + ArrivalMax: MustParseDate("2017-08-12"), + ArrivalMin: MustParseDate("2017-08-10"), + DispatchMax: MustParseDate("2017-08-09"), + DispatchMin: MustParseDate("2017-08-07"), + }, + ExternalId: "demo-time", + Id: 1, + LineItems: []LineItem{{ + ExternalId: "item-reference-1", + Id: 1, + PrintableId: "", + PrintableNormalization: PrintableNormalization{ + Cover: NormalizationJob{ + SrcMd5Sum: "e78512c777e7f5841fe8f1992cefb898", + SrcUrl: "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", }, - Created: mustParseTime(time.RFC3339, "2017-08-07T08:47:26.485456Z"), - Modified: mustParseTime(time.RFC3339, "2017-08-07T08:47:26.485490Z"), - EstimatedShippingDates: EstimatedShippingDates{ - ArrivalMax: MustParseDate("2017-08-12"), - ArrivalMin: MustParseDate("2017-08-10"), - DispatchMax: MustParseDate("2017-08-09"), - DispatchMin: MustParseDate("2017-08-07"), + Interior: NormalizationJob{ + SrcMd5Sum: "7f8af20c296747689756f8e310135d79", + SrcUrl: "https://www.dropbox.com/sh/p3zh22vzsaegiri/AACOUn3LFKsITDzylh13bQpsa/161025/thesis2.pdf?dl=1", }, - ExternalId: "demo-time", - Id: 1, - LineItems: []LineItem{{ - ExternalId: "item-reference-1", - Id: 1, - PrintableId: "", - PrintableNormalization: PrintableNormalization{ - Cover: NormalizationJob{ - SrcMd5Sum: "e78512c777e7f5841fe8f1992cefb898", - SrcUrl: "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", - }, - Interior: NormalizationJob{ - SrcMd5Sum: "7f8af20c296747689756f8e310135d79", - SrcUrl: "https://www.dropbox.com/sh/p3zh22vzsaegiri/AACOUn3LFKsITDzylh13bQpsa/161025/thesis2.pdf?dl=1", - }, - }, - Quantity: 20, - Status: LineItemStatus{ - Messages: LineItemStatusMessages{ - Info: "Line-item is currently being validated", - }, - Status: ItemCreated, - }, - Title: "My Book", - }}, - 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, + }, + Quantity: 20, + Status: LineItemStatus{ + Messages: LineItemStatusMessages{ + Info: "Line-item is currently being validated", }, - }}, - } + Status: ItemCreated, + }, + Title: "My Book", + }}, + 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, + }, +} +func TestUnmarshalGetPrintJobsResp(t *testing.T) { + want := getPrintJobsResp{ + Count: 1, + Next: "https://api.lulu.com/resources/?page=1&page_size=1", + Prev: "https://api.lulu.com/resources/?page=1&page_size=1", + Results: []PrintJob{printJobSample}, + } requireUnmarshalJsonEq(t, want, getPrintJobsRespJson) } @@ -143,20 +144,22 @@ func TestMarshalReprintReq(t *testing.T) { requireMarshalJsonEq(t, reprintReqJson, req) } +var printableSample = 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", +} + 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", - } + item := printableSample c := newClient(t) startTime := time.Now() @@ -184,3 +187,30 @@ func TestPrint(t *testing.T) { require.NotEmpty(t, job.Status.Msg) require.NotEmpty(t, job.Status.Status) } + +func TestReprint(t *testing.T) { + t.Fail() // TODO +} + +func TestGetPrintJob(t *testing.T) { + contact := MustParseEmailAddress("test@test.com") + jobEid := "demo-time" + productionDelay := 120 * time.Minute + addr := shipAddrSample + shipOpt := Mail + items := []Printable{printableSample} + + c := newClient(t) + job1, err := c.Print(contact, jobEid, productionDelay, addr, shipOpt, items) + require.NoError(t, err) + require.NotZero(t, job1.Id) + + job2, err := c.GetPrintJob(job1.Id) + require.NoError(t, err) + + // Ignore timestamp because job may have been modified between + // creation and retrieval time + job2.Modified = job1.Modified + + require.Equal(t, job1, job2) +} |