File: __init__.py

package info (click to toggle)
mopidy-mpd 3.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 704 kB
  • sloc: python: 7,640; makefile: 3
file content (93 lines) | stat: -rw-r--r-- 2,934 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import unittest
from unittest import mock

import pykka

from mopidy import core
from mopidy_mpd import session, uri_mapper

from tests import dummy_audio, dummy_backend, dummy_mixer


class MockConnection(mock.Mock):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.host = mock.sentinel.host
        self.port = mock.sentinel.port
        self.response = []

    def queue_send(self, data):
        data = data.decode()
        lines = (line for line in data.split("\n") if line)
        self.response.extend(lines)


class BaseTestCase(unittest.TestCase):
    enable_mixer = True

    def get_config(self):
        return {
            "core": {"max_tracklist_length": 10000},
            "mpd": {"password": None, "default_playlist_scheme": "dummy"},
        }

    def setUp(self):  # noqa: N802
        if self.enable_mixer:
            self.mixer = dummy_mixer.create_proxy()
        else:
            self.mixer = None
        self.audio = dummy_audio.create_proxy()
        self.backend = dummy_backend.create_proxy(audio=self.audio)

        self.core = core.Core.start(
            self.get_config(),
            audio=self.audio,
            mixer=self.mixer,
            backends=[self.backend],
        ).proxy()

        self.uri_map = uri_mapper.MpdUriMapper(self.core)
        self.connection = MockConnection()
        self.session = session.MpdSession(
            self.connection,
            config=self.get_config(),
            core=self.core,
            uri_map=self.uri_map,
        )
        self.dispatcher = self.session.dispatcher
        self.context = self.dispatcher.context

    def tearDown(self):  # noqa: N802
        pykka.ActorRegistry.stop_all()

    def send_request(self, request):
        self.connection.response = []
        request = f"{request}\n".encode()
        self.session.on_receive({"received": request})
        return self.connection.response

    def assertNoResponse(self):  # noqa: N802
        assert [] == self.connection.response

    def assertInResponse(self, value):  # noqa: N802
        assert (
            value in self.connection.response
        ), f"Did not find {value!r} in {self.connection.response!r}"

    def assertOnceInResponse(self, value):  # noqa: N802
        matched = len([r for r in self.connection.response if r == value])
        assert (
            1 == matched
        ), f"Expected to find {value!r} once in {self.connection.response!r}"

    def assertNotInResponse(self, value):  # noqa: N802
        assert (
            value not in self.connection.response
        ), f"Found {value!r} in {self.connection.response!r}"

    def assertEqualResponse(self, value):  # noqa: N802
        assert 1 == len(self.connection.response)
        assert value == self.connection.response[0]

    def assertResponseLength(self, value):  # noqa: N802
        assert value == len(self.connection.response)