Git Product home page Git Product logo

schematics-proto3's People

Contributors

mlga avatar

Watchers

 avatar

schematics-proto3's Issues

Missing test case - validation with name override

There should be test cases that check if "renamed" field is reflected properly in validation errors.

Example

class Something(Model):
    custom_name = types.StringType(metadata=dict(protobuf_field='value'))

    class Options:
        _protobuf_class = pb.Something

Upon validation error, custom_name should be used to denote an error:

{'custom_name': ['Please speak up!']}

This must be true for nested messages as well.

Missing tase case - error path

Currently, mostly "happy" paths are tested in unit tests. There should be test cases for misconfiguration, wrong usage and others.
This will require addressing many TODOs in code concerning raising proper exception and handling wrong states gracefully.

To Do

  • Check (and test) misconfiguration
    • Model field does not present in assigned protobuf message
    • Model field declared with type different from protobuf message's field type
    • required option used in oneof inner field
    • required option used in repeated inner field
    • required option used in primitive field
  • Check (and test) misuse
    • Model.load_protobuf used for wrong protobuf message (of wrong type / not set in Options)

Refactor .from_protobuf method

Currently, .from_protobuf method is a spaghetti of nested if/elif/else statements and repeated code. It's complicated and hard to reason about. It it good enough for fast prototyping but unacceptable for production-ready code.

Solution

Implement .from_protobuf in every type so protobuf handling details may be implemented there.

Problem: Wrapped field types need an information about parent message to be able to correctly return Unset.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.