Test whole save/load state.
This commit is contained in:
parent
6e33bbcadd
commit
6ee36752bd
@ -9,8 +9,12 @@ import mock
|
||||
|
||||
import pykka
|
||||
|
||||
import mopidy
|
||||
|
||||
from mopidy.core import Core
|
||||
from mopidy.internal import storage, versioning
|
||||
from mopidy.internal import models, storage, versioning
|
||||
from mopidy.models import Track
|
||||
from tests import dummy_mixer
|
||||
|
||||
|
||||
class CoreActorTest(unittest.TestCase):
|
||||
@ -52,6 +56,8 @@ class CoreActorExportRestoreTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.temp_dir = tempfile.mkdtemp()
|
||||
self.state_file = os.path.join(self.temp_dir, 'core', 'state.json.gz')
|
||||
|
||||
config = {
|
||||
'core': {
|
||||
'max_tracklist_length': 10000,
|
||||
@ -62,29 +68,87 @@ class CoreActorExportRestoreTest(unittest.TestCase):
|
||||
|
||||
os.mkdir(os.path.join(self.temp_dir, 'core'))
|
||||
|
||||
self.core = Core.start(
|
||||
config=config, mixer=None, backends=[]).proxy()
|
||||
self.mixer = dummy_mixer.create_proxy()
|
||||
self.core = Core(
|
||||
config=config, mixer=self.mixer, backends=[])
|
||||
|
||||
def tearDown(self): # noqa: N802
|
||||
pykka.ActorRegistry.stop_all()
|
||||
shutil.rmtree(self.temp_dir)
|
||||
|
||||
def test_save_state(self):
|
||||
self.core.teardown().get()
|
||||
# TODO: implement meaningful test
|
||||
self.core.teardown()
|
||||
|
||||
def test_load_state(self):
|
||||
self.core.setup().get()
|
||||
# TODO: implement meaningful test
|
||||
assert os.path.isfile(self.state_file)
|
||||
reload_data = storage.load(self.state_file)
|
||||
data = {}
|
||||
data['version'] = mopidy.__version__
|
||||
data['state'] = models.CoreState(
|
||||
tracklist=models.TracklistState(
|
||||
repeat=False, random=False,
|
||||
consume=False, single=False,
|
||||
next_tlid=1),
|
||||
history=models.HistoryState(),
|
||||
playback=models.PlaybackState(state='stopped',
|
||||
time_position=0),
|
||||
mixer=models.MixerState())
|
||||
assert data == reload_data
|
||||
|
||||
def test_load_state_no_file(self):
|
||||
self.core.setup()
|
||||
|
||||
assert self.core.mixer.get_mute() is None
|
||||
assert self.core.mixer.get_volume() is None
|
||||
assert self.core.tracklist._next_tlid == 1
|
||||
assert self.core.tracklist.get_repeat() is False
|
||||
assert self.core.tracklist.get_random() is False
|
||||
assert self.core.tracklist.get_consume() is False
|
||||
assert self.core.tracklist.get_single() is False
|
||||
assert self.core.tracklist.get_length() == 0
|
||||
assert self.core.playback._start_paused is False
|
||||
assert self.core.playback._start_at_position is None
|
||||
assert self.core.history.get_length() == 0
|
||||
|
||||
def test_load_state_with_data(self):
|
||||
data = {}
|
||||
data['version'] = mopidy.__version__
|
||||
data['state'] = models.CoreState(
|
||||
tracklist=models.TracklistState(
|
||||
repeat=True, random=True,
|
||||
consume=False, single=False,
|
||||
tl_tracks=[models.TlTrack(tlid=12, track=Track(uri='a:a'))],
|
||||
next_tlid=14),
|
||||
history=models.HistoryState(history=[
|
||||
models.HistoryTrack(
|
||||
timestamp=12,
|
||||
track=models.Ref.track(uri='a:a', name='a')),
|
||||
models.HistoryTrack(
|
||||
timestamp=13,
|
||||
track=models.Ref.track(uri='a:b', name='b'))]),
|
||||
playback=models.PlaybackState(tlid=12, state='paused',
|
||||
time_position=432),
|
||||
mixer=models.MixerState(mute=True, volume=12))
|
||||
storage.dump(self.state_file, data)
|
||||
|
||||
self.core.setup()
|
||||
|
||||
assert self.core.mixer.get_mute() is True
|
||||
assert self.core.mixer.get_volume() == 12
|
||||
assert self.core.tracklist._next_tlid == 14
|
||||
assert self.core.tracklist.get_repeat() is True
|
||||
assert self.core.tracklist.get_random() is True
|
||||
assert self.core.tracklist.get_consume() is False
|
||||
assert self.core.tracklist.get_single() is False
|
||||
assert self.core.tracklist.get_length() == 1
|
||||
assert self.core.playback._start_paused is True
|
||||
assert self.core.playback._start_at_position == 432
|
||||
assert self.core.history.get_length() == 2
|
||||
|
||||
def test_delete_state_file_on_restore(self):
|
||||
file_path = os.path.join(self.temp_dir, 'core', 'state.json.gz')
|
||||
|
||||
data = {}
|
||||
storage.dump(file_path, data)
|
||||
self.assertTrue(os.path.isfile(file_path), 'missing persistent file')
|
||||
storage.dump(self.state_file, data)
|
||||
assert os.path.isfile(self.state_file)
|
||||
|
||||
self.core.setup().get()
|
||||
self.core.setup()
|
||||
|
||||
self.assertFalse(os.path.isfile(file_path),
|
||||
'persistent file has to be deleted')
|
||||
assert not os.path.isfile(self.state_file)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user