flectra/doc/_extensions/autojsdoc/parser/tests/test_crap.py

76 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
"""
Test various crap patterns found in Flectra code to ensure they don't blow up
the parser thingie
"""
from autojsdoc.parser import jsdoc
from support import parse
def test_export_external():
[mod] = parse("""
flectra.define('module', function () {
return $.Deferred().reject();
});
""")
assert isinstance(mod.exports, jsdoc.CommentDoc)
assert mod.exports.doc == ''
def test_extend_jq():
parse("""
flectra.define('a', function (r) {
$.extend($.expr[':'], { a: function () {} });
$.fn.extend({ a: function () {} });
});
""")
def test_extend_dynamic():
parse("""
flectra.define('a', function () {
foo.bar.baz[qux + '_external'] = function () {};
});
""")
def test_extend_deep():
parse("""
flectra.define('a', function () {
var eventHandler = $.summernote.eventHandler;
var dom = $.summernote.core.dom;
dom.thing = function () {};
var fn_editor_currentstyle = eventHandler.modules.editor.currentStyle;
eventHandler.modules.editor.currentStyle = function () {}
});
""")
def test_arbitrary():
parse("""
flectra.define('bob', function () {
var page = window.location.href.replace(/^.*\/\/[^\/]+/, '');
var mailWidgets = ['mail_followers', 'mail_thread', 'mail_activity', 'kanban_activity'];
var bob;
var fldj = foo.getTemplate().baz;
});
""")
def test_prototype():
[A, B] = parse("""
flectra.define('mod1', function () {
var exports = {};
exports.Foo = Backbone.Model.extend({});
exports.Bar = Backbone.Model.extend({});
var BarCollection = Backbone.Collection.extend({
model: exports.Bar,
});
exports.Baz = Backbone.Model.extend({});
return exports;
});
flectra.define('mod2', function (require) {
var models = require('mod1');
var _super_orderline = models.Bar.prototype;
models.Foo = models.Bar.extend({});
var _super_order = models.Baz.prototype;
models.Bar = models.Baz.extend({});
});
""")