support interaction between module and apps for updating templates before rendering
[squeep-authentication-module] / test / lib / template / helpers.js
1 'use strict';
2
3 const assert = require('node:assert');
4 const Helpers = require('../../../lib/template/helpers');
5
6 describe('Template Helpers', function () {
7 describe('sessionNavLinks', function () {
8 let pagePathLevel, ctx, options;
9 beforeEach(function () {
10 pagePathLevel = 0;
11 ctx = {
12 session: {
13 authenticatedIdentifier: 'username',
14 }
15 };
16 options = {};
17 });
18 it('adds nav links', function () {
19 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
20 assert.strictEqual(options.navLinks.length, 2);
21 });
22 it('extends nav links', function () {
23 options.navLinks = [ {} ];
24 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
25 assert.strictEqual(options.navLinks.length, 3);
26 });
27 it('add login link if no user', function () {
28 delete ctx.session.authenticatedIdentifier;
29 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
30 assert.strictEqual(options.navLinks.length, 1);
31 });
32 it('adds nav links for profile', function () {
33 delete ctx.session.authenticatedIdentifier;
34 ctx.session.authenticatedProfile = 'https://example.com/';
35 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
36 assert.strictEqual(options.navLinks.length, 2);
37 });
38 it('covers logout redirect', function () {
39 ctx.url = '../relative';
40 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
41 assert.strictEqual(options.navLinks.length, 2);
42 });
43 it('covers page depth', function () {
44 pagePathLevel = 2;
45 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
46 assert.strictEqual(options.navLinks.length, 2);
47 });
48 it('elides account link on account page', function () {
49 options.pageIdentifier = 'account';
50 Helpers.sessionNavLinks(pagePathLevel, ctx, options);
51 assert.strictEqual(options.navLinks.length, 1);
52 });
53 }); // sessionNavLinks
54 }); // Template Helpers