package lulu import ( "testing" "github.com/stretchr/testify/require" ) func TestMarshalCoverDimensionsReq(t *testing.T) { t.Parallel() requireMarshalJsonEq(t, `{ "pod_package_id": "0600X0900.BW.STD.PB.060UW444.MXX", "interior_page_count": 210, "unit": "pt"}`, coverDimensionsReq{ PkgId{ UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Matte, NoLinen, NoFoil}, 210, Points}) } func TestUnmarshalCoverDimensions(t *testing.T) { t.Parallel() requireUnmarshalJsonEq(t, CoverDimensions{123.4, 567.8, Points}, `{"width": "123.400", "height": "567.800", "unit": "pt"}`) requireUnmarshalJsonEq(t, CoverDimensions{123.4, 567.8, Millimeters}, `{"width": "123.400", "height": "567.800", "unit": "mm"}`) requireUnmarshalJsonEq(t, CoverDimensions{123.4, 567.8, Inches}, `{"width": "123.400", "height": "567.800", "unit": "inch"}`) } func TestCoverDimensions(t *testing.T) { c := newClient(t) mfg := PkgId{ UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Matte, NoLinen, NoFoil, } dims, err := c.CoverDimensions(mfg, 210, Points) require.NoError(t, err) require.Equal(t, CoverDimensions{920, 666, Points}, dims) } func TestMarshalValidateCoverReq(t *testing.T) { t.Parallel() want := `{ "source_url": "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", "pod_package_id": "0600X0900.BW.STD.PB.060UW444.MXX", "interior_page_count": 210 }` req := validateCoverReq{ "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", PkgId{ UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Matte, NoLinen, NoFoil, }, 210, } requireMarshalJsonEq(t, want, req) } func TestUnmarshalCoverValidationRecord(t *testing.T) { t.Parallel() data := `{ "id": 1, "source_url": "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", "page_count": 210, "errors": null, "status": "NORMALIZING" }` want := CoverValidationRecord{ 1, "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", 210, "", CoverStatusNormalizing, } requireUnmarshalJsonEq(t, want, data) } func TestValidateCover(t *testing.T) { c := newClient(t) mfg := PkgId{ UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Gloss, NoLinen, NoFoil, } id, err := c.ValidateCover(coverUrl, mfg, 210) require.NoError(t, err) require.NotZero(t, id) } func TestGetCoverValidation(t *testing.T) { c := newClient(t) mfg := PkgId{ UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Gloss, NoLinen, NoFoil, } id, err := c.ValidateCover(coverUrl, mfg, 210) require.NoError(t, err) poll(t, func() bool { rec, err := c.GetCoverValidation(id) require.NoError(t, err) if rec.Status.IsFinal() { require.Equal(t, CoverStatusNormalized, rec.Status) require.Equal(t, id, rec.Id) require.Equal(t, coverUrl, rec.SrcUrl) //require.Equal(t, uint(210), rec.NPages) // The server doesn't seem to set the page_count // field, but that's OK because we already know // the page count. require.Empty(t, rec.Errors) return true } return false }) }