Unit Testing in Action

suppose we do have a mixins and we need to test the authenticated-route.js

export default Ember.Mixin.create({
 session: Ember.inject.service(),
 signInRoute: 'sign-in',
 beforeModel: function() {
  if (this.get('session.isLoggedIn')) {
   return;
   } else {
  this.replaceWith(this.get('signInRoute'));
  }
 }
});

We can perform the unit test by following ways ..

describe('beforeModel', function() {
 const signInRoute = 'sign-in';
 let subject, replaceWithStub, session;
 beforeEach(function() {
  const AuthenticatedRouteObject = Ember.Route.extend(
  AuthenticatedRouteMixin);
  replaceWithStub = sinon.stub();
  session = Ember.Object.create();
  subject = AuthenticatedRouteObject.create({
   session: session,
   signInRoute: signInRoute,
   replaceWith: replaceWithStub
  });
  });
 it('does nothing if logged in', function() {
  session.set(‘isLoggedIn’, true);
  subject.beforeModel();
  expect(replaceWithStub.called).to.be.false;
 });
 it('transitions to the sign in route if not logged in',
  function() {
   session.set('isLoggedIn', false);
   subject.beforeModel();
   expect(replaceWithStub.withArgs(signInRoute).calledOnce).to.be.true;
 });
});

So it is self explanatory it does transitions to signin route if not logged in else if logged in does nothing.

results matching ""

    No results matching ""