async def test_prepare_media(app_mock, song): player = Player(app_mock) mock_func = mock.MagicMock() player.prepare_media(song, mock_func) # this may fail, since we should probably wait a little bit longer await asyncio.sleep(0.1) assert mock_func.called is True
def __init__(self, args, config): self.mode = config.MODE # DEPRECATED: use app.config.MODE instead self.config = config self.args = args self.initialized = Signal() self.about_to_shutdown = Signal() self.plugin_mgr = PluginsManager(self) self.request = Request() # TODO: rename request to http self.version_mgr = VersionManager(self) self.task_mgr = TaskManager(self) # Library. self.library = Library(config.PROVIDERS_STANDBY) # TODO: initialization should be moved into initialize Resolver.library = self.library # Player. self.player = Player( audio_device=bytes(config.MPV_AUDIO_DEVICE, 'utf-8')) self.playlist = Playlist( self, audio_select_policy=config.AUDIO_SELECT_POLICY) self.live_lyric = LiveLyric(self) self.fm = FM(self) # TODO: initialization should be moved into initialize self.player.set_playlist(self.playlist) self.about_to_shutdown.connect(lambda _: self.dump_state(), weak=False)
def test_play_all(app_mock): player = Player() playlist = Playlist(app_mock) player.set_playlist(playlist) playlist.mode = PlaylistMode.fm playlist.set_models([], next_=True) assert playlist.mode == PlaylistMode.normal
async def test_prepare_media_in_non_mainthread(app_mock, song): player = Player(app_mock) loop = asyncio.get_event_loop() mock_func = mock.MagicMock() try: await loop.run_in_executor(None, player.prepare_media, song, mock_func) except RuntimeError: pytest.fail('Prepare media in non mainthread should work')
def test_serialize_app(mocker): app = mocker.Mock(spec=App) app.live_lyric = mocker.Mock() app.live_lyric.current_sentence = '' player = Player(Playlist(app)) app.player = player app.playlist = player.playlist for format in ('plain', 'json'): serialize(format, app, brief=False) serialize(format, app, fetch=True) player.shutdown()
def test_change_song(app_mock, mocker, song, song1): mocker.patch.object(Player, 'play') pl = Playlist(app_mock) pl.add(song) pl._current_song = song player = Player(pl) with mock.patch.object(Playlist, 'current_song', new_callable=mock.PropertyMock) as mock_s: mock_s.return_value = song # return current song player.play_song(song1) pl.next() assert pl.current_song == song
def __init__(self, parent=None): super().__init__(parent) ControllerApi.player = Player(self) ui = UiMainWidget() ViewOp.ui = ui ViewOp.controller = ControllerApi ui.setup_ui(self) engine = create_engine( 'sqlite:////%s' % DATABASE_SQLITE, connect_args={'check_same_thread': False}, echo=False) Base.metadata.create_all(engine) Session = sessionmaker() Session.configure(bind=engine) session = Session() LOG.info('db connected: %s' % DATABASE_SQLITE) ControllerApi.session = session ControllerApi.view = ViewOp ControllerApi.desktop_mini = DesktopMiniLayer() ControllerApi.lyric_widget = LyricWidget() ControllerApi.notify_widget = NotifyWidget() ControllerApi.network_manager = NetworkManager(self) ControllerApi.current_playlist_widget = CurrentMusicTable() self._search_shortcut = QShortcut(QKeySequence('Ctrl+F'), self) self._minimize_shortcut = QShortcut(QKeySequence('Ctrl+M'), self) self._pre_focus = QShortcut(QKeySequence('Ctrl+['), self) self._next_focus = QShortcut(QKeySequence('Ctrl+]'), self) self.setAttribute(Qt.WA_MacShowFocusRect, False) self.setWindowIcon(QIcon(WINDOW_ICON)) self.setWindowTitle('FeelUOwn') self.mode_manager = ModesManger() self._init_signal_binding() self.load_config() app_event_loop = asyncio.get_event_loop() app_event_loop.call_later(1, self._init_plugins) app_event_loop.call_later(6, TipsManager.show_start_tip) asyncio.Task(VersionManager.check_release())
def test_play_all(app_mock): player = Player(app_mock) playlist = player.playlist playlist.mode = PlaylistMode.fm player.play_songs([]) assert playlist.mode == PlaylistMode.normal