Skip to content

Commit

Permalink
Refactor lib/utils/__tests__/nodeContextLookup.test.js (#5238)
Browse files Browse the repository at this point in the history
This refactoring aims to avoid asynchronous callbacks in the test code.
  • Loading branch information
ybiquitous committed Apr 11, 2021
1 parent e25b5a2 commit 0500d7e
Showing 1 changed file with 47 additions and 45 deletions.
92 changes: 47 additions & 45 deletions lib/utils/__tests__/nodeContextLookup.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,52 +5,54 @@ const path = require('path');
const postcss = require('postcss');
const postcssImport = require('postcss-import');

it('nodeContextLookup checking media context', () => {
it('nodeContextLookup checking media context', async () => {
const testLookup = nodeContextLookup();

return postcss([postcssImport()])
.process("@import 'fixtures/one.css'; @import 'fixtures/two.css';", {
const result = await postcss([postcssImport()]).process(
"@import 'fixtures/one.css'; @import 'fixtures/two.css';",
{
from: path.join(__dirname, 'fake.css'),
})
.then((result) => {
const rulesBySelector = {};

result.root.walkRules((rule) => {
rulesBySelector[rule.selector] = rule;
});

// a-d are in one file; e-h in another
expect(testLookup.getContext(rulesBySelector.a, rulesBySelector.a.parent)).toBe(
testLookup.getContext(rulesBySelector.b, rulesBySelector.b.parent),
);

expect(testLookup.getContext(rulesBySelector.a, rulesBySelector.a.parent)).not.toBe(
testLookup.getContext(rulesBySelector.c, rulesBySelector.c.parent),
);

expect(testLookup.getContext(rulesBySelector.a, rulesBySelector.a.parent)).not.toBe(
testLookup.getContext(rulesBySelector.e, rulesBySelector.e.parent),
);

expect(testLookup.getContext(rulesBySelector.c, rulesBySelector.c.parent)).toBe(
testLookup.getContext(rulesBySelector.d, rulesBySelector.d.parent),
);

expect(testLookup.getContext(rulesBySelector.c, rulesBySelector.c.parent)).not.toBe(
testLookup.getContext(rulesBySelector.g, rulesBySelector.g.parent),
);

expect(testLookup.getContext(rulesBySelector.e, rulesBySelector.e.parent)).toBe(
testLookup.getContext(rulesBySelector.f, rulesBySelector.f.parent),
);

expect(testLookup.getContext(rulesBySelector.f, rulesBySelector.f.parent)).not.toBe(
testLookup.getContext(rulesBySelector.g, rulesBySelector.g.parent),
);

expect(testLookup.getContext(rulesBySelector.g, rulesBySelector.g.parent)).toBe(
testLookup.getContext(rulesBySelector.h, rulesBySelector.h.parent),
);
})
.catch((err) => console.log(err.stack)); // eslint-disable-line no-console
},
);

const rulesBySelector = {};

result.root.walkRules((rule) => {
rulesBySelector[rule.selector] = rule;
});

expect(Object.keys(rulesBySelector)).toEqual(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']);

// a-d are in one file; e-h in another
expect(testLookup.getContext(rulesBySelector.a, rulesBySelector.a.parent)).toBe(
testLookup.getContext(rulesBySelector.b, rulesBySelector.b.parent),
);

expect(testLookup.getContext(rulesBySelector.a, rulesBySelector.a.parent)).not.toBe(
testLookup.getContext(rulesBySelector.c, rulesBySelector.c.parent),
);

expect(testLookup.getContext(rulesBySelector.a, rulesBySelector.a.parent)).not.toBe(
testLookup.getContext(rulesBySelector.e, rulesBySelector.e.parent),
);

expect(testLookup.getContext(rulesBySelector.c, rulesBySelector.c.parent)).toBe(
testLookup.getContext(rulesBySelector.d, rulesBySelector.d.parent),
);

expect(testLookup.getContext(rulesBySelector.c, rulesBySelector.c.parent)).not.toBe(
testLookup.getContext(rulesBySelector.g, rulesBySelector.g.parent),
);

expect(testLookup.getContext(rulesBySelector.e, rulesBySelector.e.parent)).toBe(
testLookup.getContext(rulesBySelector.f, rulesBySelector.f.parent),
);

expect(testLookup.getContext(rulesBySelector.f, rulesBySelector.f.parent)).not.toBe(
testLookup.getContext(rulesBySelector.g, rulesBySelector.g.parent),
);

expect(testLookup.getContext(rulesBySelector.g, rulesBySelector.g.parent)).toBe(
testLookup.getContext(rulesBySelector.h, rulesBySelector.h.parent),
);
});

0 comments on commit 0500d7e

Please sign in to comment.