package lulu import ( _ "embed" "testing" "time" "github.com/shopspring/decimal" "github.com/stretchr/testify/require" ) //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"), }, 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", }, 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: OrderCreated, }, 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", }}, }, ShipOpt: Mail, }}, } requireUnmarshalJsonEq(t, want, getPrintJobsRespJson) } func TestPrintJobs(t *testing.T) { t.Fail() // TODO: create a few print jobs and retrieve them c := newClient(t) _, err := c.PrintJobs() require.NoError(t, err) }