From de7332a4f87fabcc8beb59f7b732c5d5880e734b Mon Sep 17 00:00:00 2001 From: mathematicalcoffee Date: Tue, 11 Dec 2012 09:53:31 +1000 Subject: [PATCH] fixed longname resolution for nested events, added tests for it --- .../jsdoc/tag/dictionary/definitions.js | 1 - test/specs/jsdoc/name.js | 111 +++++++++++++++++- 2 files changed, 109 insertions(+), 3 deletions(-) diff --git a/rhino_modules/jsdoc/tag/dictionary/definitions.js b/rhino_modules/jsdoc/tag/dictionary/definitions.js index 2b828d02..614cc6d0 100644 --- a/rhino_modules/jsdoc/tag/dictionary/definitions.js +++ b/rhino_modules/jsdoc/tag/dictionary/definitions.js @@ -278,7 +278,6 @@ exports.defineTags = function(dictionary) { onTagged: function(doclet, tag) { setDocletKindToTitle(doclet, tag); setDocletNameToValue(doclet, tag); - applyNamespace(doclet, tag); } }); diff --git a/test/specs/jsdoc/name.js b/test/specs/jsdoc/name.js index de7bd01e..2508f2ff 100644 --- a/test/specs/jsdoc/name.js +++ b/test/specs/jsdoc/name.js @@ -1,5 +1,5 @@ describe("jsdoc/name", function() { - var jsdoc = {name: require('jsdoc/name') }; + var jsdoc = {name: require('jsdoc/name'), doclet: require('jsdoc/doclet') }; it("should exist", function() { expect(jsdoc.name).toBeDefined(); @@ -154,4 +154,111 @@ describe("jsdoc/name", function() { expect(parts.description, 'This is a description.'); }); }); -}); \ No newline at end of file + + describe("resolve", function() { + // TODO: further tests (namespaces, modules, ...) + + // @event testing. + var event = '@event'; + var memberOf = '@memberof MyClass'; + var name = '@name A'; + function makeDoclet(bits) { + var comment = '/**\n' + bits.join('\n') + '\n*/'; + return new jsdoc.doclet.Doclet(comment, {}); + } + + // Test the basic @event that is not nested. + it('unnested @event gets resolved correctly', function() { + var doclet = makeDoclet([event, name]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toBeUndefined(); + expect(doclet.longname).toEqual('event:A'); + }); + + // test all permutations of @event @name [name] @memberof. + it('@event @name @memberof resolves correctly', function() { + var doclet = makeDoclet([event, name, memberOf]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@event @memberof @name resolves correctly', function() { + var doclet = makeDoclet([event, memberOf, name]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@name @event @memberof resolves correctly', function() { + var doclet = makeDoclet([name, event, memberOf]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@name @memberof @event resolves correctly', function() { + var doclet = makeDoclet([name, memberOf, event]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@memberof @event @name resolves correctly', function() { + var doclet = makeDoclet([memberOf, event, name]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@memberof @name @event resolves correctly', function() { + var doclet = makeDoclet([memberOf, name, event]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + + // test all permutations of @event [name] @memberof + it('@event [name] @memberof resolves correctly', function() { + var doclet = makeDoclet(['@event A', memberOf]), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('@memberof @event [name] resolves correctly', function() { + var doclet = makeDoclet([memberOf, '@event A']), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + + // test full @event A.B + it('full @event definition works', function() { + var doclet = makeDoclet(['@event MyClass.A']), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + it('full @event definition with event: works', function() { + var doclet = makeDoclet(['@event MyClass.event:A']), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('event:A'); + expect(doclet.memberof).toEqual('MyClass'); + expect(doclet.longname).toEqual('MyClass.event:A'); + }); + + // a double-nested one just in case + it('@event @name MyClass.EventName @memberof somethingelse workse', function() { + var doclet = makeDoclet([event, '@name MyClass.A', '@memberof MyNamespace']), + out = jsdoc.name.resolve(doclet); + expect(doclet.name).toEqual('A'); + expect(doclet.memberof).toEqual('MyNamespace.MyClass'); + expect(doclet.longname).toEqual('MyNamespace.MyClass.event:A'); + }); + }); +});