UNPKG

@twofistedjustice/square-pie

Version:

an easy to use class based chainable interface for the Square API.

253 lines (227 loc) 6.27 kB
const Customer_Search = require("../src/lib/customer_request_search"); let search; /* --------------------------------------------------------* * * * Customer_Search * * * ------------------------------------------------------- */ describe("Customer_Search", () => { let class_name = "Customer_Search"; let endpoint = "/search"; //copy and paste from Square docs let method = "POST"; //http method from Square docs beforeEach(function () { search = new Customer_Search(); }); test("should have _display_name", () => { expect(search._display_name).toBeDefined(); }); test("should have display_name", () => { expect(search.display_name).toBeDefined(); }); test("_display_name should be same as class name", () => { expect(search._display_name).toEqual(class_name); }); test("display_name should be same as class name", () => { expect(search.display_name).toEqual(class_name); }); test("should have the method defined by Square set", () => { expect(search.method).toEqual(method); }); test("should have defined _last_verified_square_api_version", () => { expect(search._last_verified_square_api_version).toBeDefined(); }); test("should have defined square version", () => { expect(search.square_version).toBeDefined(); }); test("should have defined _help", () => { expect(search._help).toBeDefined(); }); test("should have defined help", () => { expect(search.help).toBeDefined(); }); test("should have an endpoint", () => { expect(search.endpoint).toEqual(endpoint); }); test("should have _delivery", () => { search.delivery = { customers: [{ a: 1 }] }; expect(search.delivery).toBeDefined(); }); test("Delivery should trap return values", () => { let expected = { a: 1 }; search.delivery = { customers: expected }; expect(search.delivery).toMatchObject(expected); }); test("Delivery should trap errors ", () => { let expected = { a: 1 }; search.delivery = { errors: [expected] }; expect(search.delivery.errors[0]).toMatchObject(expected); }); // not every request class has these test("should have defined _body", () => { expect(search.body).toBeDefined(); }); }); /* --------------------------------------------------------* * * * query - fuzzy * * * ------------------------------------------------------- */ describe("Customer_Search query - fuzzy", () => { let expected; beforeEach(function () { search = new Customer_Search(); }); test("Query().exact() should set email_address", () => { let val = "there.can.be.only.one@highlander.com"; expected = { query: { filter: { email_address: { exact: val, }, }, sort: { field: "DEFAULT", order: "ASC", }, }, }; search.query().exact().email(val); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set email_address", () => { let val = "example.com"; expected = { query: { filter: { email_address: { fuzzy: val, }, }, sort: { field: "DEFAULT", order: "ASC", }, }, }; search.query().fuzzy().email(val); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set phone_number", () => { let val = "41555"; let fn = "phone"; expected = { query: { filter: { phone_number: { fuzzy: val, }, }, sort: { field: "DEFAULT", order: "ASC", }, }, }; search.query().fuzzy()[fn](val); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set reference_id", () => { let val = "123"; let fn = "id"; expected = { query: { filter: { reference_id: { fuzzy: val, }, }, sort: { field: "DEFAULT", order: "ASC", }, }, }; search.query().fuzzy()[fn](val); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set limit", () => { let val = 42; let fn = "limit"; expected = { query: { sort: { field: "DEFAULT", order: "ASC", }, }, limit: val, }; search.query().fuzzy()[fn](val); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set sort order", () => { let val = "DESC"; expected = { query: { sort: { field: "DEFAULT", order: val, }, }, }; search.query().fuzzy().sortDown(); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set sort order", () => { let val = "ASC"; expected = { query: { sort: { field: "DEFAULT", order: val, }, }, }; search.query().fuzzy().sortDown().sortUp(); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set sort field", () => { let val = "DEFAULT"; expected = { query: { sort: { field: val, order: "ASC", }, }, }; search.query().fuzzy().sortByFirstName(); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set sort field", () => { let val = "CREATED_AT"; expected = { query: { sort: { field: val, order: "ASC", }, }, }; search.query().fuzzy().sortByDate(); expect(search.body).toMatchObject(expected); }); test("Query().fuzzy() should set sort field", () => { expected = { query: { sort: { field: "CREATED_AT", order: "ASC", }, }, }; search.query().fuzzy().sortByMostRecent(); expect(search.body).toMatchObject(expected); }); });