UNPKG

protractor

Version:

Webdriver E2E test wrapper for Angular.

172 lines (159 loc) 4.65 kB
var linksProcessor = require('../processors/add-links'); var _ = require('lodash'); describe('add-links', function() { var addLinks = function(docs) { linksProcessor.init({ linksHash: 'master' }); linksProcessor.process(docs); }; it('should add protractor link', function() { var doc = { fileName: 'protractor', startingLine: 123 }; addLinks([doc]); expect(doc.sourceLink).toBe('https://github.com/angular/protractor/' + 'blob/master/lib/protractor.js#L123'); }); it('should add webdriver link', function() { var doc = { fileName: 'webdriver', startingLine: 123 }; addLinks([doc]); expect(doc.sourceLink).toBe('https://code.google.com/p/selenium/' + 'source/browse/javascript/webdriver/webdriver.js#123'); }); it('should add links to types', function() { var docWithFunction = { typeExpression: 'function(webdriver.WebElement, number)', fileName: 'protractor', startingLine: 123, returns: { tagDef: { name: 'returns', aliases: ['return'], canHaveType: true }, tagName: 'return', description: '', startingLine: 119, typeExpression: 'webdriver.WebElement', type: { type: 'NameExpression', name: 'webdriver.WebElement' }, typeList: ['webdriver.WebElement'] }, params: [ { tagDef: { name: 'param', multi: true, docProperty: 'params', canHaveName: true, canHaveType: true }, tagName: 'param', description: 'Map function that will be applied to each element.', startingLine: 396, typeExpression: 'function(webdriver.WebElement, number)', type: { type: 'FunctionType', params: [ {type: 'NameExpression', name: 'webdriver.WebElement'}, {type: 'NameExpression', name: 'number'} ] }, typeList: ['function(webdriver.WebElement, number)'], name: 'mapFn' }, { tagDef: { name: 'param', multi: true, docProperty: 'params', canHaveName: true, canHaveType: true }, tagName: 'param', description: '', startingLine: 171, typeExpression: 'Protractor', type: { type: 'NameExpression', name: 'Protractor' }, typeList: ['Protractor'], name: 'ptor' } ] }; // Given a type and a function. var docs = [ { name: 'webdriver.WebElement', fileName: 'webdriver', startingLine: 123 }, docWithFunction, { name: 'Protractor', fileName: 'protractor', startingLine: 3 } ]; // When you add links. addLinks(docs); // Then ensure the link was added. var getDesc = function(index) { return docs[1].params[index].paramString; }; expect(getDesc(0)).toBe( 'function([webdriver.WebElement](#webdriverwebelement), number)'); expect(getDesc(1)).toBe( '[Protractor](#protractor)'); expect(docs[1].returnString).toBe( '[webdriver.WebElement](#webdriverwebelement)'); }); it('should add @link links', function() { // Given a doc with a @link annotation. var docs = [ { name: 'webdriver.WebElement', fileName: 'webdriver', startingLine: 123 }, { name: 'element.findElements', description: 'A promise that {@link webdriver.WebElement}s', fileName: 'protractor', startingLine: 3, returns: { tagDef: { name: 'returns', aliases: ['return'], canHaveType: true }, tagName: 'return', description: 'A promise located {@link webdriver.WebElement}s.', startingLine: 119, typeExpression: 'webdriver.WebElement', type: { type: 'NameExpression', name: 'webdriver.WebElement' }, typeList: ['webdriver.WebElement'] } } ]; // When you add links. addLinks(docs); // Then ensure a link was added to the type. expect(docs[1].description).toBe('A promise that ' + '[webdriver.WebElement](#webdriverwebelement)s'); expect(docs[1].returns.description).toBe('A promise located ' + '[webdriver.WebElement](#webdriverwebelement)s.'); }); });