109 lines
4.0 KiB
Python
109 lines
4.0 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
from django.contrib.auth.models import User
|
|
from django.core import management
|
|
from django.utils.timezone import localtime, now
|
|
|
|
from docbow_project.docbow.models import Document, DeletedDocument
|
|
|
|
from utils import assert_can_see_doc, send_file
|
|
|
|
|
|
def test_forward_docs(app, users, settings, filetypes):
|
|
sender = User.objects.get(username='user-1')
|
|
recipient = User.objects.get(username='user-2')
|
|
new_user = User.objects.get(username='user-3')
|
|
|
|
send_file(app, settings, sender, recipient)
|
|
send_file(app, settings, sender, recipient)
|
|
|
|
doc_ids = [doc.pk for doc in Document.objects.filter(sender=sender)]
|
|
assert len(doc_ids) == 2
|
|
management.call_command('forward-docs', '%s' % recipient.pk, '%s' % new_user.pk)
|
|
assert Document.objects.filter(sender=sender).count() == 4
|
|
for doc in Document.objects.filter(sender=sender).exclude(pk__in=doc_ids):
|
|
assert_can_see_doc(app, doc, new_user)
|
|
|
|
|
|
def test_forward_docs_date_filter(app, users, settings, filetypes):
|
|
sender = User.objects.get(username='user-1')
|
|
recipient = User.objects.get(username='user-2')
|
|
new_user = User.objects.get(username='user-3')
|
|
|
|
send_file(app, settings, sender, recipient)
|
|
doc1 = Document.objects.get(sender=sender)
|
|
doc1.date = localtime(now()) - timedelta(days=30)
|
|
doc1.save()
|
|
|
|
send_file(app, settings, sender, recipient)
|
|
doc2 = Document.objects.filter(sender=sender).exclude(pk=doc1.pk).first()
|
|
doc2.date = localtime(now()) + timedelta(days=30)
|
|
doc2.save()
|
|
|
|
send_file(app, settings, sender, recipient)
|
|
doc3 = Document.objects.filter(sender=sender).exclude(pk__in=[doc1.pk, doc2.pk]).first()
|
|
|
|
assert Document.objects.filter(sender=sender).count() == 3
|
|
management.call_command(
|
|
'forward-docs',
|
|
'%s' % recipient.pk,
|
|
'%s' % new_user.pk,
|
|
startdate=(localtime(now()) - timedelta(days=20)),
|
|
enddate=(localtime(now()) + timedelta(days=20)),
|
|
)
|
|
|
|
assert Document.objects.filter(sender=sender).count() == 4
|
|
doc = Document.objects.filter(sender=sender).exclude(pk__in=[doc1.pk, doc2.pk, doc3.pk]).first()
|
|
assert_can_see_doc(app, doc, new_user)
|
|
|
|
|
|
def test_forward_docs_exclude_already_received_docs(app, users, settings, filetypes):
|
|
sender = User.objects.get(username='user-1')
|
|
recipient = User.objects.get(username='user-2')
|
|
new_user = User.objects.get(username='user-3')
|
|
send_file(app, settings, sender, [recipient, new_user])
|
|
assert Document.objects.filter(sender=sender).count() == 1
|
|
|
|
management.call_command('forward-docs', '%s' % recipient.pk, '%s' % new_user.pk)
|
|
# Nothing done
|
|
assert Document.objects.filter(sender=sender).count() == 1
|
|
|
|
|
|
def test_empty_trash(app, users, settings, filetypes):
|
|
settings.TRASH_DURATION = 1
|
|
sender = User.objects.get(username='user-1')
|
|
recipient = User.objects.get(username='user-2')
|
|
send_file(app, settings, sender, recipient)
|
|
doc = Document.objects.get()
|
|
assert DeletedDocument.objects.count() == 0
|
|
|
|
management.call_command('empty-trash')
|
|
# Nothing done
|
|
assert DeletedDocument.objects.count() == 0
|
|
|
|
deleted_doc = DeletedDocument.objects.create(document=doc, user=recipient)
|
|
assert deleted_doc.soft_delete is False
|
|
assert deleted_doc.soft_delete_date is None
|
|
management.call_command('empty-trash')
|
|
deleted_doc.refresh_from_db()
|
|
assert deleted_doc.soft_delete is False
|
|
assert deleted_doc.soft_delete_date is None
|
|
|
|
deleted_doc.soft_delete = True
|
|
now_date = now()
|
|
deleted_doc.soft_delete_date = now_date
|
|
deleted_doc.save()
|
|
management.call_command('empty-trash')
|
|
deleted_doc.refresh_from_db()
|
|
assert deleted_doc.soft_delete is True
|
|
assert deleted_doc.soft_delete_date == now_date
|
|
|
|
days = settings.TRASH_DURATION + 1
|
|
past_obj = now() - timedelta(days=days)
|
|
deleted_doc.soft_delete_date = past_obj
|
|
deleted_doc.save()
|
|
management.call_command('empty-trash')
|
|
deleted_doc.refresh_from_db()
|
|
assert deleted_doc.soft_delete is False
|
|
assert deleted_doc.soft_delete_date == past_obj
|