Example #1
0
 def test_nulls(self):
     selection = (_.dog[_.name('knows_sit').knows_command(
         command=Command.SIT)('knows_roll').knows_command(
             command=Command.ROLL_OVER).is_housetrained.owner[
                 _.name.hobbies[_.name(
                     'coolness').cool_factor]].best_friend[_.name].age(
                         on_date=MyDateTime(datetime.now())).birthday])
     loaded = quiz.load(
         DogQuery, selection, {
             'dog': {
                 'name': u'Rufus',
                 'knows_sit': True,
                 'knows_roll': False,
                 'is_housetrained': True,
                 'owner': None,
                 'best_friend': None,
                 'age': 3,
                 'birthday': 1540731645,
             }
         })
     assert isinstance(loaded, DogQuery)
     assert loaded == DogQuery(dog=Dog(
         name='Rufus',
         knows_sit=True,
         knows_roll=False,
         is_housetrained=True,
         owner=None,
         best_friend=None,
         age=3,
         birthday=MyDateTime(datetime.fromtimestamp(1540731645)),
     ))
Example #2
0
 def test_invalid_argument_type_optional(self):
     selection_set = _.is_housetrained(at_other_homes='foo')
     with pytest.raises(quiz.SelectionError) as exc:
         quiz.validate(Dog, selection_set)
     assert exc.value == quiz.SelectionError(
         Dog, 'is_housetrained',
         quiz.InvalidArgumentType('at_other_homes', 'foo'))
Example #3
0
    def test_invalid_argument_type(self):
        selection_set = _.knows_command(command='foobar')
        with pytest.raises(quiz.SelectionError) as exc:
            quiz.validate(Dog, selection_set)

        assert exc.value == quiz.SelectionError(
            Dog, 'knows_command',
            quiz.InvalidArgumentType('command', 'foobar'))
Example #4
0
 def test_invalid_argument(self):
     with pytest.raises(quiz.SelectionError) as exc:
         quiz.validate(Dog, _.knows_command(
             foo=1, command=Command.SIT))
     assert exc.value == quiz.SelectionError(
         Dog,
         'knows_command',
         quiz.NoSuchArgument('foo'))
Example #5
0
 def test_invalid_argument_type_optional(self):
     selection_set = _.is_housetrained(at_other_homes="foo")
     with pytest.raises(quiz.SelectionError) as exc:
         quiz.validate(Dog, selection_set)
     assert exc.value == quiz.SelectionError(
         Dog,
         "is_housetrained",
         quiz.InvalidArgumentType("at_other_homes", "foo"),
     )
Example #6
0
 def test_combination(self):
     assert _.foo.bar[_.bing(param1=4.1).baz.foo_bar_bla(
         p2=None, r='')[_.height(unit='cm')].oof.qux()] == SelectionSet(
             Field('foo'),
             Field('bar',
                   selection_set=SelectionSet(
                       Field('bing', fdict({'param1': 4.1})),
                       Field('baz'),
                       Field(
                           'foo_bar_bla', fdict({
                               'p2': None,
                               'r': ''
                           }),
                           SelectionSet(
                               Field('height', fdict({'unit': 'cm'})), )),
                       Field('oof'),
                       Field('qux'),
                   )))
Example #7
0
    def test_query(self, schema):

        query = schema.query[_.license(key='MIT')]
        assert query == quiz.Query(cls=schema.Query,
                                   selections=quiz.SelectionSet(
                                       quiz.Field('license',
                                                  {'key': 'MIT'}), ))
        with pytest.raises(quiz.SelectionError):
            schema.query[_.foo]
Example #8
0
    def test_query(self, schema):

        query = schema.query[_.license(key="MIT")]
        assert query == quiz.Query(
            cls=schema.Query,
            selections=quiz.SelectionSet(quiz.Field("license",
                                                    {"key": "MIT"})),
        )
        with pytest.raises(quiz.SelectionError):
            schema.query[_.foo]
Example #9
0
 def test_nulls(self):
     selection = _.dog[
         _.name("knows_sit")
         .knows_command(command=Command.SIT)("knows_roll")
         .knows_command(command=Command.ROLL_OVER)
         .is_housetrained.owner[
             _.name.hobbies[_.name("coolness").cool_factor]
         ]
         .best_friend[_.name]
         .age(on_date=MyDateTime(datetime.now()))
         .birthday
     ]
     loaded = quiz.load(
         DogQuery,
         selection,
         {
             "dog": {
                 "name": "Rufus",
                 "knows_sit": True,
                 "knows_roll": False,
                 "is_housetrained": True,
                 "owner": None,
                 "best_friend": None,
                 "age": 3,
                 "birthday": 1540731645,
             }
         },
     )
     assert isinstance(loaded, DogQuery)
     assert loaded == DogQuery(
         dog=Dog(
             name="Rufus",
             knows_sit=True,
             knows_roll=False,
             is_housetrained=True,
             owner=None,
             best_friend=None,
             age=3,
             birthday=MyDateTime(datetime.fromtimestamp(1540731645)),
         )
     )
