class HardDriveSourceTestCase(unittest.TestCase): def setUp(self): self.module = HardDriveSourceModule() def type_test(self): """Hard drive source module has a correct type.""" self.assertEqual(SourceType.HDD, self.module.type) def set_up_with_tasks_test(self): """Hard drive source set up task type and amount.""" task_classes = [SetUpHardDriveSourceTask] # task will not be public so it won't be published tasks = self.module.set_up_with_tasks() # Check the number of the tasks task_number = len(task_classes) self.assertEqual(task_number, len(tasks)) for i in range(task_number): self.assertIsInstance(tasks[i], task_classes[i]) @patch("os.path.ismount") def ready_state_test(self, ismount): """Hard drive source ready state for set up.""" ismount.return_value = False self.assertEqual(self.module.get_state(), SourceState.UNREADY) ismount.assert_called_once_with(self.module._device_mount) ismount.reset_mock() ismount.return_value = True task = self.module.set_up_with_tasks()[0] task.get_result = Mock(return_value=("/my/path", False)) task.succeeded_signal.emit() self.assertEqual(self.module.get_state(), SourceState.READY) ismount.assert_called_once_with(self.module._device_mount) def return_handler_test(self): """Hard drive source setup result propagates back.""" task = _create_setup_task() # Test only the returning. To do that, fake what the magic in start() does. # Do not run() the task at all, less mocking needed that way. task._set_result((iso_mount_location, True)) self.module._handle_setup_task_result(task) self.assertEqual(iso_mount_location, self.module.install_tree_path) self.assertEqual(True, self.module._uses_iso_mount)
class HardDriveSourceTestCase(unittest.TestCase): def setUp(self): self.module = HardDriveSourceModule() def test_type(self): """Hard drive source module has a correct type.""" assert SourceType.HDD == self.module.type def test_network_required(self): """Test the property network_required.""" assert self.module.network_required is False def test_set_up_with_tasks(self): """Hard drive source set up task type and amount.""" task_classes = [SetUpHardDriveSourceTask] # task will not be public so it won't be published tasks = self.module.set_up_with_tasks() # Check the number of the tasks task_number = len(task_classes) assert task_number == len(tasks) for i in range(task_number): assert isinstance(tasks[i], task_classes[i]) @patch("os.path.ismount") def test_ready_state(self, ismount): """Hard drive source ready state for set up.""" ismount.return_value = False assert self.module.get_state() == SourceState.UNREADY ismount.assert_called_once_with(self.module._device_mount) ismount.reset_mock() ismount.return_value = True task = self.module.set_up_with_tasks()[0] task.get_result = Mock( return_value=SetupHardDriveResult("/my/path", "")) task.succeeded_signal.emit() assert self.module.get_state() == SourceState.READY ismount.assert_called_once_with(self.module._device_mount) def test_return_handler(self): """Hard drive source setup result propagates back.""" task = self.module.set_up_with_tasks()[0] task.get_result = Mock(return_value=SetupHardDriveResult( iso_mount_location, "iso_name.iso")) task.succeeded_signal.emit() assert self.module.install_tree_path == iso_mount_location assert self.module._iso_name == "iso_name.iso" def test_return_handler_without_iso(self): """Hard drive source setup result propagates back when no ISO is involved. This is happening when installation tree is used instead of ISO image. """ task = self.module.set_up_with_tasks()[0] task.get_result = Mock( return_value=SetupHardDriveResult(iso_mount_location, "")) task.succeeded_signal.emit() assert self.module.install_tree_path == iso_mount_location assert self.module._iso_name == "" def test_repr(self): self.module.set_device("device") self.module.set_directory("directory") self.module._install_tree_path = "install-tree-path" assert repr(self.module) == \ "Source(type='HDD', partition='device', directory='directory')"