mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 03:34:15 +02:00
[debian] initial Debian package management support
This commit is contained in:
99
tests/gems/debian/test_controller.py
Normal file
99
tests/gems/debian/test_controller.py
Normal file
@@ -0,0 +1,99 @@
|
||||
from unittest import TestCase
|
||||
from unittest.mock import MagicMock, patch, Mock
|
||||
|
||||
from bauh import __app_name__
|
||||
from bauh.api.abstract.controller import SearchResult
|
||||
from bauh.gems.debian.controller import DebianPackageManager
|
||||
from bauh.gems.debian.model import DebianPackage, DebianApplication
|
||||
|
||||
|
||||
class DebianPackageManagerTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.controller = DebianPackageManager(MagicMock())
|
||||
self.controller._apps_index = {}
|
||||
|
||||
@patch(f'{__app_name__}.gems.debian.controller.Aptitude.read_installed', return_value=iter((
|
||||
DebianPackage(name='gir1.2-javascriptcoregtk-4.0', version='2.34.1-0distro0.20.04.1',
|
||||
latest_version='2.34.1-0distro0.20.04.1',
|
||||
maintainer='Distro Developers', update=False, installed=True,
|
||||
description='JavaScript engine library from WebKitGTK - GObject introspection data'),
|
||||
DebianPackage(name='xwayland', version='2:1.20.13-1distro1~20.04.2',
|
||||
latest_version='2:1.20.13-1distro1~20.04.2',
|
||||
maintainer='Distro X-SWAT', update=False, installed=True,
|
||||
description='Xwayland X server')
|
||||
)))
|
||||
def test_read_installed__must_associated_packages_found_to_applications_if_appliable(self, read_installed: Mock):
|
||||
app = DebianApplication(name='xwayland', exe_path='xwayland', icon_path='xwayland', categories=('app',))
|
||||
|
||||
self.controller.__apps_index = {'xwayland': app}
|
||||
|
||||
result = self.controller.read_installed(disk_loader=None, pkg_types=None, internet_available=False)
|
||||
read_installed.assert_called_once()
|
||||
|
||||
self.assertIsNone(result.new)
|
||||
|
||||
expected = [DebianPackage(name='gir1.2-javascriptcoregtk-4.0', version='2.34.1-0distro0.20.04.1', latest_version='2.34.1-0distro0.20.04.1',
|
||||
maintainer='Distro Developers', update=False, installed=True,
|
||||
description='JavaScript engine library from WebKitGTK - GObject introspection data'),
|
||||
DebianPackage(name='xwayland', version='2:1.20.13-1distro1~20.04.2', latest_version='2:1.20.13-1distro1~20.04.2',
|
||||
maintainer='Distro X-SWAT', update=False, installed=True,
|
||||
description='Xwayland X server', app=app)
|
||||
]
|
||||
|
||||
self.assertEqual(expected, result.installed)
|
||||
|
||||
@patch(f'{__app_name__}.gems.debian.controller.Aptitude.read_installed', return_value=iter((
|
||||
DebianPackage(name='gir1.2-javascriptcoregtk-4.0', version='2.34.1-0distro0.20.04.1',
|
||||
latest_version='2.34.1-0distro0.20.04.1',
|
||||
maintainer='Distro Developers', update=False, installed=True,
|
||||
description='JavaScript engine library from WebKitGTK - GObject introspection data'),
|
||||
DebianPackage(name='xwayland', version='2:1.20.13-1distro1~20.04.2',
|
||||
latest_version='2:1.20.13-1distro1~20.04.2',
|
||||
maintainer='Distro X-SWAT', update=False, installed=True,
|
||||
description='Xwayland X server')
|
||||
)))
|
||||
def test_read_installed__internet_not_available(self, read_installed: Mock):
|
||||
result = self.controller.read_installed(disk_loader=None, pkg_types=None, internet_available=False)
|
||||
read_installed.assert_called_once()
|
||||
|
||||
self.assertIsNone(result.new)
|
||||
|
||||
expected = [DebianPackage(name='gir1.2-javascriptcoregtk-4.0', version='2.34.1-0distro0.20.04.1', latest_version='2.34.1-0distro0.20.04.1',
|
||||
maintainer='Distro Developers', update=False, installed=True,
|
||||
description='JavaScript engine library from WebKitGTK - GObject introspection data'),
|
||||
DebianPackage(name='xwayland', version='2:1.20.13-1distro1~20.04.2', latest_version='2:1.20.13-1distro1~20.04.2',
|
||||
maintainer='Distro X-SWAT', update=False, installed=True,
|
||||
description='Xwayland X server')
|
||||
]
|
||||
|
||||
self.assertEqual(expected, result.installed)
|
||||
|
||||
@patch(f'{__app_name__}.gems.debian.controller.Aptitude.read_installed')
|
||||
def test_search__must_return_empty_result_when_url(self, read_installed: Mock):
|
||||
words = 'i'
|
||||
res = self.controller.search(words=words, disk_loader=None, limit=-1, is_url=True)
|
||||
read_installed.assert_not_called()
|
||||
self.assertEqual(SearchResult.empty(), res)
|
||||
|
||||
@patch(f'{__app_name__}.gems.debian.controller.Aptitude.search', return_value=iter((
|
||||
DebianPackage(name='xpto', version='1.0', latest_version='1.0', installed=True, update=False, description=''),
|
||||
DebianPackage(name='test', version='1.0', latest_version='1.0', installed=False, update=False, description=''),
|
||||
DebianPackage(name='myapp', version='1.0', latest_version='1.0', installed=True, update=False, description=''),
|
||||
)))
|
||||
def test_search__returned_packages_should_be_associated_with_apps_if_appliable(self, search: Mock):
|
||||
app = DebianApplication(name='myapp', exe_path='myapp', icon_path='myapp',
|
||||
categories=('app',))
|
||||
self.controller._apps_index = {'myapp': app}
|
||||
|
||||
words = 'test'
|
||||
res = self.controller.search(words=words, disk_loader=None, limit=-1, is_url=False)
|
||||
search.assert_called_once_with(words)
|
||||
|
||||
self.assertEqual([DebianPackage(name='xpto', version='1.0', latest_version='1.0', installed=True, update=False, description=''),
|
||||
DebianPackage(name='myapp', version='1.0', latest_version='1.0', installed=True, update=False,
|
||||
description='', app=app)
|
||||
], res.installed)
|
||||
|
||||
self.assertEqual([DebianPackage(name='test', version='1.0', latest_version='1.0', installed=False, update=False, description='')],
|
||||
res.new)
|
||||
Reference in New Issue
Block a user