API Docs for: 1.5.1
Show:

File: test/specs/data/urlBuilder.spec.js

/**
 * Created by Chantell.Nichols on 10/6/2015.
 */
define(['src/js/data/urlBuilder'], function (UrlBuilder) {
  describe('UrlBuilder', function () {
    var builder;
    var config = 'test-config';
    var service = 'test-service';
    var key = 'test-key';
    var secret = 'test-secret';
    beforeEach(function () {
      builder = new UrlBuilder(service, config, key, secret);
      ICE.fetchJSON.calls.reset();
    });

    it('should create a url from paramters', function () {
      var expected = ['test-service/host/', config].join('');
      expect(builder.urlStart).toBe(expected);
    });

    describe('getSummaryData', function () {
      it('should be able to create a summary url with all data', function () {
        var resaleEnabled = true;
        var platinumEnabled = true;
        var expected = ['test-service/host/', config, '/facets?by=shape+inventorytypes&show=facerange&q=available&apikey=', key, '&apisecret=', secret].join('');
        var promise = builder.getSummaryData(resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });

      it('should be able to create a summary url without resale data', function () {
        var resaleEnabled = false;
        var platinumEnabled = true;
        var expected = ['test-service/host/', config, '/facets?by=shape&show=facerange&q=and(available,has(inventorytypes,"primary"))&apikey=', key, '&apisecret=', secret].join('');
        var promise = builder.getSummaryData(resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });

      it('should be able to create a summary url without platinum data', function () {
        var resaleEnabled = true;
        var platinumEnabled = false;
        var expected = ['test-service/host/', config, '/facets?by=shape+inventorytypes&show=facerange&q=and(available,has(offertypes,"standard"))&apikey=', key, '&apisecret=', secret].join('');
        var promise = builder.getSummaryData(resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });

      it('should be able to create a summary url without resale or platinum data', function () {
        var resaleEnabled = false;
        var platinumEnabled = false;
        var expected = ['test-service/host/', config, '/facets?by=shape&show=facerange&q=and(available,and(has(inventorytypes,"primary"),has(offertypes,"standard")))&apikey=', key, '&apisecret=', secret].join('');
        var promise = builder.getSummaryData(resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });
    });

    describe('getPlaceData', function () {
      it('should be able to create a place availability url', function () {
        var segments = [1, 2];
        var resaleEnabled = true;
        var platinumEnabled = true;
        var expected = ['test-service/host/', config,
          '/facets?by=shape+offers+inventorytypes&show=places&q=and(available,any(shapes,"',
          segments.join('","'), '"))&apikey=', key, '&apisecret=', secret
        ].join('');

        var promise = builder.getPlaceData(segments, resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });

      it('filters out resale tickets if resaleEnabled is false and platinumEnabled is true', function () {
        var segments = [1, 2];
        var resaleEnabled = false;
        var platinumEnabled = true;
        var expected = ['test-service/host/', config,
          '/facets?by=shape+offers+inventorytypes&show=places&q=and(and(available,any(shapes,"',
          segments.join('","'), '")),has(inventorytypes,"primary"))&apikey=', key, '&apisecret=', secret
        ].join('');

        var promise = builder.getPlaceData(segments, resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });

      it('filters out platinum tickets if resaleEnabled is true and platinumEnabled is false', function () {
        var segments = [1, 2];
        var resaleEnabled = true;
        var platinumEnabled = false;
        var expected = ['test-service/host/', config,
          '/facets?by=shape+offers+inventorytypes&show=places&q=and(and(available,any(shapes,"',
          segments.join('","'), '")),has(offertypes,"standard"))&apikey=', key, '&apisecret=', secret
        ].join('');

        var promise = builder.getPlaceData(segments, resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });

      it('only shows primary tickets if resaleEnabled is false and platinumEnabled is false', function () {
        var segments = [1, 2];
        var resaleEnabled = false;
        var platinumEnabled = false;
        var expected = ['test-service/host/', config,
          '/facets?by=shape+offers+inventorytypes&show=places&q=and(and(available,any(shapes,"',
          segments.join('","'), '")),and(has(inventorytypes,"primary"),has(offertypes,"standard")))&apikey=', key, '&apisecret=', secret
        ].join('');

        var promise = builder.getPlaceData(segments, resaleEnabled, platinumEnabled);
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });
    });

    describe('getOffers', function () {
      it('should be able to get all offers', function () {
        var expected = ['test-service/host/', config, '/offers?apikey=', key, '&apisecret=', secret].join('');
        var promise = builder.getOffers();
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });
      it('should be able to get a single offer', function () {
        var expected = ['test-service/host/', config, '/offers/test?apikey=', key, '&apisecret=', secret].join('');
        var promise = builder.getOffers('test');
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });
    });

    describe('getSegmentsOffers', function () {
      it('should be able to get all segments\' offers', function () {
        var expected = ['test-service/host/', config, '/facets?by=shape+offers&apikey=', key, '&apisecret=', secret].join('');
        builder.getSegmentsOffers();
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });
    });

    describe('getAdaData', function () {
      it('should be able to get ADA data', function () {
        var expected = ['test-service/host/', config, '/facets?by=attributes+accessibility+shape+offers+inventorytypes&show=places&q=accessibility&apikey=', key, '&apisecret=', secret].join('');
        builder.getAdaData();
        expect(ICE.fetchJSON).toHaveBeenCalledWith(expected);
      });
    });
  })
});