Skip to content

Commit 6e79a6a

Browse files
committed
feat: add tests for the refresh method
1 parent e5d38a6 commit 6e79a6a

File tree

9 files changed

+141
-5
lines changed

9 files changed

+141
-5
lines changed

.DS_Store

-6 KB
Binary file not shown.

.gitignore

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ node_modules/
88
# misc
99
npm-debug.log*
1010
yarn-error.log
11-
.DS_Store
11+
/.DS_Store
1212

1313
# yarn
1414
.pnp.*
@@ -17,4 +17,4 @@ yarn-error.log
1717
!.yarn/plugins
1818
!.yarn/releases
1919
!.yarn/sdks
20-
!.yarn/versions
20+
!.yarn/versions

test-app/app/routes/application.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Route from '@ember/routing/route';
2+
3+
let count = 0;
4+
5+
export default class extends Route {
6+
model() {
7+
return {
8+
count: count++,
9+
};
10+
}
11+
}

test-app/app/templates/application.hbs

+3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
<h1>Ember Engines Demo</h1>
2+
<span class='global-refresh-counter'>
3+
{{@model.count}}
4+
</span>
25

36
<LinkTo @route="routeless-engine-demo" class="routeless-engine">Routeless Engine</LinkTo> |
47
<LinkTo @route="routable-engine-demo" class="routeable-engine">Routeable Engine</LinkTo> |
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1-
<div class="hello-name" ...attributes>
2-
Hello, {{@name}}!
1+
<div class='hello-name' ...attributes>
2+
<span class='greeting'>
3+
Hello,
4+
{{@name}}!
5+
</span>
6+
7+
<button
8+
class='refresh'
9+
type='button'
10+
{{on 'click' this.refresh}}
11+
>
12+
Refresh
13+
</button>
14+
15+
<button
16+
class='refresh-route'
17+
type='button'
18+
{{on 'click' this.refreshRoute}}
19+
>
20+
Refresh Route
21+
</button>
22+
23+
<button
24+
class='refresh-external'
25+
type='button'
26+
{{on 'click' this.refreshExternal}}
27+
>
28+
Refresh External
29+
</button>
330
</div>

test-app/lib/ember-blog/addon/components/hello-name.js

+25-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
import { later, cancel } from '@ember/runloop';
21
import Component from '@glimmer/component';
2+
import { later, cancel } from '@ember/runloop';
33
import { tracked } from '@glimmer/tracking';
4+
import { action } from '@ember/object';
5+
import { inject as service } from '@ember/service';
46

57
export default class extends Component {
8+
@service router;
9+
610
@tracked name = this.args.name;
11+
@tracked clickCount = 0;
712

813
constructor() {
914
super(...arguments);
@@ -20,4 +25,23 @@ export default class extends Component {
2025
cancel(this._later);
2126
super.willDestroy(...arguments);
2227
}
28+
29+
@action click() {
30+
this.clickCount++;
31+
}
32+
33+
@action
34+
refresh() {
35+
this.router.refresh();
36+
}
37+
38+
@action
39+
refreshRoute() {
40+
this.router.refresh('new');
41+
}
42+
43+
@action
44+
refreshExternal() {
45+
this.router.refreshExternal('home');
46+
}
2347
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { inject as service } from '@ember/service';
2+
import Route from '@ember/routing/route';
3+
4+
let count = 0;
5+
6+
export default class extends Route {
7+
@service exampleService;
8+
9+
model() {
10+
// cause a service to be instantiated, so that our tests can
11+
// confirm that it gets cleaned up
12+
this.exampleService;
13+
14+
return {
15+
name: 'Derek Zoolander',
16+
count: count++,
17+
};
18+
}
19+
}

test-app/lib/ember-blog/addon/templates/new.hbs

+4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<div class="engine">
22
New Route!!
33

4+
<span class="route-refresh-counter">
5+
{{@model.count}}
6+
</span>
7+
48
<HelloWorld class="routable-hello-world" />
59

610
<button class="trigger-transition-to" type="button" {{on "click" this.goAway}}>Go Away!</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import { module, test } from 'qunit';
2+
import { setupApplicationTest } from 'ember-qunit';
3+
import { visit, find, click } from '@ember/test-helpers';
4+
5+
module('Acceptance | routeless engine demo', function (hooks) {
6+
setupApplicationTest(hooks);
7+
8+
module('Engine Router Service Refresh Method', function () {
9+
test('refresh without params triggers refresh with current route', async function (assert) {
10+
await visit('/routable-engine-demo/ember-blog/new');
11+
12+
let counter = await find('.route-refresh-counter').textContent;
13+
assert.dom('.route-refresh-counter').hasText(counter);
14+
await click('.refresh');
15+
16+
counter = parseInt(counter, 10);
17+
counter = ++counter;
18+
counter = counter.toString();
19+
assert.dom('.route-refresh-counter').hasText(counter);
20+
});
21+
22+
test('refresh with params triggers refresh on provided route', async function (assert) {
23+
await visit('/routable-engine-demo/ember-blog/new');
24+
25+
let counter = await find('.route-refresh-counter').textContent;
26+
assert.dom('.route-refresh-counter').hasText(counter);
27+
await click('.refresh-route');
28+
29+
counter = parseInt(counter, 10);
30+
counter = ++counter;
31+
counter = counter.toString();
32+
assert.dom('.route-refresh-counter').hasText(counter);
33+
});
34+
35+
test('refresh external route', async function (assert) {
36+
await visit('/routable-engine-demo/ember-blog/new');
37+
38+
let counter = await find('.route-refresh-counter').textContent;
39+
assert.dom('.global-refresh-counter').hasText(counter);
40+
await click('.refresh-external');
41+
42+
counter = parseInt(counter, 10);
43+
counter = ++counter;
44+
counter = counter.toString();
45+
assert.dom('.global-refresh-counter').hasText(counter);
46+
});
47+
});
48+
});

0 commit comments

Comments
 (0)