source: Dev/branches/rest-dojo-ui/client/util/docscripts/tests/basic.js @ 264

Last change on this file since 264 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

File size: 7.0 KB
Line 
1dojo.provide("util.docscripts.tests.basic");
2(function(){
3
4        var url = dojo.moduleUrl("util.docscripts", "dumpObj.php") + "";
5        function getdata(file){
6               
7                var r;
8                dojo.xhrGet({
9                        url: url + "?f=" + file,
10                        sync: true,
11                        handleAs:"json",
12                        handle: function(response){
13                                r = response;
14                        }
15                });
16                return r;
17               
18        }
19       
20        var docs;
21        function getmember(key, obj){
22                obj = obj || docs;
23                return obj[key];
24        }
25       
26        doh.register("doctests.basic", [
27       
28                function actual_fetching(t){
29                        docs = getdata("util/docscripts/tests/simple.js");
30                        t.t(docs);
31                        t.t(typeof docs == "object");
32                        t.is(docs["#provides"], "util.docscripts.tests.simple", "provide() object found");
33                        t.is(docs["#resource"], "docscripts/tests/simple.js", "filename expansion");
34                        t.t(docs["util.docscripts.tests"], "provide() expansion");
35                },
36               
37                function simple_requires(t){
38                        t.t(dojo.isArray(docs['#requires'][0]), "populated require");
39                        t.t(~dojo.indexOf(docs["#requires"][0], "dojo.cookie"), "found cookie require");
40                },
41               
42                function module_level_docs(t){
43                        var fb = getmember("util.docscripts.tests.simple");
44                        t.is("Module level summary", fb.summary, "summary from psuedo on module obj");
45                },
46               
47                function basic_class(t){
48                       
49                        var fb = getmember("dojo.FooBar");
50                       
51                        t.t(fb, "dojo.FooBar docs exist");
52                        t.t(fb.classlike, "classlike thinger found");
53                        t.is("A Class", fb.summary, "picked up summary from post-decalre docs");
54                        t.is("Function", fb.type, "inference");
55                        t.is("A Class description", fb.description, "description from post-declare docs");
56                       
57                        t.t(dojo.isArray(fb.examples), "found examples");
58                        t.is(1, fb.examples.length, "found one example exactly");
59                       
60                        var fbc = getmember("dojo.FooBar.constructor");
61                        t.is(fbc.prototype, "dojo.FooBar", "prototype binding");
62                        t.is(fbc.parameters.args.name, fb.parameters.args.name, "params from constructor implied on class");
63                       
64                        var mf = getmember("dojo.FooBar.memberFn");
65                        t.t(mf, "member function picked out of declaration");
66
67                        var params = mf.parameters;
68                        t.is("String", params.a.type);
69                        t.f(params.b.optional);
70                        t.is("String", params.b.type);
71                        t.f(params.b.optional);
72                        t.is("Boolean", params.c.type);
73                        t.t(params.c.optional, "last arg optional");
74                        t.is("Integer", mf.returns);
75                        t.is("A member function", mf.summary);
76                       
77                },
78               
79                function inherited_class(t){
80                        var fb2 = getmember("dojo.FooBar2");
81                        t.t(fb2);
82                        // TODO:
83                        // check fb2.chains for dojo.FooBar
84                        // check fb2.inheritance
85                        // FIXME:
86                        // what is chains v prototype
87                },
88               
89                function mixin_docs(t){
90                        var mv = getmember("dojo.mixedValue");
91                        t.is("External doc block, mixed", mv.summary, "summary found for mixed value");
92                        t.is("Integer", mv.type, "type infered from mixed value");
93                        t.is("dojo", mv.attached, "alias lookup in d.mixin");
94                       
95                        var mf = getmember("dojo.mixedFunction");
96                        t.is("dojo", mf.attached, "alias lookup in d.mixin");
97                        t.is("Integer", mf.returns, "returns from return line");
98                        t.is("From mixin", mf.summary, "basic summary");
99                        t.is("a", mf.parameters.a.name, "parameter picked up");
100                        t.t(mf.parameters.a.optional, "param is optional");
101                        t.is(mf.parameters.a.summary, "Some number or not", "parameter description picked up");
102                },
103               
104                function basic_function(t){
105                       
106                        var fb = getmember("dojo.thisIsAtestFunction");
107                        t.t(fb, "testFunction docs exist");
108                        t.is("Testing a function", fb.summary);
109                        t.is("String", fb.returns, "return value determined");
110                        t.is("Testing a string parameter", fb.parameters.a.summary, "parameter summary picked out");
111                },
112               
113                function testfunction2(t){
114                        var tf = getmember("dojo.testFunction2");
115                        t.is("Simple summary", tf.summary);
116                        t.is("Simple Description.\nOn Multiple lines.", tf.description);
117                        t.t(tf.parameters.id.optional);
118                        t.is("Duplicate matched in signature and in line", tf.parameters.id.summary);
119                        t.is("String", tf.parameters.id.type);
120                },
121               
122                function test_returner(t){
123
124                        // FIXME: the absence of a return comment populates only return_summary
125                        // when it's like:
126                        // ---
127                        // returns: Foo|Bar|Baz
128                        //              You'd expect Foo|Bar|Baz to be return value, and this to be return_summary
129                        // ---
130                       
131                        var r = getmember("dojo.returner");
132                        t.t(r);
133                       
134                        // FIXME: expected but not getting:
135                        // t.is("String|Integer", r.returns);
136                        // t.is("This should be description", r.return_summary);
137                       
138                        // FIXME: actually getting:
139                        t.is("String|Integer\nThis should be description", r.return_summary);
140                        t.f(r.returns);
141                },
142               
143                function test_multireturner(t){
144                        var r = getmember("dojo.multiReturns");
145                        t.t(r);
146                        t.is("String|Integer", r.returns, "found all return statement types in block");
147                        t.is("Simple multireturn check", r.summary);
148                },
149               
150                function aliased_query(t){
151                        var dq = getmember("dojo.query.stub");
152                        t.t(dq, "$ -> dojo.query unwrapped from closure");
153                        t.is("Integer", dq.returns);
154                        t.is("aliased to `dojo.query`", dq.summary, "FIX: requires undone <code>");
155                },
156               
157                function kwarg_test(t){
158                        var kw = getmember("util.docscripts.tests.simple.__kwArgs");
159                        var args = kw.parameters;
160                       
161                        // FIXME: should this be actually mixed into something that has a type=__kwArgs?
162                        // eg: dojo.kwArgFunction.parameter.args object?
163                        var kwf = getmember("dojo.kwArgFunction");
164                        var kwp = kwf.parameters.args;
165                       
166                        t.is("util.docscripts.tests.simple.__kwArgs", kwp.type);
167                       
168                },
169               
170//              function fetch_amd_style(t){
171//                      docs = getdata("util/docscripts/tests/simple_amd.js");
172//                      console.warn("amd-basic", docs);
173//              },
174//             
175//              function fetch_amd_declare(t){
176//                      docs = getdata("util/docscripts/tests/declare_amd.js");
177//                      console.warn("amg-declare", docs);
178//              },
179               
180                function functional(t){
181                        // refs #13345
182                        docs = getdata("util/docscripts/tests/functional.js");
183                        var hasit = getmember("util.docscripts.tests.FunctionalThinger");
184                        t.t(hasit, "object exists in parsed output, meaning parsing happened");
185                },
186               
187                function raw_declare_init(t){
188                        docs = getdata("util/docscripts/tests/extend_declare.js");
189                        t.t(true);
190                },
191               
192                function raw_declare(t){
193                        var barbaz = getmember("dojo.BarBaz");
194                        t.t(barbaz, "raw declare() call defined a named class");
195                },
196               
197                function lang_extend(t){
198                        var someprop = getmember("dojo.BarBaz.someProp");
199                        t.t(someprop, "lang.extend worked");
200                        t.is("String", someprop.type, "lang.extend unwrapped innards");
201                },
202
203// FIXME; dojo.mixin(a.b.prototype, { ... }) parses, but shows up differently in the obj
204// ... differently than dojo.extend(a.b, { ... }) ... the former is attached to "a.b", the
205// latter attached to "a.b.prototype". no sure how this pans out for generate.php
206//
207//              function lang_mixin(t){
208//                      var someprop = getmember("dojo.BarBaz.moreProps");
209//                      console.log(docs, someprop);
210//                      t.t(someprop, "lang._mixin worked");
211//                      t.is("String", someprop.type, "lang._mixin unwrapped innards");
212//              },
213//             
214               
215                function winning(t){
216                        var prop = getmember("dojo.BarBaz.winning");
217                        console.warn(prop);
218                        t.t(prop, "aliased extend() call resolves properly");
219                        t.is("Boolean", prop.type);
220                        t.is("Always true.", prop.summary, "are we? rad.")
221                }
222       
223        ]);
224
225})();
Note: See TracBrowser for help on using the repository browser.