def test_fromXmlChangeLog_versions_downloads_href():
    xmlChangeLog = XmlChangeLog()
    version = XmlChangeLogVersionInfo(number='1.0', status='dev', date=None)
    download = XmlDownload('https://example.com/download.zip')
    version.downloads.append(download)
    xmlChangeLog.versions.append(version)

    language = 'en'
    changelog = ChangeLogFactory.fromXmlChangeLog(xmlChangeLog, language)

    assert len(changelog.versions[0].downloads) == 1
    assert changelog.versions[0].downloads[
        0].href == 'https://example.com/download.zip'
    assert changelog.versions[0].downloads[0].requirements.os_list == []
    assert changelog.versions[0].downloads[0].requirements.api_list == []
def test_fromXmlChangeLog_versions_changes():
    xmlChangeLog = XmlChangeLog()
    version = XmlChangeLogVersionInfo(number='1.0', status='dev', date=None)

    changes_en = [XmlChangeItem('Change 1'), XmlChangeItem('Change 2')]
    version.changes.set_for_language('en', changes_en)

    xmlChangeLog.versions.append(version)

    language = 'en'
    changelog = ChangeLogFactory.fromXmlChangeLog(xmlChangeLog, language)

    assert len(changelog.versions[0].changes) == 2
    assert changelog.versions[0].changes[0].description == 'Change 1'
    assert changelog.versions[0].changes[1].description == 'Change 2'
def test_fromXmlChangeLog_versions_invalid_number():
    xmlChangeLog = XmlChangeLog()
    version_1 = XmlChangeLogVersionInfo(number='xxx')
    version_2 = XmlChangeLogVersionInfo(number='1.0', status='dev', date=None)

    xmlChangeLog.versions.append(version_1)
    xmlChangeLog.versions.append(version_2)

    language = ''
    changelog = ChangeLogFactory.fromXmlChangeLog(xmlChangeLog, language)

    assert len(changelog.versions) == 1

    assert changelog.versions[0].version == Version(1, 0, status=StatusSet.DEV)
    assert changelog.versions[0].downloads == []
    assert changelog.versions[0].changes == []
def test_fromXmlChangeLog_versions_downloads_requirements_single():
    xmlChangeLog = XmlChangeLog()
    version = XmlChangeLogVersionInfo(number='1.0', status='dev', date=None)
    requirements = XmlRequirements(['Windows'], [(3, 868)])
    download = XmlDownload('https://example.com/download.zip', requirements)
    version.downloads.append(download)
    xmlChangeLog.versions.append(version)

    language = 'en'
    changelog = ChangeLogFactory.fromXmlChangeLog(xmlChangeLog, language)

    assert changelog.versions[0].downloads[0].requirements.os_list == [
        'Windows'
    ]
    assert changelog.versions[0].downloads[0].requirements.api_list == [(3,
                                                                         868)]
def test_fromXmlChangeLog_versions_simple():
    xmlChangeLog = XmlChangeLog()
    version_1 = XmlChangeLogVersionInfo(number='1.0', status='dev', date=None)
    version_2 = XmlChangeLogVersionInfo(number='2.0', status='beta', date=None)

    xmlChangeLog.versions.append(version_1)
    xmlChangeLog.versions.append(version_2)

    language = ''
    changelog = ChangeLogFactory.fromXmlChangeLog(xmlChangeLog, language)

    assert len(changelog.versions) == 2

    assert changelog.versions[0].version == Version(1, 0, status=StatusSet.DEV)
    assert changelog.versions[0].downloads == []
    assert changelog.versions[0].changes == []

    assert changelog.versions[1].version == Version(2,
                                                    0,
                                                    status=StatusSet.BETA)
    assert changelog.versions[1].downloads == []
    assert changelog.versions[1].changes == []