aboutsummaryrefslogtreecommitdiffstats
path: root/print_test.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2026-05-16 12:09:09 -0400
committerSam Anthony <sam@samanthony.xyz>2026-05-16 12:09:09 -0400
commit45914474e6d25b97e51f7858ddb5c78438d386d7 (patch)
treead19125bb2ef8295d6a297511a9eacd06151adfd /print_test.go
parentb2930794aaac97e1ee89c3c214f8cc42e254d02c (diff)
downloadlulu-45914474e6d25b97e51f7858ddb5c78438d386d7.zip
implement GET /print-jobs/id
Diffstat (limited to 'print_test.go')
-rw-r--r--print_test.go196
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)
+}