UNPKG

@getoccasion/sdk

Version:

An SDK library that enables access to Occasion's application, providing a rich DSL for creating and managing bookings.

97 lines (77 loc) 2.92 kB
var OccasionSDKSpecs = {} describe('Occasion.Client', function() { beforeEach(function() { this.occsnClient = Occasion.Client({ token: 'my_token' }) moxios.install(this.occsnClient.interface.axios) window.onSuccess = jasmine.createSpy('onSuccess') window.onFailure = jasmine.createSpy('onFailure') window.onCompletion = jasmine.createSpy('onCompletion') }) afterEach(function() { moxios.uninstall() }) it('adds resource classes on initialization', function() { expect(_.keys(this.occsnClient)).toContain('Product', 'Answer', 'Question', 'Order') }) it('is not immutable', function() { this.resource = this.occsnClient.Product.build({ field: 'original' }) this.resource.assignAttributes({ field: 'new' }) expect(this.resource.field).toEqual('new') }) describe('when token not of type string', function() { it('throws error', function() { expect(function() { Occasion.Client() }).toThrow('Token must be of type string') }) }) describe('when making requests', function() { beforeEach(function() { this.occsnClient.Product.all().then(window.onSuccess) }) it('makes request to default base Occasion API URL', function() { expect(moxios.requests.mostRecent().url.indexOf(Occasion.baseUrl)).toEqual(0) }) it('adds token to Authorization header', function() { var encodedToken = window.btoa(unescape(encodeURIComponent('my_token:'))) expect(moxios.requests.mostRecent().headers['Authorization']).toEqual('Basic ' + encodedToken) }) }) describe('override baseUrl', function() { beforeEach(function() { this.occsnClient = Occasion.Client({ baseUrl: 'http://occasion.lvh.me:3000/', token: 'my_token' }) moxios.install(this.occsnClient.interface.axios) }) describe('when making requests', function() { beforeEach(function() { this.occsnClient.Product.all().then(window.onSuccess) }) it('makes request to baseURL', function() { expect(moxios.requests.mostRecent().url.indexOf('http://occasion.lvh.me:3000/')).toEqual(0) }) }) }) describe('immutable', function() { beforeEach(function() { this.occsnClient = Occasion.Client({ immutable: true, token: 'my_token' }) }) describe('when changing resource', function() { beforeEach(function() { this.resource = this.occsnClient.Product.build({ field: 'original' }) this.resource2 = this.resource.assignAttributes({ field: 'new' }) }) it('does not mutate resource', function() { expect(this.resource.field).toEqual('original') }) it('creates new resource', function() { expect(this.resource).not.toBe(this.resource2) }) it('adds changes to new resource', function() { expect(this.resource2.field).toEqual('new') }) }) }) })