Example #1
0
def test_model_is_instance_inherits_from(cat_swagger_spec, pet_type, pet_spec, cat_type, cat_kwargs):
    cat = cat_type(**cat_kwargs)
    new_pet_type = create_model_type(cat_swagger_spec, 'Pet', pet_spec)
    assert pet_type._isinstance(cat)
    assert isinstance(cat, cat_type)
    assert isinstance(cat, pet_type)
    assert isinstance(cat, new_pet_type)
Example #2
0
def test_model_is_instance_inherits_from(cat_swagger_spec, pet_type, pet_spec, cat_type, cat_kwargs):
    cat = cat_type(**cat_kwargs)
    new_pet_type = create_model_type(cat_swagger_spec, 'Pet', pet_spec)
    assert pet_type._isinstance(cat)
    assert isinstance(cat, cat_type)
    assert isinstance(cat, pet_type)
    assert isinstance(cat, new_pet_type)
Example #3
0
def test_raise_error_if_duplicate_models_are_identified(
        minimal_swagger_dict, pet_model_spec):
    model_name = 'Pet'
    minimal_swagger_dict['definitions'][model_name] = pet_model_spec
    swagger_spec = Spec(minimal_swagger_dict)
    models = {
        model_name:
        create_model_type(
            swagger_spec=swagger_spec,
            model_name=model_name,
            model_spec={},
        )
    }
    path = ['definitions', model_name, 'x-model'],
    with pytest.raises(ValueError) as excinfo:
        collect_models(
            minimal_swagger_dict['definitions'][model_name],
            'x-model',
            path,
            models=models,
            swagger_spec=swagger_spec,
        )

    expected_lines = [
        'Identified duplicated model: model_name "{mod_name}", path: {path}.'.
        format(mod_name=model_name, path=path),
        'Known model spec: "{}"',
        'New model spec: "{pet_model_spec}"'.format(
            pet_model_spec=pet_model_spec),
        'TIP: enforce different model naming by using {MODEL_MARKER}'.format(
            MODEL_MARKER='x-model'),
    ]
    assert all(l in str(excinfo.value) for l in expected_lines)
Example #4
0
def test_create_model_type_properly_extracts_model_name(deref_value, expected_inherits):
    swagger_spec = mock.Mock(
        name='swagger-spec',
        deref=lambda schema: deref_value if is_ref(schema) else schema,
    )
    model_type = create_model_type(
        swagger_spec=swagger_spec,
        model_name='Dog',
        model_spec={
            'type': 'object',
            'title': 'Dog',
            'allOf': [
                {
                    '$ref': '#/definitions/GenericPet'
                },
                {
                    'properties': {
                        'birth_date': {
                            'type': 'string',
                            'format': 'date',
                        },
                    },
                    'required': ['birth_date'],
                },
            ],
        }
    )
    assert model_type._inherits_from == expected_inherits
def test_create_model_type_lazy_docstring(mock_create_docstring):
    # NOTE: some sort of weird interaction with pytest, pytest-mock and mock
    #       made using the 'mocker' fixture here a no-go.
    definitions_spec = definitions_spec_fixture()
    pet_spec = pet_spec_fixture(definitions_spec)
    pet_type = create_model_type('Pet', pet_spec)
    assert not mock_create_docstring.called
    assert pet_type.__doc__ == mock_create_docstring.return_value
    mock_create_docstring.assert_called_once_with(pet_spec)
def test_pet_model(pet_spec):
    Pet = create_model_type('Pet', pet_spec)
    expected = set(['id', 'category', 'name', 'photoUrls', 'tags'])
    pet = Pet(id=1, name='Darwin')
    assert set(dir(pet)) == expected
    assert pet == Pet(id=1, name='Darwin')
    assert pet != Pet(id=2, name='Fido')
    assert "Pet(category=None, id=1, name='Darwin', photoUrls=None, tags=None)" \
           == repr(pet)
Example #7
0
def test_create_model_type_lazy_docstring(mock_create_docstring,
                                          empty_swagger_spec):
    # NOTE: some sort of weird interaction with pytest, pytest-mock and mock
    #       made using the 'mocker' fixture here a no-go.
    definitions_spec = definitions_spec_fixture()
    pet_spec = pet_spec_fixture(definitions_spec)
    pet_type = create_model_type(empty_swagger_spec, 'Pet', pet_spec)
    assert mock_create_docstring.call_count == 0
    assert pet_type.__doc__ == mock_create_docstring.return_value
    assert mock_create_docstring.call_count == 1
def test_create_model_type_lazy_docstring(mock_create_docstring,
                                          empty_swagger_spec):
    # NOTE: some sort of weird interaction with pytest, pytest-mock and mock
    #       made using the 'mocker' fixture here a no-go.
    definitions_spec = definitions_spec_fixture()
    pet_spec = pet_spec_fixture(definitions_spec)
    pet_type = create_model_type(empty_swagger_spec, 'Pet', pet_spec)
    assert mock_create_docstring.call_count == 0
    assert pet_type.__doc__ == mock_create_docstring.return_value
    assert mock_create_docstring.call_count == 1
def test_no_arg_constructor(pet_spec):
    Pet = create_model_type('Pet', pet_spec)
    attr_names = (
        # '__doc__',  <-- will trigger docstring generation so skip for now
        '__eq__',
        '__init__',
        '__repr__',
        '__dir__',
    )
    for attr_name in attr_names:
        assert hasattr(Pet, attr_name)
Example #10
0
def user_type(user_spec):
    """
    :rtype: User
    """
    return create_model_type('User', user_spec)
Example #11
0
def cat_type(cat_swagger_spec, cat_spec):
    return create_model_type(cat_swagger_spec, 'Cat', cat_spec)
Example #12
0
def cat_type(cat_swagger_spec, cat_spec):
    return create_model_type(cat_swagger_spec, 'Cat', cat_spec)
Example #13
0
def tag_model(definitions_spec):
    tag_spec = definitions_spec['Tag']
    return create_model_type(Mock(spec=Spec), 'Tag', tag_spec)
Example #14
0
def pet_type(cat_swagger_spec, pet_spec):
    return create_model_type(cat_swagger_spec, 'Pet', pet_spec)
Example #15
0
def user_type(user_spec):
    """
    :rtype: User
    """
    return create_model_type(Mock(spec=Spec), 'User', user_spec)
Example #16
0
def user_type(mock_spec, user_spec):
    """
    :rtype: User
    """
    return create_model_type(mock_spec, 'User', user_spec)
Example #17
0
def tag_model(mock_spec, definitions_spec):
    tag_spec = definitions_spec['Tag']
    return create_model_type(mock_spec, 'Tag', tag_spec)
Example #18
0
def pet_type(cat_swagger_spec, pet_spec):
    return create_model_type(cat_swagger_spec, 'Pet', pet_spec)
Example #19
0
def test_create_model_type_lazy_docstring(mock_create_docstring, empty_swagger_spec, pet_spec):
    pet_type = create_model_type(empty_swagger_spec, 'Pet', pet_spec)
    assert mock_create_docstring.call_count == 0
    assert pet_type.__doc__ == mock_create_docstring.return_value
    assert mock_create_docstring.call_count == 1
Example #20
0
def tag_model(definitions_spec):
    tag_spec = definitions_spec['Tag']
    return create_model_type('Tag', tag_spec)
Example #21
0
def user_type(user_spec):
    """
    :rtype: User
    """
    return create_model_type(Mock(spec=Spec), 'User', user_spec)