Exemplo n.º 1
0
 def setUp(self):
     self.dir_layout = DirectoryLayout.objects.create(
         name="foo",
         description="bar",
         banner_file=SimpleUploadedFile("sample_file",
                                        "File Contents".encode()))
     self.coverages = Coverage.objects.bulk_create([
         Coverage(name="cov1", description="desc cov1"),
         Coverage(name="cov2", description="desc cov2"),
         Coverage(name="cov3", description="desc cov3"),
     ])
     self.creators = Creator.objects.bulk_create([
         Creator(name="Creator 1", description="desc Creator 1"),
         Creator(name="Creator 2", description="desc Creator 2"),
         Creator(name="Creator 3", description="desc Creator 3"),
     ])
     self.subjects = Subject.objects.bulk_create([
         Subject(name="subject 1", description="desc subject 1"),
         Subject(name="subject 2", description="desc subject 2"),
         Subject(name="subject 3", description="desc subject 3"),
     ])
     self.keywords = Keyword.objects.bulk_create([
         Keyword(name="keyword 1", description="desc keyword 1"),
         Keyword(name="keyword 2", description="desc keyword 2"),
         Keyword(name="keyword 3", description="desc keyword 3"),
     ])
     self.workareas = Workarea.objects.bulk_create([
         Workarea(name="workarea 1", description="desc workarea 1"),
         Workarea(name="workarea 2", description="desc workarea 2"),
         Workarea(name="workarea 3", description="desc workarea 3"),
     ])
     self.languages = Language.objects.bulk_create([
         Language(name="language 1", description="desc language 1"),
         Language(name="language 2", description="desc language 2"),
         Language(name="language 3", description="desc language 3"),
     ])
     self.catalogers = Cataloger.objects.bulk_create([
         Cataloger(name="cataloger 1", description="desc cataloger 1"),
         Cataloger(name="cataloger 2", description="desc cataloger 2"),
         Cataloger(name="cataloger 3", description="desc cataloger 3"),
     ])
     content_1 = Content(name="content file 1",
                         description="content file 1 desc",
                         content_file=SimpleUploadedFile(
                             "file_1", "Contents of file 1".encode()),
                         updated_time=date.today())
     content_1.content_file_uploaded = True
     content_1.save()
     content_2 = Content(name="content file 2",
                         description="content file 2 desc",
                         content_file=SimpleUploadedFile(
                             "file_2", "Contents of file 2".encode()),
                         updated_time=date.today())
     content_2.content_file_uploaded = True
     content_2.save()
     self.contents = [content_1, content_2]
Exemplo n.º 2
0
    def test_last_uploaded_time_on_create(self):
        """
        Test whether the last uploaded time is updated correctly, on creating a new model instance.
        """
        currtime = timezone.now()
        updated_time = currtime - timedelta(days=5)
        values = {
            "name":
            "Content 1",
            "description":
            "Content's Description",
            "content_file":
            SimpleUploadedFile(
                "uploaded_file_name",
                "This will be the contents of the uploaded file.".encode()),
            "updated_time":
            updated_time,
        }
        content = Content(**values)
        content.content_file_uploaded = True

        mock_timezone_now = MagicMock(return_value=currtime)

        with patch('django.utils.timezone.now', mock_timezone_now):
            content.save()
        content.content_file.close()

        saved_content = Content.objects.first()
        self.assertEqual(mock_timezone_now.call_count, 1)
        self.assertEqual(saved_content.last_uploaded_time, currtime)
Exemplo n.º 3
0
    def test_duplicate_file_on_create(self):
        """
        Tests whether a DuplicateContentFileException is raised, when a duplicate file is uploaded,
        when a new model instance is created
        """
        first_value = {
            "name":
            "Content 1",
            "description":
            "Content's Description",
            "content_file":
            SimpleUploadedFile(
                "uploaded_file_name",
                "This will be the contents of the uploaded file.".encode()),
            "updated_time":
            timezone.now()
        }
        content1 = Content(**first_value)
        content1.content_file_uploaded = True
        content1.save()
        content1.content_file.close()

        second_value = {
            "name":
            "Content 2",
            "description":
            "Content's Description",
            "content_file":
            SimpleUploadedFile(
                "uploaded_file_name_2",
                "This will be the contents of the uploaded file.".encode()),
            "updated_time":
            timezone.now()
        }
        content2 = Content(**second_value)
        content2.content_file_uploaded = True
        with self.assertRaises(DuplicateContentFileException) as cm:
            content2.save()
        self.assertEqual(cm.exception.content.pk, content1.pk)
        content2.content_file.close()
