62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
/*
|
|
* Copyright (c) 2015, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
jest.autoMockOff();
|
|
|
|
describe('React documentation parser', function() {
|
|
var ReactDocumentationParser;
|
|
var parser;
|
|
var recast;
|
|
|
|
beforeEach(function() {
|
|
recast = require('recast');
|
|
ReactDocumentationParser = require('../ReactDocumentationParser');
|
|
parser = new ReactDocumentationParser();
|
|
});
|
|
|
|
function pathFromSource(source) {
|
|
return new recast.types.NodePath(
|
|
recast.parse(source).program.body[0].expression
|
|
);
|
|
}
|
|
|
|
describe('parseSource', function() {
|
|
|
|
it('allows custom component definition resolvers', function() {
|
|
var path = pathFromSource('({foo: "bar"})');
|
|
var resolver = jest.genMockFunction().mockReturnValue(path);
|
|
var handler = jest.genMockFunction();
|
|
parser.addHandler(handler);
|
|
parser.parseSource('', resolver);
|
|
|
|
expect(resolver).toBeCalled();
|
|
expect(handler.mock.calls[0][1]).toBe(path);
|
|
});
|
|
|
|
it('errors if component definition is not found', function() {
|
|
var handler = jest.genMockFunction();
|
|
expect(function() {
|
|
parser.parseSource('', handler);
|
|
}).toThrow(ReactDocumentationParser.ERROR_MISSING_DEFINITION);
|
|
expect(handler).toBeCalled();
|
|
|
|
handler = jest.genMockFunction().mockReturnValue([]);
|
|
expect(function() {
|
|
parser.parseSource('', handler);
|
|
}).toThrow(ReactDocumentationParser.ERROR_MISSING_DEFINITION);
|
|
expect(handler).toBeCalled();
|
|
});
|
|
|
|
});
|
|
|
|
});
|