Example #10
0
 def test_combination(self):
     assert _.foo.bar[_.bing(param1=4.1).baz.foo_bar_bla(
         p2=None, r="")[_.height(unit="cm")].oof.qux()] == SelectionSet(
             Field("foo"),
             Field(
                 "bar",
                 selection_set=SelectionSet(
                     Field("bing", fdict({"param1": 4.1})),
                     Field("baz"),
                     Field(
                         "foo_bar_bla",
                         fdict({
                             "p2": None,
                             "r": ""
                         }),
                         SelectionSet(Field("height", fdict({"unit":
                                                             "cm"}))),
                     ),
                     Field("oof"),
                     Field("qux"),
                 ),
             ),
         )
Example #11
0
 def test_full(self):
     selection = (_.dog[_.name.color('knows_sit').knows_command(
         command=Command.SIT)('knows_roll').knows_command(
             command=Command.ROLL_OVER).is_housetrained.owner[
                 _.name.hobbies[_.name(
                     'coolness').cool_factor]].best_friend[_.name].age(
                         on_date=MyDateTime(datetime.now())).birthday])
     loaded = quiz.load(
         DogQuery, selection, {
             'dog': {
                 'name': u'Rufus',
                 'color': u'GOLDEN',
                 'knows_sit': True,
                 'knows_roll': False,
                 'is_housetrained': True,
                 'owner': {
                     'name':
                     u'Fred',
                     'hobbies': [{
                         'name': u'stamp collecting',
                         'coolness': 2,
                     }, {
                         'name': u'snowboarding',
                         'coolness': 8,
                     }]
                 },
                 'best_friend': {
                     'name': u'Sally',
                 },
                 'age': 3,
                 'birthday': 1540731645,
             }
         })
     # TODO: include union types
     assert isinstance(loaded, DogQuery)
     assert loaded == DogQuery(dog=Dog(
         name='Rufus',
         color=Color.GOLDEN,
         knows_sit=True,
         knows_roll=False,
         is_housetrained=True,
         owner=Human(name='Fred',
                     hobbies=[
                         Hobby(name='stamp collecting', coolness=2),
                         Hobby(name='snowboarding', coolness=8)
                     ]),
         best_friend=Sentient(name='Sally'),
         age=3,
         birthday=MyDateTime(datetime.fromtimestamp(1540731645)),
     ))
Example #12
0
 def test_simple(self):
     assert _.foo(bla=4, bar=None) == SelectionSet(
         Field('foo', {
             'bla': 4,
             'bar': None
         }), )
Example #13
0
 def test_argument_named_self(self):
     assert _.foo(self=4, bla=3) == SelectionSet(
         Field("foo", fdict({
             "self": 4,
             "bla": 3
         })))
Example #14
0
 def test_empty(self):
     assert _.foo() == SelectionSet(Field("foo"))
Example #15
0
 def test_simple(self):
     assert _.foo(bla=4, bar=None) == SelectionSet(
         Field("foo", {
             "bla": 4,
             "bar": None
         }))
Example #16
0
 def test_full(self):
     metadata = quiz.QueryMetadata(
         request=snug.GET("https://my.url/foo"), response=snug.Response(200)
     )
     selection = _.dog[
         _.name.color("knows_sit")
         .knows_command(command=Command.SIT)("knows_roll")
         .knows_command(command=Command.ROLL_OVER)
         .is_housetrained.owner[
             _.name.hobbies[_.name("coolness").cool_factor]
         ]
         .best_friend[_.name]
         .age(on_date=MyDateTime(datetime.now()))
         .birthday
     ]
     loaded = quiz.load(
         DogQuery,
         selection,
         quiz.RawResult(
             {
                 "dog": {
                     "name": "Rufus",
                     "color": "GOLDEN",
                     "knows_sit": True,
                     "knows_roll": False,
                     "is_housetrained": True,
                     "owner": {
                         "name": "Fred",
                         "hobbies": [
                             {"name": "stamp collecting", "coolness": 2},
                             {"name": "snowboarding", "coolness": 8},
                         ],
                     },
                     "best_friend": {"name": "Sally"},
                     "age": 3,
                     "birthday": 1540731645,
                 }
             },
             meta=metadata,
         ),
     )
     # TODO: include union types
     assert isinstance(loaded, DogQuery)
     assert loaded.__metadata__ == metadata
     assert loaded == DogQuery(
         dog=Dog(
             name="Rufus",
             color=Color.GOLDEN,
             knows_sit=True,
             knows_roll=False,
             is_housetrained=True,
             owner=Human(
                 name="Fred",
                 hobbies=[
                     Hobby(name="stamp collecting", coolness=2),
                     Hobby(name="snowboarding", coolness=8),
                 ],
             ),
             best_friend=Sentient(name="Sally"),
             age=3,
             birthday=MyDateTime(datetime.fromtimestamp(1540731645)),
         )
     )
Example #17
0
 def test_argument_named_self(self):
     assert _.foo(self=4, bla=3) == SelectionSet(
         Field('foo', fdict({
             'self': 4,
             'bla': 3
         })))