Exemplo n.º 4
0
    def test_last_uploaded_time_on_update_without_file(self):
        """
        Tests whether the last uploaded time is not updated, when there is no file uploaded on update.
        """
        currtime = timezone.now()
        first_upload_time = currtime - timedelta(days=4)
        updated_time = currtime - timedelta(days=5)
        values = {
            "name":
            "Content 1",
            "description":
            "Content's Description",
            "content_file":
            SimpleUploadedFile(
                "uploaded_file_name",
                "This will be the contents of the uploaded file.".encode()),
            "updated_time":
            updated_time,
        }
        content = Content(**values)
        # marks that the file was uploaded during the creation process.
        content.content_file_uploaded = True

        mock_timezone_now = MagicMock(return_value=first_upload_time)

        with patch('django.utils.timezone.now', mock_timezone_now):
            content.save()
        content.content_file.close()

        # mark that there is no file uploaded during the update process
        content.content_file_uploaded = False
        new_upload_time = currtime - timedelta(days=2)
        mock_timezone_now.return_value = new_upload_time
        with patch('django.utils.timezone.now', mock_timezone_now):
            content.save()
        content.content_file.close()

        self.assertEqual(content.last_uploaded_time, first_upload_time)
Exemplo n.º 5
0
 def test_delete_content(self):
     """
     Tests whether the file is deleted after the model instance is deleted
     """
     values = {
         "name":
         "Content 1",
         "description":
         "Content's Description",
         "content_file":
         SimpleUploadedFile(
             "uploaded_file_name",
             "This will be the contents of the uploaded file.".encode()),
         "updated_time":
         timezone.now()
     }
     content1 = Content(**values)
     content1.content_file_uploaded = True
     content1.save()
     self.assertTrue(os.path.exists(content1.content_file.path))
     content1.delete()
     self.assertFalse(os.path.exists(content1.content_file.path))
