- EmberJS - Home
- EmberJS - Overview
- EmberJS - Installation
- EmberJS - Core Concepts
- Creating and Running Application
- EmberJS - Object Model
- EmberJS - Router
- EmberJS - Templates
- EmberJS - Components
- EmberJS - Models
- EmberJS - Managing Dependencies
- EmberJS - Application Concerns
- EmberJS - Configuring Ember.js
- EmberJS - Ember Inspector
EmberJS-Testing User Interaction
Testing User Interaction
User can interact with the page by using the helpers and check for the changes in the DOM. When an unauthorized user try to access a particular URL, then you can make him to be transitioned to a login page.
Example
<!DOCTYPE html>
<html>
<head>
<title>Emberjs Testing Interaction</title>
<!-- CDN's-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://builds.emberjs.com/tags/v1.10.0-beta.3/ember-template-compiler.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ember.js/1.10.0/ember.prod.js"></script>
<!-- CDN's for testing Ember.js programs --<
<script src="https://code.jquery.com/qunit/qunit-1.18.0.js"></script>
<script src="https://rawgit.com/rwjblue/ember-qunit-builds/master/ember-qunit.js"></script>
<script src="https://builds.emberjs.com/release/ember.debug.js"></script>
<script src="https://builds.emberjs.com/beta/ember-data.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="ember-testing"></div>
<!-- These are used to link different url's -->
<script type="text/x-handlebars">
<ul>
<li>{{#link-to "index"}}Login 1{{/link-to}}</li>
<li>{{#link-to "Login2"}}Login 2{{/link-to}}</li>
</ul>
{{/outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
<p>This is login 1</p>
</script>
<!-- Display this line if not authenticated -->
<script type="text/x-handlebars" data-template-name="login">
<p>This is my Login</p>
</script>
<script type="text/x-handlebars" data-template-name="Login2">
<p>This is login 2</p>
</script>
<script type="text/javascript">
//Creates an instance of Ember.Application and assign it to a global variable
App = Ember.Application.create();
//The map method of application's router can be invoked to define URL mappings
App.Router.map(function() {
this.route('login');
this.route('Login2');
});
// 'Login2Route' should render by defining a route with the same name as the template
App.Login2Route = Ember.Route.extend({
beforeModel: function() {
var myval = this.modelFor('application');
//If we pass an empty object, then it create a link to a route using 'transitionTo' method
if (Ember.isEmpty(myval)) {
this.transitionTo('login');
}
}
});
//These methods are used to prepare the application for testing
App.setupForTesting();
App.injectTestHelpers();
App.rootElement = '#ember-testing'; //Ember.js applications's root element
module('Emberjs', {
setup: function() {
App.reset(); //After each test, reset the state of the application
}
});
//Here, it tests the workflow of an application
test('redirect to login if not authenticated', function() {
visit('/');
click('.Login2');
//'andThen' helper wait for the preceding asynchronous test helpers to complete
andThen(function() {
equal(currentRouteName(), 'login');
});
});
</script>
</body>
</html>
Output
Let's carry out the following steps to see how above code works −
Save above code in testing_userinteraction.htm file
Open this HTML file in a browser.
Advertisements