--- /dev/null
+'use strict';
+
+const assert = require('node:assert');
+const Helpers = require('../../../lib/template/helpers');
+
+describe('Template Helpers', function () {
+ describe('sessionNavLinks', function () {
+ let pagePathLevel, ctx, options;
+ beforeEach(function () {
+ pagePathLevel = 0;
+ ctx = {
+ session: {
+ authenticatedIdentifier: 'username',
+ }
+ };
+ options = {};
+ });
+ it('adds nav links', function () {
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 2);
+ });
+ it('extends nav links', function () {
+ options.navLinks = [ {} ];
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 3);
+ });
+ it('add login link if no user', function () {
+ delete ctx.session.authenticatedIdentifier;
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 1);
+ });
+ it('adds nav links for profile', function () {
+ delete ctx.session.authenticatedIdentifier;
+ ctx.session.authenticatedProfile = 'https://example.com/';
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 2);
+ });
+ it('covers logout redirect', function () {
+ ctx.url = '../relative';
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 2);
+ });
+ it('covers page depth', function () {
+ pagePathLevel = 2;
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 2);
+ });
+ it('elides account link on account page', function () {
+ options.pageIdentifier = 'account';
+ Helpers.sessionNavLinks(pagePathLevel, ctx, options);
+ assert.strictEqual(options.navLinks.length, 1);
+ });
+ }); // sessionNavLinks
+}); // Template Helpers