Skip to content

Commit

Permalink
Merge pull request #2823 from preactjs/spy-reset
Browse files Browse the repository at this point in the history
Fix prototype spies not being reset in tests
  • Loading branch information
marvinhagemeister committed Nov 11, 2020
2 parents b8b42b3 + c8bbe39 commit 283c093
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 25 deletions.
2 changes: 2 additions & 0 deletions test/_util/logCall.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ export function logCall(obj, method) {
log.push(operation);
return old.apply(this, args);
};

return () => (obj[method] = old);
}

/**
Expand Down
18 changes: 14 additions & 4 deletions test/browser/fragments.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,14 @@ describe('Fragment', () => {
}
}

let resetInsertBefore;
let resetAppendChild;
let resetRemoveChild;

before(() => {
logCall(Node.prototype, 'insertBefore');
logCall(Node.prototype, 'appendChild');
logCall(Node.prototype, 'removeChild');
resetInsertBefore = logCall(Node.prototype, 'insertBefore');
resetAppendChild = logCall(Node.prototype, 'appendChild');
resetRemoveChild = logCall(Node.prototype, 'removeChild');
// logCall(CharacterData.prototype, 'remove');
// TODO: Consider logging setting set data
// ```
Expand All @@ -49,6 +53,12 @@ describe('Fragment', () => {
// ```
});

after(() => {
resetInsertBefore();
resetAppendChild();
resetRemoveChild();
});

beforeEach(() => {
scratch = setupScratch();
rerender = setupRerender();
Expand Down Expand Up @@ -541,7 +551,7 @@ describe('Fragment', () => {
expect(scratch.innerHTML).to.equal('<div>Hello</div>');
});

it.skip('should not preserve state between array nested in fragment and double nested array', () => {
it('should not preserve state between array nested in fragment and double nested array', () => {
function Foo({ condition }) {
return condition ? (
<Fragment>{[<Stateful key="a" />]}</Fragment>
Expand Down
28 changes: 22 additions & 6 deletions test/browser/hydrate.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,29 @@ describe('hydrate()', () => {
const List = ({ children }) => <ul>{children}</ul>;
const ListItem = ({ children }) => <li>{children}</li>;

let resetAppendChild;
let resetInsertBefore;
let resetRemoveChild;
let resetRemove;
let resetSetAttribute;
let resetRemoveAttribute;

before(() => {
logCall(Element.prototype, 'appendChild');
logCall(Element.prototype, 'insertBefore');
logCall(Element.prototype, 'removeChild');
logCall(Element.prototype, 'remove');
logCall(Element.prototype, 'setAttribute');
logCall(Element.prototype, 'removeAttribute');
resetAppendChild = logCall(Element.prototype, 'appendChild');
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
resetRemoveChild = logCall(Element.prototype, 'removeChild');
resetRemove = logCall(Element.prototype, 'remove');
resetSetAttribute = logCall(Element.prototype, 'setAttribute');
resetRemoveAttribute = logCall(Element.prototype, 'removeAttribute');
});

after(() => {
resetAppendChild();
resetInsertBefore();
resetRemoveChild();
resetRemove();
resetSetAttribute();
resetRemoveAttribute();
});

beforeEach(() => {
Expand Down
20 changes: 16 additions & 4 deletions test/browser/keys.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,23 @@ describe('keys', () => {
values.splice(to, 0, value);
}

let resetAppendChild;
let resetInsertBefore;
let resetRemoveChild;
let resetRemove;

before(() => {
logCall(Element.prototype, 'appendChild');
logCall(Element.prototype, 'insertBefore');
logCall(Element.prototype, 'removeChild');
logCall(Element.prototype, 'remove');
resetAppendChild = logCall(Element.prototype, 'appendChild');
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
resetRemoveChild = logCall(Element.prototype, 'removeChild');
resetRemove = logCall(Element.prototype, 'remove');
});

after(() => {
resetAppendChild();
resetInsertBefore();
resetRemoveChild();
resetRemove();
});

beforeEach(() => {
Expand Down
15 changes: 12 additions & 3 deletions test/browser/lifecycles/shouldComponentUpdate.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,20 @@ describe('Lifecycle methods', () => {
// function expectDomLogToBe(expectedOperations, message) {
// expect(getLog()).to.deep.equal(expectedOperations, message);
// }
let resetInsertBefore;
let resetRemoveChild;
let resetRemove;

before(() => {
logCall(Node.prototype, 'insertBefore');
logCall(Node.prototype, 'appendChild');
logCall(Node.prototype, 'removeChild');
resetInsertBefore = logCall(Node.prototype, 'insertBefore');
resetRemoveChild = logCall(Node.prototype, 'appendChild');
resetRemove = logCall(Node.prototype, 'removeChild');
});

after(() => {
resetInsertBefore();
resetRemoveChild();
resetRemove();
});

beforeEach(() => {
Expand Down
20 changes: 16 additions & 4 deletions test/browser/placeholders.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,23 @@ describe('null placeholders', () => {
return [Nullable, ref];
}

let resetAppendChild;
let resetInsertBefore;
let resetRemoveChild;
let resetRemove;

before(() => {
logCall(Element.prototype, 'appendChild');
logCall(Element.prototype, 'insertBefore');
logCall(Element.prototype, 'removeChild');
logCall(Element.prototype, 'remove');
resetAppendChild = logCall(Element.prototype, 'appendChild');
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
resetRemoveChild = logCall(Element.prototype, 'removeChild');
resetRemove = logCall(Element.prototype, 'remove');
});

after(() => {
resetAppendChild();
resetInsertBefore();
resetRemoveChild();
resetRemove();
});

beforeEach(() => {
Expand Down
20 changes: 16 additions & 4 deletions test/browser/render.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ function getAttributes(node) {
describe('render()', () => {
let scratch, rerender;

let resetAppendChild;
let resetInsertBefore;
let resetRemoveChild;
let resetRemove;

beforeEach(() => {
scratch = setupScratch();
rerender = setupRerender();
Expand All @@ -37,10 +42,17 @@ describe('render()', () => {
});

before(() => {
logCall(Element.prototype, 'appendChild');
logCall(Element.prototype, 'insertBefore');
logCall(Element.prototype, 'removeChild');
logCall(Element.prototype, 'remove');
resetAppendChild = logCall(Element.prototype, 'appendChild');
resetInsertBefore = logCall(Element.prototype, 'insertBefore');
resetRemoveChild = logCall(Element.prototype, 'removeChild');
resetRemove = logCall(Element.prototype, 'remove');
});

after(() => {
resetAppendChild();
resetInsertBefore();
resetRemoveChild();
resetRemove();
});

it('should rerender when value from "" to 0', () => {
Expand Down

0 comments on commit 283c093

Please sign in to comment.