def test_rejection_element_tracetype(validator: BaseTracesValidator): val = [dict(type='bogus', a=4)] with pytest.raises(ValueError) as validation_failure: validator.validate_coerce(val) assert "Invalid element(s)" in str(validation_failure.value)
def test_rejection_type(validator: BaseTracesValidator): val = 37 with pytest.raises(ValueError) as validation_failure: validator.validate_coerce(val) assert "Invalid value" in str(validation_failure.value)
def test_rejection_element_attr(validator: BaseTracesValidator): val = [dict(type='scatter', bogus=99)] with pytest.raises(TypeError) as validation_failure: validator.validate_coerce(val) assert "got an unexpected keyword argument 'bogus'" in str( validation_failure.value)
def test_default_is_scatter(validator: BaseTracesValidator): val = [dict(a=1, c=[3])] res = validator.validate_coerce(val) assert isinstance(res, tuple) assert isinstance(res[0], Scatter) assert res[0].a == 1 assert res[0].b is None assert res[0].c == [3] assert res[0].uid is not None
def test_acceptance_dict(validator: BaseTracesValidator): val = (dict(type='scatter', a=1, c=[3]), dict(type='box', b='two')) res = validator.validate_coerce(val) assert isinstance(res, tuple) assert isinstance(res[0], Scatter) assert res[0].a == 1 assert res[0].b is None assert res[0].c == [3] assert res[0].uid is not None assert isinstance(res[1], Box) assert res[1].a is None assert res[1].b == 'two' assert res[1].c is None assert res[1].uid is not None # Make sure UIDs are actually unique assert res[0].uid != res[1].uid
def test_uid_preserved(validator: BaseTracesValidator): uid1 = 'qwerty' uid2 = 'asdf' val = (dict(type='scatter', a=1, c=[3], uid=uid1), dict(type='box', b='two', uid=uid2)) res = validator.validate_coerce(val) assert isinstance(res, tuple) assert isinstance(res[0], Scatter) assert res[0].a == 1 assert res[0].b is None assert res[0].c == [3] assert res[0].uid == uid1 assert isinstance(res[1], Box) assert res[1].a is None assert res[1].b == 'two' assert res[1].c is None assert res[1].uid == uid2
def validator(): return BaseTracesValidator(class_map={ 'scatter': Scatter, 'bar': Bar, 'box': Box })