Skip to content

Commit

Permalink
chore: review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
ekashida committed Sep 19, 2019
1 parent 001df31 commit 5ac2ae7
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 50 deletions.
74 changes: 25 additions & 49 deletions packages/@lwc/template-compiler/src/__tests__/fixtures.spec.ts
Expand Up @@ -9,31 +9,23 @@ import path from 'path';
import glob from 'glob';
import prettier from 'prettier';

import compiler, { parse } from '../index';
import compiler from '../index';

const FIXTURES_DIR = path.join(__dirname, 'fixtures');
const FIXTURE_DIR = path.join(__dirname, 'fixtures');
const BASE_CONFIG = {};

const EXPECTED_JS_FILENAME = 'expected.js';
const EXPECTED_JSON_FILENAME = 'expected.json';
const EXPECTED_META_FILENAME = 'metadata.json';

const ONLY_FILENAME = '.only';
const SKIP_FILENAME = '.skip';

describe('fixtures', () => {
const fixtures = glob.sync(path.resolve(FIXTURES_DIR, '**/*.html'));
const fixtures = glob.sync(path.resolve(FIXTURE_DIR, '**/*.html'));

for (const caseEntry of fixtures) {
const caseFolder = path.dirname(caseEntry);
const caseName = path.relative(FIXTURES_DIR, caseFolder);

const category = caseName.split(path.sep).shift();
if (category !== 'compiler' && category !== 'parser') {
throw new Error(
`Unexpected category "${category}" encountered while running fixture test for: ${caseName}`
);
}
const caseName = path.relative(FIXTURE_DIR, caseFolder);

const fixtureFilePath = (fileName): string => {
return path.join(caseFolder, fileName);
Expand Down Expand Up @@ -63,48 +55,27 @@ describe('fixtures', () => {

testFn(`${caseName}`, () => {
const src = readFixtureFile('actual.html');

const configOverride = JSON.parse(readFixtureFile('config.json'));
let expectedCode = readFixtureFile(EXPECTED_JS_FILENAME);
let expectedMetaData = JSON.parse(readFixtureFile(EXPECTED_META_FILENAME));

let actual;

if (category === 'compiler') {
actual = compiler(src, {
...BASE_CONFIG,
...configOverride,
});

let expectedCode = readFixtureFile(EXPECTED_JS_FILENAME);
if (expectedCode === null) {
// write compiled js file if doesn't exist (ie new fixture)
expectedCode = actual.code;
writeFixtureFile(
EXPECTED_JS_FILENAME,
prettier.format(expectedCode, {
parser: 'babel',
})
);
}
// check compiled code
expect(prettier.format(actual.code, { parser: 'babel' })).toEqual(
prettier.format(expectedCode, { parser: 'babel' })
);
}
if (category === 'parser') {
actual = parse(src, configOverride);

let expectedAST = JSON.parse(readFixtureFile(EXPECTED_JSON_FILENAME));
if (expectedAST === null) {
// write file if doesn't exist (ie new fixture)
expectedAST = actual.root;
writeFixtureFile(EXPECTED_JSON_FILENAME, JSON.stringify(expectedAST, null, 4));
}
// check serialized ast
expect(JSON.stringify(actual.root, null, 4)).toEqual(
JSON.stringify(expectedAST, null, 4)
const actual = compiler(src, {
...BASE_CONFIG,
...configOverride,
});

if (expectedCode === null) {
// write compiled js file if doesn't exist (ie new fixture)
expectedCode = actual.code;
writeFixtureFile(
EXPECTED_JS_FILENAME,
prettier.format(expectedCode, {
parser: 'babel',
})
);
}

let expectedMetaData = JSON.parse(readFixtureFile(EXPECTED_META_FILENAME));
if (expectedMetaData === null) {
// write metadata file if doesn't exist (ie new fixture)
const metadata = {
Expand All @@ -113,8 +84,13 @@ describe('fixtures', () => {
expectedMetaData = metadata;
writeFixtureFile(EXPECTED_META_FILENAME, JSON.stringify(expectedMetaData, null, 4));
}

// check warnings
expect(actual.warnings).toEqual(expectedMetaData.warnings || []);
// check compiled code
expect(prettier.format(actual.code, { parser: 'babel' })).toEqual(
prettier.format(expectedCode, { parser: 'babel' })
);
});
}
});
2 changes: 1 addition & 1 deletion packages/@lwc/template-compiler/src/transform/binding.ts
Expand Up @@ -275,7 +275,7 @@ function transformToSlotNode(element: IRElement): BindingSlotNode {
children: [],
};
}
throw new Error(`Expected element ${element.tag} to be a slot.`);
throw new Error(`Expected <slot> element but received <${element.tag}> element.`);
}

function transformToComponentNode(element: IRElement): BindingComponentNode {
Expand Down

0 comments on commit 5ac2ae7

Please sign in to comment.