/**
* 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);
});
});
})
});