Exemple #1
0
 def test_first_step_validate_line_columns_nok(self):
     """Ensure that every lines have the same number of columns"""
     request = self.layer["request"]
     csv = StringIO()
     lines = [
         ["", "key1", "Key 1"],
         ["key1", "key1.1"],
         ["key1.1", "key1.1.1", "Key 1.1.1", "foo"],
     ]
     for line in lines:
         csv.write(";".join(line) + "\n")
     csv.seek(0)
     source = FileUpload(
         type(
             "obj",
             (object, ),
             {
                 "file": csv,
                 "filename": "foo.csv",
                 "headers": "text/csv"
             },
         )())
     request.form = {
         "form.buttons.continue": u"continuer",
         "form.widgets.separator": [u";"],
         "form.widgets.separator-empty-marker": u"1",
         "form.widgets.source": source,
         "form.widgets.has_header": u"False",
     }
     form = importform.ImportFormFirstStep(self.container, request)
     form.update()
     data, errors = form.extractData()
     self.assertEqual(1, len(errors))
     self.assertTrue("Lines 2, 3" in translate(errors[0].error.message))
Exemple #2
0
 def test_first_step_validate_csv_encoding_nok(self):
     """Ensure that we can decode csv file"""
     request = self.layer["request"]
     csv = StringIO()
     lines = [
         [u"猫", u"èè", u"ùù"],
         ["", "key1", "Key 1"],
         [u"猫", u"ààà", u"ééé"],
     ]
     for line in lines:
         csv.write(";".join(line).encode("utf-16") + "\n")
     csv.seek(0)
     source = FileUpload(
         type(
             "obj",
             (object, ),
             {
                 "file": csv,
                 "filename": "foo.csv",
                 "headers": "text/csv"
             },
         )())
     request.form = {
         "form.buttons.continue": u"continuer",
         "form.widgets.separator": [u";"],
         "form.widgets.separator-empty-marker": u"1",
         "form.widgets.source": source,
         "form.widgets.has_header": u"True",
     }
     form = importform.ImportFormFirstStep(self.container, request)
     form.update()
     data, errors = form.extractData()
     self.assertEqual(1, len(errors))
     self.assertEqual("File encoding is not utf8", errors[0].error.message)
Exemple #3
0
    def test_first_step_set_data(self):
        form = importform.ImportFormFirstStep(self.container,
                                              self.layer["request"])
        data = {
            "source":
            NamedBlobFile(
                data=self._csv.read(),
                contentType=u"text/csv",
                filename=u"test.csv",
            ),
            "separator":
            u";",
            "has_header":
            False,
        }
        form._set_data(data)
        annotations = IAnnotations(self.container)
        self.assertTrue(importform.ANNOTATION_KEY in annotations)

        annotation = annotations[importform.ANNOTATION_KEY]
        self.assertEqual(data["separator"], annotation["separator"])
        self.assertEqual(data["source"], annotation["source"])
        self.assertEqual(data["has_header"], annotation["has_header"])
Exemple #4
0
 def test_first_step_validate_columns_number_correct(self):
     """Ensure that csv file contains at least 2 columns"""
     request = self.layer["request"]
     source = FileUpload(
         type(
             "obj",
             (object, ),
             {
                 "file": self._csv,
                 "filename": "foo.csv",
                 "headers": "text/csv"
             },
         )())
     request.form = {
         "form.buttons.continue": u"Continuer",
         "form.widgets.separator": [u";"],
         "form.widgets.separator-empty-marker": u"1",
         "form.widgets.source": source,
         "form.widgets.has_header": u"False",
     }
     form = importform.ImportFormFirstStep(self.container, request)
     form.update()
     data, errors = form.extractData()
     self.assertEqual(0, len(errors))