Skip to content

Commit 32226f6

Browse files
authored
Merge pull request #102 from ember-learn/bugfix/fix-helper-modules
[bugfix] Fixes helper API docs and adds acceptance tests
2 parents 9a42e80 + 65f463c commit 32226f6

File tree

10 files changed

+196
-34
lines changed

10 files changed

+196
-34
lines changed

addon/components/api/x-params/template.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</thead> --}}
1212
<tbody>
1313
{{#each params as |param|}}
14-
<tr>
14+
<tr data-test-item-param>
1515
<td><span class="item-params__param-name">{{param.name}}</span></td>
1616
<td><span class="item-params__param-type">{{param.type}}</span></td>
1717
<td>{{param.description}}</td>

addon/components/api/x-sections/template.hbs

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,43 @@
11
{{#each-in sections as |section items|}}
22
{{#if items}}
3-
<section class="item-section">
4-
<h2>{{capitalize section}}</h2>
3+
<section data-test-api-section class="item-section">
4+
<h2 data-test-section-header={{section}}>{{capitalize section}}</h2>
55

66
{{#each items as |item|}}
7-
{{#if (or item.isClass item.isComponent)}}
8-
<h3 id={{item.name}} class="item-section__class-header">
9-
{{#link-to 'docs.api.item' (concat 'root/' item.id)}}
10-
{{#if (eq item.exportType 'default')}}
11-
<span class="item-section__default-label">Default</span>
12-
{{/if}}
13-
{{item.name}}
14-
{{/link-to}}
15-
</h3>
7+
<div data-test-item>
8+
{{#if (or item.isClass item.isComponent)}}
9+
<h3 id={{item.name}} data-test-item-header class="item-section__class-header">
10+
{{#link-to 'docs.api.item' (concat 'root/' item.id)}}
11+
{{#if (eq item.exportType 'default')}}
12+
<span class="item-section__default-label">Default</span>
13+
{{/if}}
14+
{{item.name}}
15+
{{/link-to}}
16+
</h3>
1617

17-
{{{item.description}}}
18-
{{else}}
19-
<h3 id={{item.name}} class="item-section__item-header">
20-
<a href="#{{item.name}}">
21-
{{#if (eq item.exportType 'default')}}
22-
<span class="item-section__default-label">Default</span>
23-
{{/if}}
18+
{{{item.description}}}
19+
{{else}}
20+
<h3 id={{item.name}} data-test-item-header class="item-section__item-header">
21+
<a href="#{{item.name}}">
22+
{{#if (eq item.exportType 'default')}}
23+
<span class="item-section__default-label">Default</span>
24+
{{/if}}
2425

25-
{{type-signature item}}
26-
</a>
27-
</h3>
26+
{{type-signature item}}
27+
</a>
28+
</h3>
2829

29-
{{#if item.exportType}}
30-
{{api/x-import-path item=item}}
31-
{{/if}}
30+
{{#if item.exportType}}
31+
{{api/x-import-path data-test-import-path=true item=item}}
32+
{{/if}}
3233

33-
{{{item.description}}}
34+
<p data-test-item-description>
35+
{{{item.description}}}
36+
</p>
3437

35-
{{api/x-params params=item.params}}
36-
{{/if}}
38+
{{api/x-params data-test-item-params=true params=item.params}}
39+
{{/if}}
40+
</div>
3741
{{/each}}
3842
</section>
3943
{{/if}}

lib/broccoli/docs-compiler.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ function removeEmptyModules(modules) {
5757
module.classes.length === 0
5858
&& module.components.length === 0
5959
&& module.functions.length === 0
60+
&& module.helpers.length === 0
6061
&& module.variables.length === 0
6162
);
6263
});

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@
7272
"babel-eslint": "^8.2.2",
7373
"broccoli-asset-rev": "^2.6.0",
7474
"common-tags": "^1.7.2",
75+
"ember-classy-page-object": "^0.4.6",
7576
"ember-cli": "~2.18.1",
76-
"ember-cli-addon-docs-esdoc": "^0.1.0",
77+
"ember-cli-addon-docs-esdoc": "^0.1.1",
7778
"ember-cli-addon-docs-yuidoc": "^0.1.1",
7879
"ember-cli-dependency-checker": "^2.1.0",
7980
"ember-cli-deploy": "^1.0.2",
@@ -90,6 +91,7 @@
9091
"ember-disable-prototype-extensions": "^1.1.3",
9192
"ember-export-application-global": "^2.0.0",
9293
"ember-load-initializers": "^1.0.0",
94+
"ember-maybe-import-regenerator-for-testing": "^1.0.0",
9395
"ember-resolver": "^4.5.0",
9496
"ember-source": "~2.18.0",
9597
"ember-test-selectors": "^0.3.8",
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/** @documenter esdoc */
2+
3+
import { helper } from '@ember/component/helper';
4+
5+
/**
6+
returns the absolute value of a number
7+
8+
@param {number} [number] the passed number
9+
@return {number}
10+
*/
11+
export function esdocHelper([number]) {
12+
return Math.abs(number);
13+
}
14+
15+
export default helper(esdocHelper);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/** @documenter yuidoc */
2+
3+
import { helper } from '@ember/component/helper';
4+
5+
/**
6+
returns the absolute value of a number
7+
8+
@function yuidocHelper
9+
@param {number} [number] the passed number
10+
@return {number}
11+
*/
12+
export function yuidocHelper([number]) {
13+
return Math.abs(number);
14+
}
15+
16+
export default helper(yuidocHelper);

tests/acceptance/docs-route-test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ test('the docs route renders', function(assert) {
1111
});
1212
});
1313

14-
// Todo: Bring this test back once we finish up the API docs pages
1514
test('I can visit an autogenerated docs route', function(assert) {
1615
visit('/docs');
1716
click('[data-test-id="nav-item"]:contains({{docs-hero}})');
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { module, test } from 'qunit';
2+
import { setupApplicationTest } from 'ember-qunit';
3+
import { currentURL, visit } from '@ember/test-helpers';
4+
5+
import modulePage from '../../../pages/api/module';
6+
7+
module('Acceptance | API | helpers', function(hooks) {
8+
setupApplicationTest(hooks);
9+
10+
for (let documenter of ['esdoc', 'yuidoc']) {
11+
let helperName = `${documenter}Helper`;
12+
let kebabName = `${documenter}-helper`;
13+
14+
test('{{esdoc-helper}}', async function(assert) {
15+
await visit('/sandbox');
16+
await modulePage.navItems.findOne({ text: `{{${kebabName}}}` }).click();
17+
18+
assert.equal(currentURL(), `/sandbox/api/helpers/${kebabName}`, 'correct url');
19+
20+
let helpersSection = modulePage.sections.findOne({ header: 'Helpers' });
21+
22+
assert.ok(helpersSection.isPresent, 'Renders the helpers section');
23+
24+
let helperItem = helpersSection.items.findOne(i => i.header.includes(helperName));
25+
26+
assert.ok(helperItem.isPresent, 'Renders the helper item');
27+
28+
assert.equal(
29+
helperItem.header,
30+
`${helperName}(number: number): number`,
31+
'renders the type signature of the helper correctly'
32+
);
33+
34+
assert.equal(
35+
helperItem.importPath,
36+
`import { ${helperName} } from 'ember-cli-addon-docsapp/helpers/${kebabName}';`,
37+
'renders the import path correctly'
38+
);
39+
40+
assert.equal(helperItem.params.length, 1, 'renders the item parameter');
41+
});
42+
}
43+
});
44+
45+

tests/pages/api/module.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import PageObject, { collection, text } from 'ember-classy-page-object';
2+
3+
const ModulePage = PageObject.extend({
4+
navItems: collection({ scope: '[data-test-id="nav-item"]' }),
5+
6+
sections: collection({
7+
scope: '[data-test-api-section]',
8+
9+
header: text('[data-test-section-header]'),
10+
11+
items: collection({
12+
scope: '[data-test-item]',
13+
14+
header: text('[data-test-item-header]'),
15+
importPath: text('[data-test-import-path]'),
16+
description: text('[data-test-item-description]'),
17+
18+
params: collection({
19+
scope: '[data-test-item-params] [data-test-item-param]'
20+
})
21+
})
22+
})
23+
});
24+
25+
export default ModulePage.create();

yarn.lock

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,6 +1940,10 @@ caseless@~0.12.0:
19401940
version "0.12.0"
19411941
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
19421942

1943+
ceibo@~2.0.0:
1944+
version "2.0.0"
1945+
resolved "https://registry.yarnpkg.com/ceibo/-/ceibo-2.0.0.tgz#9a61eb054a91c09934588d4e45d9dd2c3bf04eee"
1946+
19431947
center-align@^0.1.1:
19441948
version "0.1.3"
19451949
resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
@@ -2735,9 +2739,17 @@ ember-app-scheduler@^0.2.0:
27352739
dependencies:
27362740
ember-cli-babel "^6.3.0"
27372741

2738-
ember-cli-addon-docs-esdoc@^0.1.0:
2739-
version "0.1.0"
2740-
resolved "https://registry.yarnpkg.com/ember-cli-addon-docs-esdoc/-/ember-cli-addon-docs-esdoc-0.1.0.tgz#9f8420f2eb05fd651567cc49e02a491e6abe485b"
2742+
ember-classy-page-object@^0.4.6:
2743+
version "0.4.6"
2744+
resolved "https://registry.yarnpkg.com/ember-classy-page-object/-/ember-classy-page-object-0.4.6.tgz#7c1434806e7bedc9c6a60d4759e865439f67d685"
2745+
dependencies:
2746+
broccoli-funnel "^2.0.1"
2747+
ember-cli-babel "^6.6.0"
2748+
ember-cli-page-object "1.13.0-alpha.1"
2749+
2750+
ember-cli-addon-docs-esdoc@^0.1.1:
2751+
version "0.1.1"
2752+
resolved "https://registry.yarnpkg.com/ember-cli-addon-docs-esdoc/-/ember-cli-addon-docs-esdoc-0.1.1.tgz#860ed79b2226dcc16fef2641350f9d5e3dcb6ae3"
27412753
dependencies:
27422754
broccoli-caching-writer "^3.0.3"
27432755
ember-cli-babel "^6.6.0"
@@ -2977,6 +2989,26 @@ ember-cli-normalize-entity-name@^1.0.0:
29772989
dependencies:
29782990
silent-error "^1.0.0"
29792991

2992+
ember-cli-page-object@1.13.0-alpha.1:
2993+
version "1.13.0-alpha.1"
2994+
resolved "https://registry.yarnpkg.com/ember-cli-page-object/-/ember-cli-page-object-1.13.0-alpha.1.tgz#f5b80b9c19001cdedc62c65be84ef06591f38487"
2995+
dependencies:
2996+
ceibo "~2.0.0"
2997+
ember-cli-babel "^6.6.0"
2998+
ember-cli-get-component-path-option "^1.0.0"
2999+
ember-cli-is-package-missing "^1.0.0"
3000+
ember-cli-node-assets "^0.2.2"
3001+
ember-cli-normalize-entity-name "^1.0.0"
3002+
ember-cli-path-utils "^1.0.0"
3003+
ember-cli-string-utils "^1.0.0"
3004+
ember-cli-test-info "^1.0.0"
3005+
ember-cli-valid-component-name "^1.0.0"
3006+
ember-cli-version-checker "^1.2.0"
3007+
ember-native-dom-helpers "^0.5.3"
3008+
ember-test-helpers "^0.6.3"
3009+
jquery "^3.2.1"
3010+
rsvp "^3.2.1"
3011+
29803012
ember-cli-path-utils@^1.0.0:
29813013
version "1.0.0"
29823014
resolved "https://registry.yarnpkg.com/ember-cli-path-utils/-/ember-cli-path-utils-1.0.0.tgz#4e39af8b55301cddc5017739b77a804fba2071ed"
@@ -3062,7 +3094,7 @@ ember-cli-valid-component-name@^1.0.0:
30623094
dependencies:
30633095
silent-error "^1.0.0"
30643096

3065-
ember-cli-version-checker@^1.0.2:
3097+
ember-cli-version-checker@^1.0.2, ember-cli-version-checker@^1.2.0:
30663098
version "1.3.1"
30673099
resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-1.3.1.tgz#0bc2d134c830142da64bf9627a0eded10b61ae72"
30683100
dependencies:
@@ -3302,6 +3334,14 @@ ember-load-initializers@^1.0.0:
33023334
dependencies:
33033335
ember-cli-babel "^6.0.0-beta.7"
33043336

3337+
ember-maybe-import-regenerator-for-testing@^1.0.0:
3338+
version "1.0.0"
3339+
resolved "https://registry.yarnpkg.com/ember-maybe-import-regenerator-for-testing/-/ember-maybe-import-regenerator-for-testing-1.0.0.tgz#894b8089c5b3067c920b492c81233603852d5c2f"
3340+
dependencies:
3341+
broccoli-funnel "^1.0.1"
3342+
ember-cli-babel "^6.6.0"
3343+
regenerator-runtime "^0.9.5"
3344+
33053345
ember-modal-dialog@^2.4.1:
33063346
version "2.4.2"
33073347
resolved "https://registry.yarnpkg.com/ember-modal-dialog/-/ember-modal-dialog-2.4.2.tgz#51d0748fee3c14552616f390e8290dbbe4a1870a"
@@ -3312,6 +3352,13 @@ ember-modal-dialog@^2.4.1:
33123352
ember-ignore-children-helper "^1.0.0"
33133353
ember-wormhole "^0.5.1"
33143354

3355+
ember-native-dom-helpers@^0.5.3:
3356+
version "0.5.10"
3357+
resolved "https://registry.yarnpkg.com/ember-native-dom-helpers/-/ember-native-dom-helpers-0.5.10.tgz#9c7172e4ddfa5dd86830c46a936e2f8eca3e5896"
3358+
dependencies:
3359+
broccoli-funnel "^1.1.0"
3360+
ember-cli-babel "^6.6.0"
3361+
33153362
ember-qunit@^3.3.2:
33163363
version "3.3.2"
33173364
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.3.2.tgz#cb48e9deaffa3b4c90983f28c5cf8590894c8ea3"
@@ -3406,6 +3453,10 @@ ember-svg-jar@^0.12.0:
34063453
mkdirp "^0.5.1"
34073454
path-posix "^1.0.0"
34083455

3456+
ember-test-helpers@^0.6.3:
3457+
version "0.6.3"
3458+
resolved "https://registry.yarnpkg.com/ember-test-helpers/-/ember-test-helpers-0.6.3.tgz#f864cdf6f4e75f3f8768d6537785b5ab6e82d907"
3459+
34093460
ember-test-selectors@^0.3.8:
34103461
version "0.3.8"
34113462
resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-0.3.8.tgz#1e8ae3e78c64bacc4bbfe87f9973c85805699db2"
@@ -7025,6 +7076,10 @@ regenerator-runtime@^0.11.0:
70257076
version "0.11.1"
70267077
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
70277078

7079+
regenerator-runtime@^0.9.5:
7080+
version "0.9.6"
7081+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029"
7082+
70287083
regenerator-transform@^0.10.0:
70297084
version "0.10.1"
70307085
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"

0 commit comments

Comments
 (0)