Exemplo n.º 6
0
    def setUp(self):
        self.dir_layout = DirectoryLayout.objects.create(
            name="foo",
            description="bar",
            banner_file=SimpleUploadedFile("sample_file",
                                           "File Contents".encode()))
        self.coverages = Coverage.objects.bulk_create([
            Coverage(name="cov1", description="desc cov1"),
            Coverage(name="cov2", description="desc cov2"),
            Coverage(name="cov3", description="desc cov3"),
        ])
        self.creators = Creator.objects.bulk_create([
            Creator(name="Creator 1", description="desc Creator 1"),
            Creator(name="Creator 2", description="desc Creator 2"),
            Creator(name="Creator 3", description="desc Creator 3"),
        ])
        self.subjects = Subject.objects.bulk_create([
            Subject(name="subject 1", description="desc subject 1"),
            Subject(name="subject 2", description="desc subject 2"),
            Subject(name="subject 3", description="desc subject 3"),
        ])
        self.keywords = Keyword.objects.bulk_create([
            Keyword(name="keyword 1", description="desc keyword 1"),
            Keyword(name="keyword 2", description="desc keyword 2"),
            Keyword(name="keyword 3", description="desc keyword 3"),
        ])
        self.workareas = Workarea.objects.bulk_create([
            Workarea(name="workarea 1", description="desc workarea 1"),
            Workarea(name="workarea 2", description="desc workarea 2"),
            Workarea(name="workarea 3", description="desc workarea 3"),
        ])
        self.languages = Language.objects.bulk_create([
            Language(name="language 1", description="desc language 1"),
            Language(name="language 2", description="desc language 2"),
            Language(name="language 3", description="desc language 3"),
        ])
        self.catalogers = Cataloger.objects.bulk_create([
            Cataloger(name="cataloger 1", description="desc cataloger 1"),
            Cataloger(name="cataloger 2", description="desc cataloger 2"),
            Cataloger(name="cataloger 3", description="desc cataloger 3"),
        ])
        content_1 = Content(name="content file 1",
                            description="content file 1 desc",
                            content_file=SimpleUploadedFile(
                                "file_1", "Contents of file 1".encode()),
                            updated_time=date.today())
        content_1.content_file_uploaded = True
        content_1.save()
        content_2 = Content(name="content file 2",
                            description="content file 2 desc",
                            content_file=SimpleUploadedFile(
                                "file_2", "Contents of file 2".encode()),
                            updated_time=date.today())
        content_2.content_file_uploaded = True
        content_2.save()
        self.contents = [content_1, content_2]

        dir_1 = Directory(
            name="parent dir 1",
            dir_layout=self.dir_layout,
            banner_file=SimpleUploadedFile(
                "top_dir1_banner_file", "dir 1 banner file content".encode()),
            creators_need_all=True,
            coverages_need_all=True,
            subjects_need_all=True,
            keywords_need_all=True,
            workareas_need_all=True,
            languages_need_all=True,
            catalogers_need_all=True,
        )
        dir_1.save()
        dir_1.individual_files.set([content_1])
        dir_1.coverages.set([self.coverages[0]])
        dir_1.creators.set([self.creators[0]])
        dir_1.subjects.set([self.subjects[0]])
        dir_1.keywords.set([self.keywords[0]])
        dir_1.workareas.set([self.workareas[0]])
        dir_1.languages.set([self.languages[0]])
        dir_1.catalogers.set([self.catalogers[0]])
        dir_2 = Directory(
            name="parent dir 2",
            dir_layout=self.dir_layout,
            banner_file=SimpleUploadedFile(
                "top_dir2_banner_file", "dir 2 banner file content".encode()),
            creators_need_all=True,
            coverages_need_all=True,
            subjects_need_all=False,
            keywords_need_all=True,
            workareas_need_all=False,
            languages_need_all=True,
            catalogers_need_all=True,
        )
        dir_2.save()
        dir_2.individual_files.set([content_1, content_2])
        dir_2.coverages.set([self.coverages[1]])
        dir_2.creators.set([self.creators[1]])
        dir_2.subjects.set([self.subjects[1]])
        dir_2.keywords.set([self.keywords[1]])
        dir_2.workareas.set([self.workareas[1]])
        dir_2.languages.set([self.languages[1]])
        dir_2.catalogers.set([self.catalogers[0]])
        dir_3 = Directory(
            name="child dir",
            dir_layout=self.dir_layout,
            banner_file=SimpleUploadedFile(
                "child_banner_file", "dir 3 banner file content".encode()),
            creators_need_all=True,
            coverages_need_all=False,
            subjects_need_all=True,
            keywords_need_all=True,
            workareas_need_all=True,
            languages_need_all=False,
            catalogers_need_all=False,
        )
        dir_3.save()
        dir_3.individual_files.set([content_2])
        dir_3.coverages.set([self.coverages[0], self.coverages[1]])
        dir_3.creators.set([self.creators[0], self.creators[1]])
        dir_3.subjects.set([self.subjects[0], self.subjects[1]])
        dir_3.keywords.set([self.keywords[0], self.keywords[1]])
        dir_3.workareas.set([self.workareas[0], self.workareas[1]])
        dir_3.languages.set([self.languages[0], self.languages[1]])
        dir_3.catalogers.set([self.catalogers[0], self.catalogers[1]])

        dir_4 = Directory(
            name="inner child dir",
            dir_layout=self.dir_layout,
            banner_file=SimpleUploadedFile(
                "inner_child_banner_file",
                "dir 4 banner file content".encode()),
            creators_need_all=False,
            coverages_need_all=True,
            subjects_need_all=True,
            keywords_need_all=False,
            workareas_need_all=False,
            languages_need_all=False,
            catalogers_need_all=True,
        )
        dir_4.save()
        self.directories = [dir_1, dir_2, dir_3, dir_4]