Exemplo n.º 1
0
class ArtistSerializer(SQASerializer):
    """
    """

    id = Field(t.String, read_only=True)
    name = Field(t.String)
    uri = Field(t.String, source='spotify_uri')
Exemplo n.º 2
0
class HistorySerializer(SQASerializer):
    """
    """

    id = Field(t.String, read_only=True)
    track = Field(t.Nested(TrackSerializer))
    user = Field(t.Nested(UserSerializer))
Exemplo n.º 3
0
 def test_field_allow_none_error_message(self):
     field = Field('name', String(), required=False, allow_none=False)
     error = None
     try:
         field.is_valid(None)
     except ValidationError as e:
         error = e.message
     self.assertEqual(error, 'This field can not be None')
Exemplo n.º 4
0
    def test_non_required_field_and_allow_none(self):
        """ensure that a non required field that does not allow null values
        raises an error when validating None
        """

        field = Field('name', String(), required=False, allow_none=False)
        with self.assertRaises(ValidationError):
            field.is_valid(None)
Exemplo n.º 5
0
    def test_required_validation_error_message(self):

        field = Field('name', String())
        error = None
        try:
            field.is_valid(None)
        except ValidationError as e:
            error = e.message
        self.assertEqual(error, 'This is a required field')
Exemplo n.º 6
0
    def test_extra_validators_run(self):

        mock_validator_1 = mock.MagicMock()
        mock_validator_2 = mock.MagicMock()
        mock_validator_3 = mock.MagicMock()
        validators = [mock_validator_1, mock_validator_2, mock_validator_3]

        field = Field('name', String(), extra_validators=validators)
        field.is_valid('string')
        self.assertTrue(mock_validator_1.called)
        self.assertTrue(mock_validator_2.called)
        self.assertTrue(mock_validator_3.called)
Exemplo n.º 7
0
class TrackSerializer(BaseSpotifySerializer):
    """ Spotify track serializer
    """

    class Album(BaseSpotifySerializer):
        pass

    class Artists(BaseSpotifySerializer):
        pass

    duration = Field(t.Integer)  # ms
    album = Field(t.Nested(Album()))
    artists = Field(t.Collection(t.Nested(Artists())))
Exemplo n.º 8
0
class AlbumSerializer(SQASerializer):
    """
    """

    id = Field(t.String, read_only=True)
    name = Field(t.String)
    uri = Field(t.String, source='spotify_uri')
    images = Field(t.BaseType)

    #
    # Relations
    #

    artists = Field(t.Collection(t.Nested(ArtistSerializer)))
Exemplo n.º 9
0
    def test_field_type_validate_method_called(self):
        """ensure that after a field has run validation against required etc,
        it calls the validate method of the provided field type
        """
        mocked = mock.MagicMock()

        class MyValidateType(String):

            def validate(self, value):
                mocked()
                return super(MyValidateType, self).validate(value)

        field = Field('name', MyValidateType())
        field.is_valid('string')
        self.assertTrue(mocked.called)
Exemplo n.º 10
0
class UserSerializer(Serializer):
    """ Serializer for the User SQLAlchemy Model
    """

    id = Field(t.String, read_only=True)
    given_name = Field(t.String)
    family_name = Field(t.String)
    display_name = Field(t.String)
    avatar_url = Field(t.String)

    spotify_playlists = Field(SpotifyPlaylistEndpoint(), source='id')
Exemplo n.º 11
0
class TrackSerializer(SQASerializer):
    """
    """

    id = Field(t.String, read_only=True)
    name = Field(t.String)
    duration = Field(t.Integer)
    uri = Field(t.String, source='spotify_uri')
    play_count = Field(t.Integer, read_only=True)

    #
    # Relations
    #

    album = Field(t.Nested(AlbumSerializer, role=blacklist('artists')))
    artists = Field(t.Collection(t.Nested(ArtistSerializer)))
Exemplo n.º 12
0
class VolumeSerializer(Serializer):
    """ Validates altering the player volume.
    """

    volume = Field(t.Integer, required=True)

    def validate_volume(self, value):
        """ Validates the Volume level, must be between 0 and 100.

        Arguments
        ---------
        value : int
            The proposed volume level
        """

        if not value >= 0:
            raise ValidationError('Volume must be greater than 0')

        if not value <= 100:
            raise ValidationError('Volume must be less than 100')
Exemplo n.º 13
0
class PlaylistSerializer(BaseSpotifySerializer):
    """ Spotify playlist serializer

    Returns following data s structure:
        {
            'id': '4wtLaWQcPct5tlAWTxqjMD',
            'name': 'The Happy Hipster',
            'tracks': {
                'playlist': url to user's spotify tracks,
                'total': 186
            }
        }
    """

    class TrackSerializer(Serializer):
        """ Nested Track serializer
        Exposing url for tracks in playlist and total number of tracks in it
        """
        total = Field(t.Integer)
        playlist = Field(t.String)

    tracks = Field(t.Nested(TrackSerializer()))
Exemplo n.º 14
0
 class TrackSerializer(Serializer):
     """ Nested Track serializer
     Exposing url for tracks in playlist and total number of tracks in it
     """
     total = Field(t.Integer)
     playlist = Field(t.String)
Exemplo n.º 15
0
class BaseSpotifySerializer(Serializer):

    id = Field(t.String)
    name = Field(t.String)
    uri = Field(t.String)
Exemplo n.º 16
0
 def test_read_only_field_is_valid_when_required_value_is_none(self):
     """ensure a read only field is always considered valid
     """
     field = Field('name', String(), required=True, read_only=True)
     self.assertTrue(field.is_valid(None))
Exemplo n.º 17
0
class PlaylistSerializer(Serializer):
    """ This schema is used for adding tracks to the player playlist.
    """

    uri = Field(SpotifyURI, required=True)
Exemplo n.º 18
0
    def test_required_field_raises_error_when_value_is_none(self):

        field = Field('name', String())
        with self.assertRaises(ValidationError):
            field.is_valid(None)