add initContext helper to set fields we expect to be present
authorJustin Wind <justin.wind+git@gmail.com>
Thu, 3 Nov 2022 18:11:01 +0000 (11:11 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Thu, 3 Nov 2022 19:10:58 +0000 (12:10 -0700)
README.md
lib/template-helper.js
test/lib/template-helper.js

index 66d16fd19dcee2f060d972d0944fce7192cec45f..c6f92261925b04abe67a34bbce9b18906a51364d 100644 (file)
--- a/README.md
+++ b/README.md
@@ -6,7 +6,16 @@ Specific to Squeep Framework Applications, this module has strong opinions and m
 
 ## API
 
-`htmlPage(pagePathLevel, ctx, options, main = [])`
+- `initContext(ctx)`
+- `htmlPage(pagePathLevel, ctx, options, main = [])`
+- `dateOrNot(date, otherwise)`
+- `dateFormat(date, pInf nInf, otherwise)`
+- `timeElement(date, options)`
+- `secondsToPeriod(seconds)`
+- `indented(intent, list)`
+- `UL(items, indent, attributes, itemAttributesGenerator)`
+- `OL(items, indent, attributes, itemAttributesGenerator)`
+- `LI(item, indent, attributes)`
 
 ### Context
 
@@ -26,6 +35,7 @@ If present, added as a query parameter (`r`, for redirect) to the logout link.
 - `ctx.notifications`
 
 Lists of errors and notices to show at top of page, before main content.
+`initContext` will create the arrays.
 
 ### Options
 
index c983e80acd44329fc6c516ee874198fc2d2e6e58..2a218f88020c3542a5bc24dffe849293f748c76b 100644 (file)
@@ -6,6 +6,17 @@
 
 const { lazy } = require('@squeep/lazy-property');
 
+
+/**
+ * Set up expected fields for how we handle error reporting
+ * and whatnot.
+ * @param {Object} ctx
+ */
+const initContext = (ctx) => {
+  ctx.errors = [];
+  ctx.notifications = [];
+}
+
 /**
  * Some fields may have values outside normal dates, handle them here.
  * @param {Date} date
@@ -392,6 +403,7 @@ function htmlPage(pagePathLevel, ctx, options, main = []) {
 
 
 module.exports = {
+  initContext,
   dateOrNot,
   dateFormat,
   timeElement,
index fa3f86a33a7517bbdee59626cc6de2f92218ac55..58985ccd962683f175f29a879a189d708b913335 100644 (file)
@@ -21,6 +21,16 @@ describe('Template Helper', function () {
     options = {};
   });
 
+  describe('initContext', function () {
+    it('covers', function () {
+      th.initContext(ctx);
+      assert(ctx.errors);
+      assert(ctx.notifications);
+      assert(Array.isArray(ctx.errors));
+      assert(Array.isArray(ctx.notifications));
+    });
+  }); // initContext
+
   describe('dateOrNot', function () {
     let date, otherwise;
     beforeEach(function () {