def test_get_updated_data(self):
        with self.subTest(desc='empty with empty'):
            self.plugin._download_data = {}
            self.assertEqual({}, self.plugin.get_updated_data({}))

        with self.subTest(desc='filled with filled and the same'):
            self.plugin._download_data = self.eg_data
            self.assertEqual({}, self.plugin.get_updated_data(self.eg_data))

        with self.subTest(desc='empty with filled'):
            self.plugin._download_data = self.eg_data
            self.assertEqual(self.eg_data, self.plugin.get_updated_data({}))

        with self.subTest(desc='filled with empty'):
            self.plugin._download_data = {}
            self.assertEqual({}, self.plugin.get_updated_data(self.eg_data))

        with self.subTest(desc='filled with one item more'):
            old_data = {'/IceflowRE/Universal-Downloader/master/README.rst':
                            LinkItem('One', datetime(2001, 1, 1, hour=1, minute=1, second=1))}
            result = {'/IceflowRE/Universal-Downloader/master/no_file_here':
                          LinkItem('Two', datetime(2002, 2, 2, hour=2, minute=2, second=2))}
            self.plugin._download_data = self.eg_data
            self.assertEqual(result, self.plugin.get_updated_data(old_data))

        with self.subTest(desc='one item more with filled'):
            new_data = {'/IceflowRE/Universal-Downloader/master/no_file_here':
                            LinkItem('One', datetime(2001, 1, 1, hour=1, minute=1, second=1))}
            self.plugin._download_data = new_data
            self.assertEqual({}, self.plugin.get_updated_data(self.eg_data))
    def test_update_download_links(self):
        result = {'/IceflowRE/Universal-Downloader/master/README.rst':
                      LinkItem('README.rst', datetime(2000, 1, 1, hour=1, minute=1, second=1)),
                  '/IceflowRE/Universal-Downloader/master/no_file_here':
                      LinkItem('LICENSE', datetime(2002, 2, 2, hour=2, minute=2, second=2))
                  }
        self.plugin.update_download_links()

        self.assertEqual(result, self.plugin.download_data)
 def setUp(self):
     manager.init(Path('./tmp'), Path('UniDown.log'), 'INFO')
     dynamic_data.DISABLE_TQDM = True
     self.plugin = Plugin()
     self.plugin.log.disabled = True
     self.eg_data = {'/IceflowRE/Universal-Downloader/master/README.rst':
                         LinkItem('One', datetime(2001, 1, 1, hour=1, minute=1, second=1)),
                     '/IceflowRE/Universal-Downloader/master/no_file_here':
                         LinkItem('Two', datetime(2002, 2, 2, hour=2, minute=2, second=2))}
    def test_init(self):
        with self.subTest(desc="name empty"):
            with self.assertRaises(ValueError):
                LinkItem("", datetime(1970, 1, 1))

        with self.subTest(desc="name None"):
            with self.assertRaises(ValueError):
                LinkItem(None, datetime(1970, 1, 1))

        with self.subTest(desc="time None"):
            with self.assertRaises(ValueError):
                LinkItem("blub", None)
    def test_check_download(self):
        with self.subTest(desc="empty"):
            data = self.plugin.check_download({}, self.plugin._temp_path)
            self.assertEqual(({}, {}), data)

        with self.subTest(desc="one succeed, one lost"):
            create_test_file(self.plugin._temp_path.joinpath('One'))
            data = self.plugin.check_download(self.eg_data, self.plugin._temp_path)
            succeed = {'/IceflowRE/Universal-Downloader/master/README.rst':
                           LinkItem('One', datetime(2001, 1, 1, hour=1, minute=1, second=1))}
            lost = {'/IceflowRE/Universal-Downloader/master/no_file_here':
                        LinkItem('Two', datetime(2002, 2, 2, hour=2, minute=2, second=2))}
            self.assertEqual((succeed, lost), data)
