deluge/deluge/tests/test_torrentview.py
Calum Lind 01fafd4fe0 [GTK3] Change module structure from ui/gtkui to ui/gtk3
This moves the directory structure so that there is no conflict with the
old gtk2 UI. Also changes the conf and state files being loaded.
2018-11-02 08:45:39 +00:00

285 lines
8.6 KiB
Python

# -*- coding: utf-8 -*-
#
# Copyright (C) 2014 Bro <bro.development@gmail.com>
# Copyright (C) 2014 Calum Lind <calumlind@gmail.com>
#
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
# the additional special exception to link portions of this program with the OpenSSL library.
# See LICENSE for more details.
#
from __future__ import unicode_literals
import pytest
from twisted.trial import unittest
import deluge.component as component
from deluge.configmanager import ConfigManager
from deluge.ui.translations_util import setup_translations
from . import common
from .basetest import BaseTestCase
# Allow running other tests without GTKUI dependencies available
try:
from gobject import TYPE_UINT64
except ImportError:
libs_available = False
TYPE_UINT64 = 'Whatever'
else:
libs_available = True
# pylint: disable=ungrouped-imports
from deluge.ui.gtkui.gtkui import DEFAULT_PREFS
from deluge.ui.gtkui.mainwindow import MainWindow
from deluge.ui.gtkui.menubar import MenuBar
from deluge.ui.gtkui.torrentdetails import TorrentDetails
from deluge.ui.gtkui.torrentview import TorrentView
setup_translations()
@pytest.mark.gtkui
class TorrentviewTestCase(BaseTestCase):
default_column_index = [
'filter',
'torrent_id',
'dirty',
'#',
'Name',
'Size',
'Downloaded',
'Uploaded',
'Remaining',
'Progress',
'Seeds',
'Peers',
'Seeds:Peers',
'Down Speed',
'Up Speed',
'Down Limit',
'Up Limit',
'ETA',
'Ratio',
'Avail',
'Added',
'Completed',
'Complete Seen',
'Tracker',
'Download Folder',
'Owner',
'Shared',
]
default_liststore_columns = [
bool,
str,
bool,
int,
str,
str, # Name
TYPE_UINT64,
TYPE_UINT64,
TYPE_UINT64,
TYPE_UINT64,
float,
str, # Progress
int,
int,
int,
int,
float, # Seeds, Peers
int,
int,
float,
float,
int,
float,
float, # ETA, Ratio, Avail
int,
int,
int,
str,
str, # Tracker
str,
str,
bool,
] # shared
def set_up(self):
if libs_available is False:
raise unittest.SkipTest('GTKUI dependencies not available')
common.set_tmp_config_dir()
# MainWindow loads this config file, so lets make sure it contains the defaults
ConfigManager('gtk3ui.conf', defaults=DEFAULT_PREFS)
self.mainwindow = MainWindow()
self.torrentview = TorrentView()
self.torrentdetails = TorrentDetails()
self.menubar = MenuBar()
def tear_down(self):
return component.shutdown()
def test_torrentview_columns(self):
self.assertEqual(
self.torrentview.column_index, TorrentviewTestCase.default_column_index
)
self.assertEqual(
self.torrentview.liststore_columns,
TorrentviewTestCase.default_liststore_columns,
)
self.assertEqual(
self.torrentview.columns['Download Folder'].column_indices, [29]
)
def test_add_column(self):
# Add a text column
test_col = 'Test column'
self.torrentview.add_text_column(test_col, status_field=['label'])
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns) + 1,
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index) + 1,
)
self.assertEqual(self.torrentview.column_index[-1], test_col)
self.assertEqual(self.torrentview.columns[test_col].column_indices, [32])
def test_add_columns(self):
# Add a text column
test_col = 'Test column'
self.torrentview.add_text_column(test_col, status_field=['label'])
# Add a second text column
test_col2 = 'Test column2'
self.torrentview.add_text_column(test_col2, status_field=['label2'])
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns) + 2,
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index) + 2,
)
# test_col
self.assertEqual(self.torrentview.column_index[-2], test_col)
self.assertEqual(self.torrentview.columns[test_col].column_indices, [32])
# test_col2
self.assertEqual(self.torrentview.column_index[-1], test_col2)
self.assertEqual(self.torrentview.columns[test_col2].column_indices, [33])
def test_remove_column(self):
# Add and remove text column
test_col = 'Test column'
self.torrentview.add_text_column(test_col, status_field=['label'])
self.torrentview.remove_column(test_col)
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns),
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index),
)
self.assertEqual(
self.torrentview.column_index[-1],
TorrentviewTestCase.default_column_index[-1],
)
self.assertEqual(
self.torrentview.columns[
TorrentviewTestCase.default_column_index[-1]
].column_indices,
[31],
)
def test_remove_columns(self):
# Add two columns
test_col = 'Test column'
self.torrentview.add_text_column(test_col, status_field=['label'])
test_col2 = 'Test column2'
self.torrentview.add_text_column(test_col2, status_field=['label2'])
# Remove test_col
self.torrentview.remove_column(test_col)
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns) + 1,
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index) + 1,
)
self.assertEqual(self.torrentview.column_index[-1], test_col2)
self.assertEqual(self.torrentview.columns[test_col2].column_indices, [32])
# Remove test_col2
self.torrentview.remove_column(test_col2)
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns),
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index),
)
self.assertEqual(
self.torrentview.column_index[-1],
TorrentviewTestCase.default_column_index[-1],
)
self.assertEqual(
self.torrentview.columns[
TorrentviewTestCase.default_column_index[-1]
].column_indices,
[31],
)
def test_add_remove_column_multiple_types(self):
# Add a column with multiple column types
test_col3 = 'Test column3'
self.torrentview.add_progress_column(
test_col3, status_field=['progress', 'label3'], col_types=[float, str]
)
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns) + 2,
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index) + 1,
)
self.assertEqual(self.torrentview.column_index[-1], test_col3)
self.assertEqual(self.torrentview.columns[test_col3].column_indices, [32, 33])
# Remove multiple column-types column
self.torrentview.remove_column(test_col3)
self.assertEqual(
len(self.torrentview.liststore_columns),
len(TorrentviewTestCase.default_liststore_columns),
)
self.assertEqual(
len(self.torrentview.column_index),
len(TorrentviewTestCase.default_column_index),
)
self.assertEqual(
self.torrentview.column_index[-1],
TorrentviewTestCase.default_column_index[-1],
)
self.assertEqual(
self.torrentview.columns[
TorrentviewTestCase.default_column_index[-1]
].column_indices,
[31],
)