Skip to content

Instantly share code, notes, and snippets.

@pgengler
Created April 8, 2021 22:54
Show Gist options
  • Save pgengler/a796bad00bded99fa45bfbaab159b485 to your computer and use it in GitHub Desktop.
Save pgengler/a796bad00bded99fa45bfbaab159b485 to your computer and use it in GitHub Desktop.
Query Param badness
import Controller from '@ember/controller';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class extends Controller {
@service router;
@action
redirectWithTransitionToRoute() {
this.transitionToRoute('b');
}
@action
redirectWithTransitionTo() {
this.router.transitionTo('b');
}
}
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
import Controller from '@ember/controller';
export default class extends Controller {
queryParams = [ 'foo', 'bar', 'baz' ];
foo = null;
bar = '';
baz = 'not null';
}
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
const Router = EmberRouter.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('a');
this.route('b');
});
export default Router;
import Route from '@ember/routing/route';
export default Route.extend({
});
import Route from '@ember/routing/route';
export default Route.extend({
});
<button type="button" data-test-transitionToRoute {{on "click" this.redirectWithTransitionToRoute}}>
this.transitionToRoute
</button>
<button type="button" data-test-transitionTo {{on "click" this.redirectWithTransitionTo}}>
this.router.transitionTo
</button>
<h1>Welcome to {{this.appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
import { module, test } from 'qunit';
import { click, visit, currentURL } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';
module('transitionToRoute on controller', function(hooks) {
setupApplicationTest(hooks);
test('result does not include default values for unspecified query params', async function(assert) {
await visit('/a');
await click('button[data-test-transitionToRoute]');
assert.equal(currentURL(), '/b');
});
});
module('transitionTo on router service', function(hooks) {
setupApplicationTest(hooks);
test('result does not include default values for unspecified query params', async function(assert) {
await visit('/a');
await click('button[data-test-transitionTo]');
assert.equal(currentURL(), '/b');
});
});
import Application from '../app';
import config from '../config/environment';
import { setApplication } from '@ember/test-helpers';
import { assign } from '@ember/polyfills';
import { start } from 'ember-qunit';
let attributes = {
rootElement: '#test-root',
autoboot: false
};
attributes = assign(attributes, config.APP);
let application = Application.create(attributes);
setApplication(application);
start();
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": true
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "3.18.1",
"ember-template-compiler": "3.18.1",
"ember-testing": "3.18.1"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment