summaryrefslogtreecommitdiff
path: root/spec/frontend/__helpers__/fixtures.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/__helpers__/fixtures.js')
-rw-r--r--spec/frontend/__helpers__/fixtures.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/frontend/__helpers__/fixtures.js b/spec/frontend/__helpers__/fixtures.js
new file mode 100644
index 00000000000..4b86724df93
--- /dev/null
+++ b/spec/frontend/__helpers__/fixtures.js
@@ -0,0 +1,38 @@
+import fs from 'fs';
+import path from 'path';
+
+import { ErrorWithStack } from 'jest-util';
+
+export function getFixture(relativePath) {
+ const basePath = relativePath.startsWith('static/')
+ ? global.staticFixturesBasePath
+ : global.fixturesBasePath;
+ const absolutePath = path.join(basePath, relativePath);
+ if (!fs.existsSync(absolutePath)) {
+ throw new ErrorWithStack(
+ `Fixture file ${relativePath} does not exist.
+
+Did you run bin/rake frontend:fixtures?`,
+ getFixture,
+ );
+ }
+
+ return fs.readFileSync(absolutePath, 'utf8');
+}
+
+export const getJSONFixture = (relativePath) => JSON.parse(getFixture(relativePath));
+
+export const resetHTMLFixture = () => {
+ document.head.innerHTML = '';
+ document.body.innerHTML = '';
+};
+
+export const setHTMLFixture = (htmlContent, resetHook = afterEach) => {
+ document.body.innerHTML = htmlContent;
+ resetHook(resetHTMLFixture);
+};
+
+export const loadHTMLFixture = (relativePath, resetHook = afterEach) => {
+ const fileContent = getFixture(relativePath);
+ setHTMLFixture(fileContent, resetHook);
+};