File: test_client.py

package info (click to toggle)
python-snapcast 2.3.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 184 kB
  • sloc: python: 1,564; makefile: 9
file content (102 lines) | stat: -rw-r--r-- 3,442 bytes parent folder | download
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
94
95
96
97
98
99
100
101
102
import unittest
from unittest import mock
from unittest.mock import MagicMock, AsyncMock
from helpers import async_run

from snapcast.control.client import Snapclient


class TestSnapclient(unittest.TestCase):

    def setUp(self):
        data = {
            'id': 'test',
            'host': {
                'ip': '0.0.0.0',
                'name': 'localhost'
            },
            'config': {
                'name': '',
                'latency': 0,
                'volume': {
                    'muted': False,
                    'percent': 90
                }
            },
            'snapclient': {
                'version': '0.0'
            },
            'connected': True
        }
        server = AsyncMock()
        server.synchronize = MagicMock()
        group = AsyncMock()
        group.callback = MagicMock()
        server.group = MagicMock(return_value=group)
        server.groups = ['test_group']
        self.client = Snapclient(server, data)

    @mock.patch.object(Snapclient, 'group', new=1)
    def test_init(self):
        self.assertEqual(self.client.identifier, 'test')
        self.assertEqual(self.client.friendly_name, 'localhost')
        self.assertEqual(self.client.version, '0.0')
        self.assertEqual(self.client.connected, True)
        self.assertEqual(self.client.name, '')
        self.assertEqual(self.client.latency, 0)
        self.assertEqual(self.client.volume, 90)
        self.assertEqual(self.client.muted, False)
        self.assertEqual(self.client.group, 1)

    @mock.patch.object(Snapclient, 'group')
    def test_set_volume(self, mock):
        async_run(self.client.set_volume(100))
        self.assertEqual(self.client.volume, 100)

    def test_set_name(self):
        async_run(self.client.set_name('test'))
        self.assertEqual(self.client.name, 'test')

    def test_set_latency(self):
        async_run(self.client.set_latency(1))
        self.assertEqual(self.client.latency, 1)

    def test_set_muted(self):
        async_run(self.client.set_muted(True))
        self.assertEqual(self.client.muted, True)

    @mock.patch.object(Snapclient, 'group')
    def test_update_volume(self, mock):
        self.client.update_volume({'volume': {'percent': 50, 'muted': True}})
        self.assertEqual(self.client.volume, 50)
        self.assertEqual(self.client.muted, True)

    def test_update_name(self):
        self.client.update_name({'name': 'new name'})
        self.assertEqual(self.client.name, 'new name')

    def test_update_latency(self):
        self.client.update_latency({'latency': 50})
        self.assertEqual(self.client.latency, 50)

    def test_update_connected(self):
        self.client.update_connected(False)
        self.assertEqual(self.client.connected, False)

    @mock.patch.object(Snapclient, 'group')
    def test_snapshot_restore(self, mock):
        async_run(self.client.set_name('first'))
        self.client.snapshot()
        async_run(self.client.set_name('other name'))
        self.assertEqual(self.client.name, 'other name')
        async_run(self.client.restore())
        self.assertEqual(self.client.name, 'first')

    def test_set_callback(self):
        cb = MagicMock()
        self.client.set_callback(cb)
        self.client.update_connected(False)
        cb.assert_called_with(self.client)

    def test_groups_available(self):
        self.assertEqual(self.client.groups_available(), ['test_group'])