Field test deprecated logs (#4198)

* Cleanup of tests.

* Suppress warning logs in field tests.
This commit is contained in:
Monica Kozbial
2020-08-20 13:58:18 -07:00
committed by GitHub
parent 6e39d2f2e2
commit a9f1d2e219

View File

@@ -7,6 +7,10 @@
suite('Abstract Fields', function() {
setup(function() {
sharedTestSetup.call(this);
// TODO(#4197): Remove stubbing of deprecation warning after fixing.
// field.setValue calls trigger a deprecation warning, capture to prevent
// console logs.
createDeprecationWarningStub();
});
teardown(function() {
sharedTestTeardown.call(this);
@@ -43,7 +47,7 @@ suite('Abstract Fields', function() {
var field = new FieldDefault();
var stub = sinon.stub(console, 'warn');
chai.assert.isTrue(field.isSerializable());
chai.assert(stub.calledOnce);
sinon.assert.calledOnce(stub);
stub.restore();
});
test('Editable False, Serializable Default(false)', function() {
@@ -65,246 +69,227 @@ suite('Abstract Fields', function() {
});
});
suite('setValue', function() {
function addSpies(field) {
if (!this.isSpying) {
function addSpies(field, excludeSpies = []) {
if (!excludeSpies.includes('doValueInvalid_')) {
sinon.spy(field, 'doValueInvalid_');
}
if (!excludeSpies.includes('doValueUpdate_')) {
sinon.spy(field, 'doValueUpdate_');
}
if (!excludeSpies.includes('forceRerender')) {
sinon.spy(field, 'forceRerender');
this.isSpying = true;
}
}
function removeSpies(field) {
if (this.isSpying) {
field.doValueInvalid_.restore();
field.doValueUpdate_.restore();
field.forceRerender.restore();
this.isSpying = false;
function stubDoValueInvalid(field, isDirty) {
sinon.stub(field, 'doValueInvalid_').callsFake(function(newValue) {
this.isDirty_ = isDirty;
});
}
function stubDoValueUpdate(field, isDirty) {
sinon.stub(field, 'doValueUpdate_').callsFake(function(newValue) {
this.isDirty_ = isDirty;
});
}
function setLocalValidatorWithReturn(field, value) {
field.setValidator(function() {
return value;
});
}
function setLocalValidator(field, isValid) {
if (isValid) {
field.setValidator(function(newValue) {
return newValue;
});
} else {
setLocalValidatorWithReturn(field, null);
}
}
function stubClassValidatorWithReturn(field, value) {
sinon.stub(field, 'doClassValidation_').returns(value);
}
function stubClassValidator(field, isValid) {
if (isValid) {
sinon.stub(field, 'doClassValidation_').callsFake(function(newValue) {
return newValue;
});
} else {
stubClassValidatorWithReturn(field, null);
}
}
setup(function() {
this.field = new Blockly.Field();
this.field.isDirty_ = false;
this.cachedDoClassValidation = this.field.doClassValidation_;
this.cachedDoValueUpdate = this.field.doValueUpdate_;
this.cachedDoValueInvalid = this.field.doValueInvalid_;
});
teardown(function() {
removeSpies(this.field);
this.field.doClassValidation_ = this.cachedDoClassValidation;
this.field.doValueUpdate_ = this.cachedDoValueUpdate;
this.field.doValueInvalid_ = this.cachedDoValueInvalid;
this.field.setValidator(null);
});
test('Null', function() {
addSpies(this.field);
this.field.setValue(null);
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('No Validators, Dirty (Default)', function() {
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
chai.assert(this.field.forceRerender.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
sinon.assert.calledOnce(this.field.forceRerender);
});
test('No Validators, Not Dirty', function() {
this.field.doValueUpdate_ = function(newValue) {
this.value_ = newValue;
this.isDirty_ = false;
};
addSpies(this.field);
stubDoValueUpdate(this.field, false);
addSpies(this.field, ['doValueUpdate_']);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('Class Validator Returns Invalid, Not Dirty (Default)', function() {
this.field.doClassValidation_ = function() {
return null;
};
stubClassValidator(this.field, false);
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.calledOnce);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.calledOnce(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('Class Validator Returns Invalid, Dirty', function() {
this.field.doClassValidation_ = function() {
return null;
};
this.field.doValueInvalid_ = function() {
this.isDirty_ = true;
};
addSpies(this.field);
stubClassValidator(this.field, false);
stubDoValueInvalid(this.field, true);
addSpies(this.field, ['doValueInvalid_']);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.calledOnce);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.calledOnce);
sinon.assert.calledOnce(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.calledOnce(this.field.forceRerender);
});
test('Class Validator Returns Valid, Not Dirty', function() {
this.field.doClassValidation_ = function(newValue) {
return newValue;
};
this.field.doValueUpdate_ = function() {
this.isDirty_ = false;
};
addSpies(this.field);
stubClassValidator(this.field, true);
stubDoValueUpdate(this.field, false);
addSpies(this.field, ['doValueUpdate_']);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('Class Validator Returns Valid, Dirty (Default)', function() {
this.field.doClassValidation_ = function(newValue) {
return newValue;
};
stubClassValidator(this.field, true);
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
chai.assert(this.field.forceRerender.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
sinon.assert.calledOnce(this.field.forceRerender);
});
test('Local Validator Returns Invalid, Not Dirty (Default)', function() {
this.field.setValidator(function() {
return null;
});
setLocalValidator(this.field, false);
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.calledOnce);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.calledOnce(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('Local Validator Returns Invalid, Dirty', function() {
this.field.setValidator(function() {
return null;
});
this.field.doValueInvalid_ = function() {
this.isDirty_ = true;
};
addSpies(this.field);
stubDoValueInvalid(this.field, true);
setLocalValidator(this.field, false);
addSpies(this.field, ['doValueInvalid_']);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.calledOnce);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.calledOnce);
sinon.assert.calledOnce(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.calledOnce(this.field.forceRerender);
});
test('Local Validator Returns Valid, Not Dirty', function() {
this.field.setValidator(function(newValue) {
return newValue;
});
this.field.doValueUpdate_ = function() {
this.isDirty_ = false;
};
addSpies(this.field);
stubDoValueUpdate(this.field, false);
setLocalValidator(this.field, true);
addSpies(this.field, ['doValueUpdate_']);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('Local Validator Returns Valid, Dirty (Default)', function() {
this.field.setValidator(function(newValue) {
return newValue;
});
setLocalValidator(this.field, true);
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
chai.assert(this.field.forceRerender.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
sinon.assert.calledOnce(this.field.forceRerender);
});
test('New Value Matches Old Value', function() {
this.field.setValue('value');
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('New Value (Class)Validates to Old Value', function() {
this.field.setValue('value');
this.field.doClassValidation_ = function() {
return 'value';
};
stubClassValidatorWithReturn(this.field, 'value');
addSpies(this.field);
this.field.setValue('notValue');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('New Value (Local)Validates to Old Value', function() {
this.field.setValue('value');
this.field.setValidator(function() {
return 'value';
});
setLocalValidatorWithReturn(this.field, 'value');
addSpies(this.field);
this.field.setValue('notValue');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.notCalled);
chai.assert(this.field.forceRerender.notCalled);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
sinon.assert.notCalled(this.field.forceRerender);
});
test('New Value (Class)Validates to not Old Value', function() {
this.field.setValue('value');
this.field.doClassValidation_ = function() {
return 'notValue';
};
stubClassValidatorWithReturn(this.field, 'notValue');
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('New Value (Local)Validates to not Old Value', function() {
this.field.setValue('value');
this.field.setValidator(function() {
return 'notValue';
});
setLocalValidatorWithReturn(this.field, 'notValue');
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('Class Validator Returns Null', function() {
this.field.doClassValidation_ = function() {
return null;
};
stubClassValidatorWithReturn(this.field, null);
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.calledOnce);
chai.assert(this.field.doValueUpdate_.notCalled);
sinon.assert.calledOnce(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
});
test('Class Validator Returns Same', function() {
this.field.doClassValidation_ = function(newValue) {
return newValue;
};
sinon.stub(this.field, 'doClassValidation_').callsFake(
function(newValue) {
return newValue;
});
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('Class Validator Returns Different', function() {
this.field.doClassValidation_ = function() {
return 'differentValue';
};
stubClassValidatorWithReturn(this.field, 'differentValue');
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('Class Validator Returns Undefined', function() {
this.field.doClassValidation_ = function() {};
stubClassValidatorWithReturn(this.field, undefined);
addSpies(this.field);
this.field.setValue('value');
chai.assert.equal(this.field.getValue(), 'value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('Local Validator Returns Null', function() {
this.field.setValidator(function() {
return null;
});
setLocalValidatorWithReturn(this.field, null);
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.calledOnce);
chai.assert(this.field.doValueUpdate_.notCalled);
sinon.assert.calledOnce(this.field.doValueInvalid_);
sinon.assert.notCalled(this.field.doValueUpdate_);
});
test('Local Validator Returns Same', function() {
this.field.setValidator(function(newValue) {
@@ -312,25 +297,23 @@ suite('Abstract Fields', function() {
});
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('Local Validator Returns Different', function() {
this.field.setValidator(function() {
return 'differentValue';
});
setLocalValidatorWithReturn(this.field, 'differentValue');
addSpies(this.field);
this.field.setValue('value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
test('Local Validator Returns Undefined', function() {
this.field.setValidator(function() {});
setLocalValidatorWithReturn(this.field, undefined);
addSpies(this.field);
this.field.setValue('value');
chai.assert.equal(this.field.getValue(), 'value');
chai.assert(this.field.doValueInvalid_.notCalled);
chai.assert(this.field.doValueUpdate_.calledOnce);
sinon.assert.notCalled(this.field.doValueInvalid_);
sinon.assert.calledOnce(this.field.doValueUpdate_);
});
});
suite('Customization', function() {