diff --git a/package-lock.json b/package-lock.json index 74ae396..3e374c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1521,6 +1521,12 @@ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, + "domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz", + "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -3143,6 +3149,12 @@ "sntp": "1.0.9" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -3559,45 +3571,308 @@ "dev": true }, "jsdom": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.2.0.tgz", - "integrity": "sha512-+5wd6vJuh/Evw3wkmCuKXKibDd5RS7PYZjKaP4s2Hj5W7tvmbuFuaDN4erbH07VznTBFcK+lcsrGVnP6EugXow==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.3.0.tgz", + "integrity": "sha512-aPZTDl4MplzQhx5bLztk6nzjbEslmO3Q3+z0WpCMutL1XJDhZIRzir6R1Y8S84LgeT/7jhQvgtUMkY6oPwvlUw==", + "dev": true, "requires": { "abab": "1.0.3", - "acorn": "4.0.13", - "acorn-globals": "3.1.0", + "acorn": "5.1.2", + "acorn-globals": "4.0.0", "array-equal": "1.0.0", "content-type-parser": "1.0.1", "cssom": "0.3.2", "cssstyle": "0.2.37", - "escodegen": "1.8.1", + "domexception": "1.0.0", + "escodegen": "1.9.0", "html-encoding-sniffer": "1.0.1", "nwmatcher": "1.4.1", "parse5": "3.0.2", "pn": "1.0.0", - "request": "2.81.0", + "request": "2.83.0", "request-promise-native": "1.0.4", "sax": "1.2.4", "symbol-tree": "3.2.2", - "tough-cookie": "2.3.2", - "webidl-conversions": "4.0.1", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", "whatwg-encoding": "1.0.1", - "whatwg-url": "6.1.0", + "whatwg-url": "6.3.0", "xml-name-validator": "2.0.1" }, "dependencies": { + "acorn": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", + "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "dev": true + }, + "acorn-globals": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.0.0.tgz", + "integrity": "sha512-0ih/qJVrAalX7TjjAnQdz8u+I1QOnLvLq+9zkyqcczObOii07ukuUSd5mTgVDukhqikAs+gqTm6cMd8VFwTrwA==", + "dev": true, + "requires": { + "acorn": "5.1.2" + } + }, + "ajv": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", + "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.2.3", + "har-schema": "2.0.0" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.0.2" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "sntp": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", + "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "whatwg-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.1.0.tgz", - "integrity": "sha1-X8gnm5PXVIO5ztiyYjmFSEehhXg=", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.3.0.tgz", + "integrity": "sha512-rM+hE5iYKGPAOu05mIdJR47pYSR2vDzfrTEFRc/S8D3L60yW8BuXmUJ7Kog7x/DrokFN7JNaHKadpzjouKRRAw==", + "dev": true, "requires": { "lodash.sortby": "4.7.0", - "tr46": "0.0.3", - "webidl-conversions": "4.0.1" + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } } } }, + "jsdom-global": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", + "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", + "dev": true + }, "jsdom-wc": { "version": "11.0.0-alpha-1", "resolved": "https://registry.npmjs.org/jsdom-wc/-/jsdom-wc-11.0.0-alpha-1.tgz", @@ -3866,7 +4141,8 @@ "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true }, "longest": { "version": "1.0.1", @@ -4025,9 +4301,9 @@ } }, "mocha": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", - "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -4037,6 +4313,7 @@ "escape-string-regexp": "1.0.5", "glob": "7.1.1", "growl": "1.9.2", + "he": "1.1.1", "json3": "3.3.2", "lodash.create": "3.1.1", "mkdirp": "0.5.1", @@ -5125,6 +5402,60 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "should": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/should/-/should-13.1.2.tgz", + "integrity": "sha512-oiGqKOuE4t98vdCs4ICifvzL2u9nWMaziSXVwHOYPyqqY1gBzGZS6LvzIc5uEFN0PiS69Sbvcqyw9hbYXkF4og==", + "dev": true, + "requires": { + "should-equal": "2.0.0", + "should-format": "3.0.3", + "should-type": "1.4.0", + "should-type-adaptors": "1.0.1", + "should-util": "1.0.0" + } + }, + "should-equal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", + "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", + "dev": true, + "requires": { + "should-type": "1.4.0" + } + }, + "should-format": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", + "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", + "dev": true, + "requires": { + "should-type": "1.4.0", + "should-type-adaptors": "1.0.1" + } + }, + "should-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", + "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", + "dev": true + }, + "should-type-adaptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.0.1.tgz", + "integrity": "sha1-7+VVPN9oz/ZuXF9RtxLcNRx3vqo=", + "dev": true, + "requires": { + "should-type": "1.4.0", + "should-util": "1.0.0" + } + }, + "should-util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.0.tgz", + "integrity": "sha1-yYzaN0qmsZDfi6h8mInCtNtiAGM=", + "dev": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", diff --git a/package.json b/package.json index 1249590..67e8a65 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,10 @@ "eslint": "^4.3.0", "eslint-config-google": "^0.9.1", "js-yaml": "^3.7.0", + "jsdom": "11.3.0", + "jsdom-global": "3.0.2", "marked": "^0.3.6", - "mocha": "^3.2.0", + "mocha": "^3.5.3", "prismjs": "^1.6.0", "rollup": "latest", "rollup-plugin-babili": "^3.1.0", @@ -44,6 +46,7 @@ "rollup-plugin-string": "^2.0.2", "rollup-plugin-uglify": "^1.0.1", "rollup-watch": "^2.5.0", + "should": "^13.1.2", "webpack": "^2.2.1" }, "dependencies": { @@ -56,7 +59,6 @@ "d3-selection": "^1.1.0", "d3-time-format": "^2.0.3", "intersection-observer": "^0.4.0", - "jsdom": "^11.2.0", "jsdom-wc": "^11.0.0-alpha-1", "katex": "^0.7.1" } diff --git a/src/transforms.js b/src/transforms.js index 92854d3..c3b778c 100644 --- a/src/transforms.js +++ b/src/transforms.js @@ -65,4 +65,27 @@ export function distillify(dom, data) { } } +export function usesTemplateV2(dom) { + const tags = dom.querySelectorAll('script'); + let usesV2 = undefined; + for (const tag of tags) { + const src = tag.src; + if (src.includes('distill.pub')) { + if (src.includes('template.v1.js')) { + usesV2 = false; + } else if (src.includes('template.v2.js')) { + usesV2 = true; + } else { + throw new Error('Uses distill template, but unknown version?!'); + } + } + } + + if (usesV2 === undefined) { + throw new Error('Does not seem to use Distill template at all.'); + } else { + return usesV2; + } +} + export { FrontMatter }; diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 0000000..f7e7a66 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1 @@ +-r jsdom-global/register diff --git a/test/scaffolds/usesV1.html b/test/scaffolds/usesV1.html new file mode 100644 index 0000000..835ee90 --- /dev/null +++ b/test/scaffolds/usesV1.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/test/scaffolds/usesV2.html b/test/scaffolds/usesV2.html new file mode 100644 index 0000000..dde4f84 --- /dev/null +++ b/test/scaffolds/usesV2.html @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/test/test.js b/test/template_v1.js similarity index 58% rename from test/test.js rename to test/template_v1.js index af66dbc..bd512f1 100644 --- a/test/test.js +++ b/test/template_v1.js @@ -1,46 +1,50 @@ +/* global it, should, describe */ + // Test format: https://mochajs.org/#bdd // Assertion format: http://chaijs.com/api/bdd/ -let expect = require('chai').expect, - jsdom = require("jsdom"), - distill = require("../dist/template.js"); +let expect = require('chai').expect; +let jsdom = require('jsdom'); + // let distill = require('../dist/template.v1.js'); -describe("Distill", function() { - describe("render", function() { - it("Should have a render function.", function() { +describe.skip('Distill v1', function() { + + describe('render', function() { + it('Should have a render function.', function() { expect(distill.render).to.be.an.instanceof(Function); }); }); + // // html // - describe("html", function() { - it("Should have a html function.", function() { + describe.skip('html', function() { + it('Should have a html function.', function() { expect(distill.html).to.be.an.instanceof(Function); }); - it("Should add a language attribute to html element, if not present.", function() { - var doc = jsdom.jsdom(""); + it('Should add a language attribute to html element, if not present.', function() { + var doc = jsdom.jsdom(''); let before = jsdom.serializeDocument(doc); distill.html(doc, {}); let after = jsdom.serializeDocument(doc); expect(after).to.match(new RegExp('')); }); - it("Should not add a language attribute to html element, if already present.", function() { + it('Should not add a language attribute to html element, if already present.', function() { var doc = jsdom.jsdom(''); let before = jsdom.serializeDocument(doc); distill.html(doc, {}); let after = jsdom.serializeDocument(doc); expect(after).to.not.match(new RegExp('lang="en"')); }); - it("Should add a meta charset tag, if not present.", function() { - var doc = jsdom.jsdom(""); + it('Should add a meta charset tag, if not present.', function() { + var doc = jsdom.jsdom(''); let before = jsdom.serializeDocument(doc); distill.html(doc, {}); let after = jsdom.serializeDocument(doc); expect(after).to.match(new RegExp('')); }); - it("Should add a meta viewport tag, if not present.", function() { - var doc = jsdom.jsdom(""); + it('Should add a meta viewport tag, if not present.', function() { + var doc = jsdom.jsdom(''); let before = jsdom.serializeDocument(doc); distill.html(doc, {}); let after = jsdom.serializeDocument(doc); @@ -51,8 +55,8 @@ describe("Distill", function() { // // styles // - describe("styles", function() { - it("Should have a styles function.", function() { + describe.skip('styles', function() { + it('Should have a styles function.', function() { expect(distill.styles).to.be.an.instanceof(Function); }); }) diff --git a/test/transforms.js b/test/transforms.js new file mode 100644 index 0000000..3fd6143 --- /dev/null +++ b/test/transforms.js @@ -0,0 +1,64 @@ +/* global it, should, describe, before, beforeEach, after, afterEach */ + +const jsdom = require("jsdom"); +const { JSDOM } = jsdom; + +const expect = require('chai').expect; +const distill = require('../dist/transforms.v2.js'); + +describe('Distill V2 (transforms)', function() { + + it('should export usesTemplateV2()', function() { + expect(distill.usesTemplateV2).to.be.a('function'); + }); + + describe('#usesTemplateV2()', function() { + + it('should detect v1', function() { + const frag = JSDOM.fragment(''); + expect(distill.usesTemplateV2(frag)).to.be.false; + }); + + it('should detect v2', function() { + const frag = JSDOM.fragment(''); + expect(distill.usesTemplateV2(frag)).to.be.true; + }); + + it('should error on unknown distill script', function() { + const frag = JSDOM.fragment(''); + expect(()=> distill.usesTemplateV2(frag)).to.throw('unknown'); + }); + + it('should error on no distill script', function() { + const frag = JSDOM.fragment(''); + expect(()=> distill.usesTemplateV2(frag)).to.throw('at all'); + }); + + }); + + + it('should export render()', function() { + expect(distill.render).to.be.a('function'); + }); + + describe('#render()', function() { + + it('should extract metadata'); + it('should run transforms'); + + }); + + + it('should export #distillify()', function() { + expect(distill.distillify).to.be.a('function'); + }); + + describe('#distillify()', function() { + + it('should ensure existence of header'); + it('should ensure existence of footer'); + it('should ensure existence of distill appendix'); + + }); + +}); // describe 'Render'