Created
January 19, 2018 15:39
-
-
Save alexbeletsky/e26551db54bc90bf0527f0d684bdeafa to your computer and use it in GitHub Desktop.
get_invoices_html.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* eslint prefer-arrow-callback: 0 */ | |
import expect from 'expect'; | |
import moment from 'moment'; | |
import timekeeper from 'timekeeper'; | |
import beautify from 'js-beautify'; | |
import * as apiUtils from '../../../helpers/api'; | |
import * as serverUtils from '../../../helpers/server'; | |
import * as mongoUtils from '../../../helpers/mongo'; | |
import { invoicesFixtures } from './fixtures/get_invoice_html'; | |
describe('[integration/api] GET /v2/invoices/{invoiceId}.html', function() { | |
serverUtils.startServer(); | |
serverUtils.stopServer(); | |
// freezing the time because invoices are generated with a timestamps | |
// and snapshots should be updated every day.. | |
before(function() { | |
timekeeper.freeze(moment('2018-01-17').toDate()); | |
}); | |
after(function() { | |
timekeeper.reset(); | |
}); | |
const beautifyHtml = html => | |
beautify.html(html, { | |
indent_size: 2, | |
indent_inner_html: true, | |
}); | |
const cleanupMongo = function() { | |
const fixtures = [{ collection: 'invoices', data: invoicesFixtures }]; | |
return Promise.resolve() | |
.then(mongoUtils.cleanV2({ mongo: this.mongo, fixtures })) | |
.then(mongoUtils.loadFixturesV2({ mongo: this.mongo, fixtures })); | |
}; | |
before('load mongo fixtures', cleanupMongo); | |
const invoiceHtmlTest = (id, lang) => () => { | |
before( | |
'call api', | |
apiUtils.callApiV2({ | |
method: 'GET', | |
url: `/v2/invoices/${id}.html?lang=${lang}`, | |
}), | |
); | |
it('should respond with HTTP 200 (OK)', function() { | |
expect(this.response.statusCode).toEqual(200); | |
}); | |
it(`should have correct html (${lang})`, function() { | |
expect(beautifyHtml(this.response.payload)).toMatchSnapshot(this); | |
}); | |
}; | |
describe('germany', function() { | |
describe('invoice', function() { | |
describe('no VAT registered', function() { | |
describe('de', invoiceHtmlTest('1', 'de')); | |
describe('en', invoiceHtmlTest('1', 'en')); | |
}); | |
describe('VAT registered', function() { | |
describe('de', invoiceHtmlTest('2', 'de')); | |
describe('en', invoiceHtmlTest('2', 'en')); | |
}); | |
}); | |
describe('credit note', function() { | |
describe('no VAT registered', function() { | |
describe('de', invoiceHtmlTest('3', 'de')); | |
describe('en', invoiceHtmlTest('3', 'en')); | |
}); | |
describe('VAT registered', function() { | |
describe('de', invoiceHtmlTest('4', 'de')); | |
describe('en', invoiceHtmlTest('4', 'en')); | |
}); | |
}); | |
}); | |
describe('europe', function() { | |
describe('invoice', function() { | |
describe('no VAT registered', function() { | |
describe('de', invoiceHtmlTest('5', 'de')); | |
describe('en', invoiceHtmlTest('5', 'en')); | |
}); | |
describe('VAT registered', function() { | |
describe('de', invoiceHtmlTest('6', 'de')); | |
describe('en', invoiceHtmlTest('6', 'en')); | |
}); | |
}); | |
describe('credit note', function() { | |
describe('no VAT registered', function() { | |
describe('de', invoiceHtmlTest('7', 'de')); | |
describe('en', invoiceHtmlTest('7', 'en')); | |
}); | |
describe('VAT registered', function() { | |
describe('de', invoiceHtmlTest('8', 'de')); | |
describe('en', invoiceHtmlTest('8', 'en')); | |
}); | |
}); | |
}); | |
describe('rest of the world', function() { | |
describe('invoice', function() { | |
describe('no VAT registered', function() { | |
describe('de', invoiceHtmlTest('9', 'de')); | |
describe('en', invoiceHtmlTest('9', 'en')); | |
}); | |
describe('VAT registered', function() { | |
describe('de', invoiceHtmlTest('10', 'de')); | |
describe('en', invoiceHtmlTest('10', 'en')); | |
}); | |
}); | |
describe('credit note', function() { | |
describe('no VAT registered', function() { | |
describe('de', invoiceHtmlTest('11', 'de')); | |
describe('en', invoiceHtmlTest('11', 'en')); | |
}); | |
describe('VAT registered', function() { | |
describe('de', invoiceHtmlTest('12', 'de')); | |
describe('en', invoiceHtmlTest('12', 'en')); | |
}); | |
}); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment