import json import os import shutil import tempfile from twisted.trial import unittest import mock from lbrynet.lbrynet_daemon import UIManager class BundledUIManagerTest(unittest.TestCase): def setUp(self): self.active_dir = tempfile.mkdtemp() self.bundled_dir = tempfile.mkdtemp() self.manager = UIManager.BundledUIManager(mock.Mock(), self.active_dir, self.bundled_dir) def tearDown(self): shutil.rmtree(self.active_dir) shutil.rmtree(self.bundled_dir) def test_when_bundle_is_not_available(self): result = self.manager.setup() self.assertFalse(result) expected = [] self.assertEqual(os.listdir(self.active_dir), expected) def test_when_already_bundled(self): make_data_file(self.active_dir) make_data_file(self.bundled_dir) result = self.manager.setup() self.assertTrue(result) expected = ['data.json'] self.assertEqual(os.listdir(self.active_dir), expected) def test_bundled_files_are_copied(self): make_data_file(self.active_dir) make_data_file(self.bundled_dir, 'BARFOO') touch(os.path.join(self.bundled_dir, 'test.html')) result = self.manager.setup() self.assertTrue(result) self.assertEqual('BARFOO', self.manager.version()) expected = ['data.json', 'test.html'] self.assertItemsEqual(os.listdir(self.active_dir), expected) def make_data_file(directory, sha='FOOBAR'): with open(os.path.join(directory, 'data.json'), 'w') as f: json.dump({'sha': sha}, f) def touch(filename): with open(filename, 'a') as f: pass