from django.core.management import call_command from django.test import TestCase from django.utils.six import StringIO from django.utils.six.moves import range from misago.categories.models import Category from misago.threads import testutils from misago.threads.management.commands import synchronizethreads class SynchronizeThreadsTests(TestCase): def test_no_threads_sync(self): """command works when there are no threads""" command = synchronizethreads.Command() out = StringIO() call_command(command, stdout=out) command_output = out.getvalue().strip() self.assertEqual(command_output, "No threads were found") def test_threads_sync(self): """command synchronizes threads""" category = Category.objects.all_categories()[:1][0] threads = [testutils.post_thread(category) for _ in range(10)] for i, thread in enumerate(threads): [testutils.reply_thread(thread) for _ in range(i)] thread.replies = 0 thread.save() command = synchronizethreads.Command() out = StringIO() call_command(command, stdout=out) for i, thread in enumerate(threads): db_thread = category.thread_set.get(id=thread.id) self.assertEqual(db_thread.replies, i) command_output = out.getvalue().splitlines()[-1].strip() self.assertEqual(command_output, "Synchronized 10 threads")