package lulu import ( "context" "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 TestUnmarshalCoverValidation(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 := CoverValidation{ 1, "https://www.dropbox.com/sh/p3zh22vzsaegiri/AADP367j0bTWlt8fCu-_tm2ia/161025/139056_cover.pdf?dl=1", 210, nil, CoverStatusNormalizing, } requireUnmarshalJsonEq(t, want, data) } func TestStartCoverValidation(t *testing.T) { c := newClient(t) mfg := PkgId{ UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Gloss, NoLinen, NoFoil, } id, err := c.StartCoverValidation(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.StartCoverValidation(coverUrl, mfg, 210) require.NoError(t, err) tpoll(t, func() bool { val, err := c.GetCoverValidation(id) require.NoError(t, err) if val.Status.IsFinal() { require.Equal(t, id, val.Id) validateCoverValidation(t, val) return true } return false }) } func TestValidateCover(t *testing.T) { c := newClient(t) ctx, cancel := context.WithTimeout(t.Context(), timeout) defer cancel() mfg := PkgId{UsTrade, Mono, Standard, Perfect, P60UncoatedWhite, Gloss, NoLinen, NoFoil} val, err := c.ValidateCover(ctx, coverUrl, mfg, 210) require.NoError(t, err) validateCoverValidation(t, val) } func validateCoverValidation(t *testing.T, val CoverValidation) { t.Helper() require.Equal(t, CoverStatusNormalized, val.Status) require.Equal(t, coverUrl, val.SrcUrl) //require.Equal(t, uint(210), val.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, val.Errors) }