Skip to content

Commit

Permalink
feat: improve comparing expected and output contents
Browse files Browse the repository at this point in the history
  • Loading branch information
yndx-birman committed Sep 16, 2021
1 parent 5591094 commit f94f03b
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
##Third include
## Third include

32 changes: 25 additions & 7 deletions tests/single-page.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {isEqualDirectories, runYfmDocs, getTestPaths} from './utils';
import {compareDirectories, runYfmDocs, getTestPaths} from './utils';

describe('Single page', () => {
test('Test1', () => {
Expand All @@ -7,9 +7,15 @@ describe('Single page', () => {

runYfmDocs(inputPath, outputPath);

const isEqualOutput = isEqualDirectories(outputPath, expectedOutputPath);
const compareResult = compareDirectories(outputPath, expectedOutputPath);

expect(true).toEqual(isEqualOutput);
if (typeof compareResult === 'boolean') {
expect(true).toEqual(compareResult);
} else {
const {expectedContent, outputContent} = compareResult;

expect(expectedContent).toEqual(outputContent);
}
});

test('Test2', () => {
Expand All @@ -18,9 +24,15 @@ describe('Single page', () => {

runYfmDocs(inputPath, outputPath);

const isEqualOutput = isEqualDirectories(outputPath, expectedOutputPath);
const compareResult = compareDirectories(outputPath, expectedOutputPath);

if (typeof compareResult === 'boolean') {
expect(true).toEqual(compareResult);
} else {
const {expectedContent, outputContent} = compareResult;

expect(true).toEqual(isEqualOutput);
expect(expectedContent).toEqual(outputContent);
}
});

test('Test3', () => {
Expand All @@ -29,8 +41,14 @@ describe('Single page', () => {

runYfmDocs(inputPath, outputPath);

const isEqualOutput = isEqualDirectories(outputPath, expectedOutputPath);
const compareResult = compareDirectories(outputPath, expectedOutputPath);

if (typeof compareResult === 'boolean') {
expect(true).toEqual(compareResult);
} else {
const {expectedContent, outputContent} = compareResult;

expect(true).toEqual(isEqualOutput);
expect(expectedContent).toEqual(outputContent);
}
});
});
53 changes: 32 additions & 21 deletions tests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,51 @@ import isEqual from 'lodash/isEqual';

const yfmDocsPath = require.resolve('../build');

export function isEqualDirectories(expectedOutputPath: string, outputPath: string): boolean {
let isEqualOutput = true;

function getFileContent(filePath: string) {
try {
return readFileSync(filePath, 'utf8');
} catch {
return '';
}
}

export type CompareResult = {
expectedContent: string;
outputContent: string;
} | boolean;

export function compareDirectories(expectedOutputPath: string, outputPath: string): CompareResult {
const filesFromExpectedOutput = walkSync(expectedOutputPath, {
directories: false,
includeBasePath: false,
});
let compareResult: CompareResult = true;

filesFromExpectedOutput.forEach((expectedFilePath) => {
try {
const fileExtension = extname(expectedFilePath);
const expectedContent = readFileSync(resolve(expectedOutputPath, expectedFilePath), 'utf8');
const outputContent = readFileSync(resolve(outputPath, expectedFilePath), 'utf8');
const fileExtension = extname(expectedFilePath);
const expectedContent = getFileContent(resolve(expectedOutputPath, expectedFilePath));
const outputContent = getFileContent(resolve(outputPath, expectedFilePath));

// eslint-disable-next-line @typescript-eslint/no-explicit-any
let preparedExpectedContent: any = expectedContent;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let preparedOutputContent: any = outputContent;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let preparedExpectedContent: any = expectedContent;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let preparedOutputContent: any = outputContent;

if (fileExtension === '.yaml') {
preparedExpectedContent = load(expectedContent);
preparedOutputContent = load(outputContent);
}
if (fileExtension === '.yaml') {
preparedExpectedContent = load(expectedContent);
preparedOutputContent = load(outputContent);
}

if (!isEqual(preparedExpectedContent, preparedOutputContent)) {
isEqualOutput = false;
}
} catch (e) {
console.error(e);
isEqualOutput = false;
if (!isEqual(preparedExpectedContent, preparedOutputContent)) {
compareResult = {
expectedContent: preparedExpectedContent,
outputContent: preparedOutputContent,
};
}
});

return isEqualOutput;
return compareResult;
}

export function runYfmDocs(inputPath: string, outputPath: string): void {
Expand Down

0 comments on commit f94f03b

Please sign in to comment.