1
# Copyright 2014 Canonical Ltd. This software is licensed under the
2
# GNU Affero General Public License version 3 (see the file LICENSE).
4
"""Tests for `DownloadProgressForm`."""
6
from __future__ import (
17
from maasserver.forms import DownloadProgressForm
18
from maasserver.testing.factory import factory
19
from maasserver.testing.orm import reload_object
20
from maasserver.testing.testcase import MAASServerTestCase
23
class TestDownloadProgressForm(MAASServerTestCase):
25
def test_updates_instance(self):
26
progress = factory.make_DownloadProgress_incomplete(size=None)
27
new_bytes_downloaded = progress.bytes_downloaded + 1
28
size = progress.bytes_downloaded + 2
29
error = factory.make_string()
31
form = DownloadProgressForm(
34
'bytes_downloaded': new_bytes_downloaded,
38
new_progress = form.save()
40
progress = reload_object(progress)
41
self.assertEqual(progress, new_progress)
42
self.assertEqual(size, progress.size)
43
self.assertEqual(new_bytes_downloaded, progress.bytes_downloaded)
44
self.assertEqual(error, progress.error)
46
def test_rejects_unknown_ongoing_download(self):
47
form = DownloadProgressForm(
48
data={'bytes_downloaded': 1}, instance=None)
50
self.assertFalse(form.is_valid())
52
def test_get_download_returns_ongoing_download(self):
53
progress = factory.make_DownloadProgress_incomplete()
57
DownloadProgressForm.get_download(
58
progress.nodegroup, progress.filename,
59
progress.bytes_downloaded + 1))
61
def test_get_download_recognises_start_of_new_download(self):
62
nodegroup = factory.make_NodeGroup()
63
filename = factory.make_string()
64
progress = DownloadProgressForm.get_download(nodegroup, filename, None)
65
self.assertIsNotNone(progress)
66
self.assertEqual(nodegroup, progress.nodegroup)
67
self.assertEqual(filename, progress.filename)
68
self.assertIsNone(progress.bytes_downloaded)
70
def test_get_download_returns_none_for_unknown_ongoing_download(self):
72
DownloadProgressForm.get_download(
73
factory.make_NodeGroup(), factory.make_string(), 1))