mirror of
				https://github.com/arcan1s/ahriman.git
				synced 2025-11-04 07:43:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from unittest.mock import MagicMock
 | 
						|
 | 
						|
from ahriman.models.aur_package import AURPackage
 | 
						|
from ahriman.models.package_description import PackageDescription
 | 
						|
 | 
						|
 | 
						|
def test_post_init() -> None:
 | 
						|
    """
 | 
						|
    must trim versions and descriptions from dependencies list
 | 
						|
    """
 | 
						|
    assert PackageDescription(depends=["a=1"], make_depends=["b>=3"], opt_depends=["c: a description"]) == \
 | 
						|
        PackageDescription(depends=["a"], make_depends=["b"], opt_depends=["c"])
 | 
						|
 | 
						|
 | 
						|
def test_filepath(package_description_ahriman: PackageDescription) -> None:
 | 
						|
    """
 | 
						|
    must generate correct filepath if set
 | 
						|
    """
 | 
						|
    assert package_description_ahriman.filepath is not None
 | 
						|
    assert package_description_ahriman.filepath.name == package_description_ahriman.filename
 | 
						|
 | 
						|
 | 
						|
def test_filepath_empty(package_description_ahriman: PackageDescription) -> None:
 | 
						|
    """
 | 
						|
    must return None for missing filename
 | 
						|
    """
 | 
						|
    package_description_ahriman.filename = None
 | 
						|
    assert package_description_ahriman.filepath is None
 | 
						|
 | 
						|
 | 
						|
def test_from_aur(package_description_ahriman: PackageDescription, aur_package_ahriman: AURPackage) -> None:
 | 
						|
    """
 | 
						|
    must construct package description from AUR descriptor
 | 
						|
    """
 | 
						|
    actual = PackageDescription.from_aur(aur_package_ahriman)
 | 
						|
    # missing attributes
 | 
						|
    actual.architecture = package_description_ahriman.architecture
 | 
						|
    actual.archive_size = package_description_ahriman.archive_size
 | 
						|
    actual.build_date = package_description_ahriman.build_date
 | 
						|
    actual.filename = package_description_ahriman.filename
 | 
						|
    actual.installed_size = package_description_ahriman.installed_size
 | 
						|
 | 
						|
 | 
						|
def test_from_json(package_description_ahriman: PackageDescription) -> None:
 | 
						|
    """
 | 
						|
    must construct description from json object
 | 
						|
    """
 | 
						|
    assert PackageDescription.from_json(package_description_ahriman.view()) == package_description_ahriman
 | 
						|
 | 
						|
 | 
						|
def test_from_json_with_unknown_fields(package_description_ahriman: PackageDescription) -> None:
 | 
						|
    """
 | 
						|
    must construct description from json object containing unknown fields
 | 
						|
    """
 | 
						|
    dump = package_description_ahriman.view()
 | 
						|
    dump.update(unknown_field="value")
 | 
						|
    assert PackageDescription.from_json(dump) == package_description_ahriman
 | 
						|
 | 
						|
 | 
						|
def test_from_package(package_description_ahriman: PackageDescription,
 | 
						|
                      pyalpm_package_description_ahriman: MagicMock) -> None:
 | 
						|
    """
 | 
						|
    must construct description from package object
 | 
						|
    """
 | 
						|
    package_description = PackageDescription.from_package(pyalpm_package_description_ahriman,
 | 
						|
                                                          package_description_ahriman.filepath)
 | 
						|
    assert package_description_ahriman == package_description
 | 
						|
 | 
						|
 | 
						|
def test_from_json_view(package_description_ahriman: PackageDescription) -> None:
 | 
						|
    """
 | 
						|
    must generate same description from json view
 | 
						|
    """
 | 
						|
    assert PackageDescription.from_json(package_description_ahriman.view()) == package_description_ahriman
 |