Skip to content

Commit

Permalink
Adds test build
Browse files Browse the repository at this point in the history
Signed-off-by: Christopher Rogers <chrissrogers@gmail.com>
  • Loading branch information
chrissrogers committed Dec 10, 2015
1 parent 1343490 commit 8ee4f21
Show file tree
Hide file tree
Showing 14 changed files with 152 additions and 121 deletions.
13 changes: 6 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ BIN = node_modules/.bin
WEBPACK = $(BIN)/webpack
SERVER = $(BIN)/webpack-dev-server
SRC = index.js $(shell find lib -type f -name '*.js')
TESTS = $(wildcard test/*.test.js)

server: build
@$(SERVER) --inline --hot --port 8020
Expand All @@ -17,11 +18,13 @@ build/recurly.js: index.js $(SRC) node_modules
build/recurly.min.js: build/recurly.js
@$(WEBPACK) -p

test: build
build/test.js: $(TESTS)
$(WEBPACK) --config webpack.test.config.js

test-sauce:
test: build build/test.js
# $(WEBPACK) 'mocha!./build/test.js'

# TESTS = $(wildcard test/*.test.js)
test-sauce:

# test: test-phantomjs

Expand All @@ -35,10 +38,6 @@ test-sauce:
# test-sauce: build build/test.js
# @$(T) saucelabs -b $(BROWSER)

# build/test.js: TESTFILE = $(foreach test, $(TESTS), 'require("./$(test)");')
# build/test.js: $(TESTS)
# @echo $(TESTFILE) | $(DUO) --quiet --use duo-babel --development --type js --stdout > $@

node_modules: package.json
@npm install --silent

Expand Down
16 changes: 16 additions & 0 deletions karma.conf.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['mocha'],
files: ['build/test.js'],
preprocessors: {},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: false,
concurrency: Infinity
});
};
16 changes: 10 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,19 @@
"node": ">=0.11"
},
"devDependencies": {
"assert": "^1.3.0",
"babel-core": "^6.1.2",
"babel-loader": "^6.0.1",
"babel-preset-es2015": "^6.1.2",
"duo": "0.x",
"duo-test": "0.x",
"ejs": "2.x",
"koa-bodyparser": "2.x",
"koa-route": "2.x",
"uglify-js": "2.4.x",
"glob": "^6.0.1",
"karma": "^0.13.15",
"karma-chrome-launcher": "^0.2.1",
"karma-firefox-launcher": "^0.1.7",
"karma-ie-launcher": "^0.2.0",
"karma-mocha": "^0.2.1",
"karma-phantomjs-launcher": "^0.2.1",
"lodash.after": "^3.0.1",
"phantomjs": "^1.9.19",
"webpack": "1.12.2",
"webpack-dev-server": "1.12.1"
}
Expand Down
18 changes: 8 additions & 10 deletions test/bank-account.test.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
var assert = require('component/assert');
var clone = require('component/clone');
var each = require('component/each');
var noop = require('chrissrogers/noop');
var after = require('segmentio/after');
var merge = require('yields/merge');
var helpers = require('./support/helpers');
import assert from 'assert';
import clone from 'component-clone';
import after from 'lodash.after';
import merge from 'lodash.merge';
import helpers from './support/helpers';

helpers.apiTest(function (requestMethod) {
var Recurly = window.recurly.Recurly;
Expand Down Expand Up @@ -40,7 +38,7 @@ helpers.apiTest(function (requestMethod) {
it('requires Recurly.configure', function () {
try {
recurly = new Recurly();
recurly.bankAccount.token(valid, noop);
recurly.bankAccount.token(valid, () => {});
} catch (e) {
assert(~e.message.indexOf('configure'));
}
Expand Down Expand Up @@ -116,7 +114,7 @@ helpers.apiTest(function (requestMethod) {
it('yields a token', function (done) {
var part = after(examples.length, done);

each(examples, function (example) {
examples.forEach(function (example) {
builder(example, function (example) {
recurly.bankAccount.token(example, function (err, token) {
assert(!err);
Expand All @@ -130,7 +128,7 @@ helpers.apiTest(function (requestMethod) {
it('sets the value of a data-recurly="token" field', function (done) {
var part = after(examples.length, done);

each(examples, function (example) {
examples.forEach(function (example) {
builder(example, function (example) {
recurly.bankAccount.token(example, function (err, token) {
assert(!err);
Expand Down
18 changes: 8 additions & 10 deletions test/configure.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
var assert = require('component/assert');
var each = require('component/each');
var bind = require('component/bind');
import assert from 'assert';

describe('Recurly.configure', function () {
var Recurly = window.recurly.Recurly;
Expand All @@ -20,13 +18,13 @@ describe('Recurly.configure', function () {
];

it('throws', function () {
each(examples, function (opts) {
examples.forEach(function (opts) {
assert.throws(bind(recurly, recurly.configure, opts));
});
});

it('Recurly.configured remains false', function () {
each(examples, function (opts) {
examples.forEach(function (opts) {
try {
recurly.configure(opts);
} catch (e) {
Expand All @@ -47,20 +45,20 @@ describe('Recurly.configure', function () {
];

it('sets Recurly.config to the options given', function () {
each(examples, function (opts) {
examples.forEach(function (opts) {
var recurly = new Recurly();
recurly.configure(opts);
each(opts, function (opt, val) {
opts.forEach(function (opt, val) {
assert(recurly.config[opt] === val);
});
});
});

it('sets default values for options not given', function () {
each(examples, function (opts) {
examples.forEach(function (opts) {
var recurly = new Recurly();
recurly.configure(opts);
each(recurly.config, function (option, val) {
recurly.config.forEach(function (option, val) {
if (opts[option]) {
assert(opts[option] === val);
} else {
Expand Down Expand Up @@ -90,7 +88,7 @@ describe('Recurly.configure', function () {
var examples = [0, '', null, false, undefined];

it('sets default values instead', function () {
each(examples, function (falsey) {
examples.forEach(function (falsey) {
var recurly = new Recurly();

recurly.configure({
Expand Down
20 changes: 9 additions & 11 deletions test/coupon.test.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
var assert = require('component/assert');
var each = require('component/each');
var noop = require('chrissrogers/noop');
var helpers = require('./support/helpers');
import assert from 'assert';
import helpers from './support/helpers';

helpers.apiTest(function (requestMethod) {
describe('Recurly.coupon (' + requestMethod + ')', function () {
var Recurly = window.recurly.Recurly;
var valid = { plan: 'basic', coupon: 'coop' };
var invalidPlan = { plan: 'invalid', coupon: 'coop' };
var invalidCoupon = { plan: 'basic', coupon: 'coop-invalid' };
var recurly;
const Recurly = window.recurly.Recurly;
const valid = { plan: 'basic', coupon: 'coop' };
const invalidPlan = { plan: 'invalid', coupon: 'coop' };
const invalidCoupon = { plan: 'basic', coupon: 'coop-invalid' };
let recurly;

beforeEach(function () {
recurly = new Recurly();
Expand All @@ -31,7 +29,7 @@ helpers.apiTest(function (requestMethod) {
it('requires Recurly.configure', function () {
try {
recurly = new Recurly();
recurly.coupon(valid, noop);
recurly.coupon(valid, () => {});
} catch (e) {
assert(~e.message.indexOf('configure'));
}
Expand Down Expand Up @@ -62,7 +60,7 @@ helpers.apiTest(function (requestMethod) {
it('contains a discount amount', function (done) {
assertValidCoupon('coop', function (coupon) {
assert(!coupon.discount.rate);
each(coupon.discount.amount, function (currency, amount) {
coupon.discount.amount.forEach(function (currency, amount) {
assert(currency.length === 3);
assert(typeof amount === 'number');
});
Expand Down
19 changes: 9 additions & 10 deletions test/open.test.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
var assert = require('component/assert');
var each = require('component/each');
var noop = require('chrissrogers/noop');
import assert from 'assert';

describe('Recurly.open', function () {
var Recurly = window.recurly.Recurly;
var exampleUrl = 'http://recurly.com';
var exampleData = { example: 'data' };
var originalOpen = window.open;
var recurly;
const Recurly = window.recurly.Recurly;
const exampleUrl = 'http://recurly.com';
const exampleData = { example: 'data' };
const originalOpen = window.open;
const noop = () => {};
let recurly;

beforeEach(function () {
recurly = new Recurly;
Expand Down Expand Up @@ -70,7 +69,7 @@ describe('Recurly.open', function () {
];

it('opens that url', function () {
each(examples, function (example) {
examples.forEach(function (example) {
recurly.open(example);
assert(window.open.calledWithMatch(example));
});
Expand All @@ -85,7 +84,7 @@ describe('Recurly.open', function () {
];

it('opens the url relative to Recurly.config.api', function () {
each(examples, function (example) {
examples.forEach(function (example) {
var expectation = recurly.config.api + example;
recurly.open(example);
assert(window.open.calledWithMatch(expectation));
Expand Down
15 changes: 7 additions & 8 deletions test/plan.test.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
var assert = require('component/assert');
var noop = require('chrissrogers/noop');
var helpers = require('./support/helpers');
import assert from 'assert';
import helpers from './support/helpers';

helpers.apiTest(function (requestMethod) {
describe('Recurly.plan (' + requestMethod + ')', function () {
var Recurly = window.recurly.Recurly;
var valid = 'basic';
var invalid = 'invalid';
var recurly;
const Recurly = window.recurly.Recurly;
const valid = 'basic';
const invalid = 'invalid';
let recurly;

beforeEach(function () {
recurly = new Recurly();
Expand All @@ -29,7 +28,7 @@ helpers.apiTest(function (requestMethod) {
it('requires Recurly.configure', function () {
try {
recurly = new Recurly();
recurly.plan(valid, noop);
recurly.plan(valid, () => {});
} catch (e) {
assert(~e.message.indexOf('configure'));
}
Expand Down
8 changes: 4 additions & 4 deletions test/pricing.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
var assert = require('component/assert');
import assert from 'assert';

describe('Recurly.Pricing', function () {
var Recurly = window.recurly.Recurly;
var recurly;
var pricing;
const Recurly = window.recurly.Recurly;
let recurly;
let pricing;

beforeEach(function () {
recurly = new Recurly();
Expand Down
41 changes: 18 additions & 23 deletions test/recurly.test.js
Original file line number Diff line number Diff line change
@@ -1,53 +1,48 @@
var assert = require('component/assert');
var noop = require('chrissrogers/noop');
import assert from 'assert';

describe('Recurly', function () {
var Recurly = window.recurly.Recurly;
var recurly;
describe('Recurly', () => {
const Recurly = window.recurly.Recurly;
let recurly;

beforeEach(function () {
recurly = new Recurly();
});
beforeEach(() => recurly = new Recurly());

it('should have a version', function () {
it('should have a version', () => {
assert('string' === typeof recurly.version);
});

it('should be an event emitter', function () {
it('should be an event emitter', () => {
assert(recurly.on && recurly.emit);
});

it('should be exposed as a global singleton', function () {
it('should be exposed as a global singleton', () => {
assert(window.recurly instanceof Recurly);
});

describe('Recurly.request', function () {
var cors = false;
describe('Recurly.request', () => {
let cors = false;

beforeEach(function () {
beforeEach(() => {
recurly.configure({
publicKey: 'test',
api: '//' + window.location.host,
cors: cors
});
});

describe('when configured for jsonp requests', function () {
it('invokes recurly.jsonp', function () {
describe('when configured for jsonp requests', () => {
it('invokes recurly.jsonp', () => {
sinon.stub(recurly, 'jsonp');
recurly.request('get', 'test', noop);
recurly.request('get', 'test', () => {});
assert(recurly.jsonp.calledOnce);
});
});

describe('when configured for cors requests', function () {
before(function () {
cors = true;
});
describe('when configured for cors requests', () => {
before(() => cors = true);

it('invokes recurly.xhr', function () {
it('invokes recurly.xhr', () => {
sinon.stub(recurly, 'xhr');
recurly.request('get', 'test', noop);
recurly.request('get', 'test', () => {});
assert(recurly.xhr.calledOnce);
});
});
Expand Down
Loading

0 comments on commit 8ee4f21

Please sign in to comment.