def test_missing_dataset_header(self):
        filepath = os.path.join(dir_path, 'missing_dataset_headers.csv')
        with open(filepath, 'rb') as f:
            idx_file = DatasetIndexingFile(indexing_file=SimpleUploadedFile(
                filepath, f.read()),
                                           uploader=self.user)
            idx_file.save()

            bulk_whitelist(idx_file.id)

        idx_file = DatasetIndexingFile.objects.first()
        self.assertEqual(idx_file.state, idx_file.FAILED)
    def test_idx_file_model_changes_states(self):
        filepath = os.path.join(dir_path, 'test_indexing_file.csv')
        with open(filepath, 'rb') as f:
            idx_file = DatasetIndexingFile(indexing_file=SimpleUploadedFile(
                filepath, f.read()),
                                           uploader=self.user)
            idx_file.save()

            bulk_whitelist(idx_file.id)

        idx_file = DatasetIndexingFile.objects.first()
        self.assertEqual(idx_file.state, idx_file.PROCESSED)
    def test_missing_catalog(self):
        filepath = os.path.join(dir_path, 'test_missing_catalog.csv')
        with open(filepath, 'rb') as f:
            idx_file = DatasetIndexingFile(indexing_file=SimpleUploadedFile(
                filepath, f.read()),
                                           uploader=self.user)
            idx_file.save()

            bulk_whitelist(idx_file.id)

        idx_file = DatasetIndexingFile.objects.first()
        dataset = Dataset.objects.get(catalog__identifier=self.test_catalog,
                                      identifier='1')
        self.assertEqual(idx_file.state, idx_file.PROCESSED)
        self.assertTrue(dataset.indexable)
    def test_dataset_not_in_file_unaffected(self):
        filepath = os.path.join(dir_path, 'test_indexing_file.csv')

        dataset = Dataset.objects.get(catalog__identifier=self.test_catalog,
                                      identifier='0')
        self.assertFalse(dataset.indexable)
        with open(filepath, 'rb') as f:
            idx_file = DatasetIndexingFile(indexing_file=SimpleUploadedFile(
                filepath, f.read()),
                                           uploader=self.user)
            idx_file.save()

            bulk_whitelist(idx_file.id)

        dataset = Dataset.objects.get(catalog__identifier=self.test_catalog,
                                      identifier='0')
        self.assertFalse(dataset.indexable)
    def test_config_csv_view(self):
        filepath = os.path.join(dir_path, 'test_indexing_file.csv')
        with open(filepath, 'rb') as f:
            idx_file = DatasetIndexingFile(indexing_file=SimpleUploadedFile(
                filepath, f.read()),
                                           uploader=self.user)
            idx_file.save()
            bulk_whitelist(idx_file.id)

        response = self.client.get(reverse('admin:config_csv'))
        self.assertEqual(response.status_code, 200)
        content = response.content.decode('utf-8')
        config_csv = csv.reader(io.StringIO(content))
        csv_indexables = [row[1] for row in config_csv][1:]
        model_indexables = list(
            Dataset.objects.filter(indexable=True).values_list("identifier",
                                                               flat=True))
        self.assertListEqual(sorted(csv_indexables), sorted(model_indexables))