Example #6
0
 def _create_download_links(self):
     return {
         '/IceflowRE/Universal-Downloader/master/README.rst':
         LinkItem('README.rst',
                  datetime(2000, 1, 1, hour=1, minute=1, second=1)),
         '/IceflowRE/Universal-Downloader/master/no_file_here':
         LinkItem('LICENSE', datetime(2002,
                                      2,
                                      2,
                                      hour=2,
                                      minute=2,
                                      second=2))
     }
 def test_equality(self):
     with self.subTest(desc="different type"):
         self.assertFalse(self.item == "blub")
         self.assertTrue(self.item != "blub")
     with self.subTest(desc="equal"):
         item = LinkItem('blub', datetime(1996, 12, 4))
         self.assertTrue(self.item == item)
         self.assertFalse(self.item != item)
     with self.subTest(desc="unequal"):
         item = LinkItem('whatever', datetime(1996, 12, 4))
         self.assertFalse(self.item == item)
         self.assertTrue(self.item != item)
         item = LinkItem('blub', datetime(2000, 12, 4))
         self.assertFalse(self.item == item)
         self.assertTrue(self.item != item)
    def from_protobuf(cls, proto: SaveStateProto) -> 'SaveState':
        """
        Constructor from protobuf. Can raise ValueErrors from called from_protobuf() parsers.

        :param proto: protobuf structure
        :type proto: ~unidown.plugin.protobuf.save_state_pb2.SaveStateProto
        :return: the SaveState
        :rtype: ~unidown.plugin.save_state.SaveState
        :raises ValueError: version of SaveState does not exist or is empty inside the protobuf
        :raises ~packaging.version.InvalidVersion: version is not PEP440 conform
        """
        data_dict = {}
        for key, link_item in proto.data.items():
            data_dict[key] = LinkItem.from_protobuf(link_item)
        if proto.version == "":
            raise ValueError("version of SaveState does not exist or is empty inside the protobuf.")
        try:
            version = Version(proto.version)
        except InvalidVersion:
            raise InvalidVersion('Plugin version is not PEP440 conform: {version}'.format(version=proto.version))
        return cls(version, PluginInfo.from_protobuf(proto.plugin_info), Timestamp.ToDatetime(proto.last_update),
                   data_dict)
 def test_equality(self):
     with self.subTest(desc="different type"):
         self.assertFalse(self.save == "blub")
         self.assertTrue(self.save != "blub")
     with self.subTest(desc="equal"):
         save = SaveState(Version('1'),
                          PluginInfo('Blub', '1.0.0', 'example.com'),
                          datetime(1996, 12, 4),
                          {'item': LinkItem('blub', datetime(1996, 12, 4))})
         self.assertTrue(self.save == save)
         self.assertFalse(self.save != save)
     with self.subTest(desc="unequal"):
         save = SaveState(Version('2'),
                          PluginInfo('Blub', '1.0.0', 'example.com'),
                          datetime(1996, 12, 4),
                          {'item': LinkItem('blub', datetime(1996, 12, 4))})
         self.assertFalse(self.save == save)
         self.assertTrue(self.save != save)
         save = SaveState(Version('1'),
                          PluginInfo('whatever', '1.0.0', 'example.com'),
                          datetime(1996, 12, 4),
                          {'item': LinkItem('blub', datetime(1996, 12, 4))})
         self.assertFalse(self.save == save)
         self.assertTrue(self.save != save)
         save = SaveState(Version('1'),
                          PluginInfo('Blub', '1.0.0', 'example.com'),
                          datetime(2000, 12, 4),
                          {'item': LinkItem('blub', datetime(1996, 12, 4))})
         self.assertFalse(self.save == save)
         self.assertTrue(self.save != save)
         save = SaveState(
             Version('1'), PluginInfo('Blub', '1.0.0', 'example.com'),
             datetime(1996, 12, 4),
             {'item2': LinkItem('blub', datetime(1996, 12, 4))})
         self.assertFalse(self.save == save)
         self.assertTrue(self.save != save)
         save = SaveState(Version('1'),
                          PluginInfo('Blub', '1.0.0', 'example.com'),
                          datetime(1996, 12, 4),
                          {'item': LinkItem('blub', datetime(2000, 12, 4))})
         self.assertFalse(self.save == save)
         self.assertTrue(self.save != save)
 def setUp(self):
     self.save = SaveState(
         Version('1'), PluginInfo('Blub', '1.0.0', 'example.com'),
         datetime(1996, 12,
                  4), {'item': LinkItem('blub', datetime(1996, 12, 4))})
 def setUp(self):
     self.item = LinkItem('blub', datetime(1996, 12, 4))
 def test_from_protobuf(self):
     proto = LinkItemProto()
     proto.name = ""
     with self.assertRaises(ValueError):
         LinkItem.from_protobuf(proto)