72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
import os
|
|
from dataclasses import asdict
|
|
from pathlib import Path
|
|
|
|
import yaml
|
|
|
|
from sublime.config import (
|
|
AppConfiguration, ReplayGainType, ServerConfiguration)
|
|
|
|
|
|
def test_config_default_cache_location():
|
|
config = AppConfiguration()
|
|
assert config.cache_location == os.path.expanduser(
|
|
'~/.local/share/sublime-music')
|
|
|
|
|
|
def test_server_property():
|
|
config = AppConfiguration()
|
|
server = ServerConfiguration(
|
|
name='foo', server_address='bar', username='baz')
|
|
config.servers.append(server)
|
|
assert config.server is None
|
|
config.current_server_index = 0
|
|
assert asdict(config.server) == asdict(server)
|
|
|
|
expected_state_file_location = Path('~/.local/share').expanduser()
|
|
expected_state_file_location = expected_state_file_location.joinpath(
|
|
'sublime-music',
|
|
'6df23dc03f9b54cc38a0fc1483df6e21',
|
|
'state.pickle',
|
|
)
|
|
assert config.state_file_location == expected_state_file_location
|
|
|
|
|
|
def test_yaml_load_unload():
|
|
config = AppConfiguration()
|
|
server = ServerConfiguration(
|
|
name='foo', server_address='bar', username='baz')
|
|
config.servers.append(server)
|
|
config.current_server_index = 0
|
|
|
|
yamlified = yaml.dump(asdict(config))
|
|
unyamlified = yaml.load(yamlified, Loader=yaml.CLoader)
|
|
deserialized = AppConfiguration(**unyamlified)
|
|
|
|
# Make sure that the config and each of the servers gets loaded in properly
|
|
# into the dataclass objects.
|
|
assert asdict(config) == asdict(deserialized)
|
|
assert type(deserialized.replay_gain) == ReplayGainType
|
|
for i, server in enumerate(deserialized.servers):
|
|
assert asdict(config.servers[i]) == asdict(server)
|
|
|
|
|
|
def test_config_migrate():
|
|
config = AppConfiguration()
|
|
server = ServerConfiguration(
|
|
name='Test',
|
|
server_address='https://test.host',
|
|
username='test',
|
|
)
|
|
config.servers.append(server)
|
|
config.migrate()
|
|
|
|
assert config.version == 3
|
|
for server in config.servers:
|
|
server.version == 0
|
|
|
|
|
|
def test_replay_gain_enum():
|
|
for rg in (ReplayGainType.NO, ReplayGainType.TRACK, ReplayGainType.ALBUM):
|
|
assert rg == ReplayGainType.from_string(rg.as_string())
|