Changeset 407 in main


Ignore:
Timestamp:
10/19/11 15:37:07 (8 years ago)
Author:
pcosquer
Message:

csvimport: add more tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/openPLM/plmapp/tests/csvimport.py

    r406 r407  
    7676              u'Lui', 
    7777              self.group.name, 
    78               u'draft_official_deprecated']] 
     78              u'draft_official_deprecated'], 
     79             [u'SinglePart', 
     80              u'sp2', 
     81              u's', 
     82              u'SP2', 
     83              u'Lui', 
     84              self.group.name, 
     85              u'draft_official_deprecated'], 
     86             ] 
     87 
     88 
     89    def import_csv(self, Importer, rows): 
     90        csv_file = cStringIO.StringIO() 
     91        UnicodeWriter(csv_file).writerows(rows) 
     92        csv_file.seek(0) 
     93        importer = Importer(csv_file, self.user) 
     94        headers = importer.get_preview().guessed_headers 
     95        objects = importer.import_csv(headers) 
     96        return objects 
    7997 
    8098    def test_import_valid(self): 
    8199        csv_rows = self.get_valid_rows() 
    82         csv_file = cStringIO.StringIO() 
    83         UnicodeWriter(csv_file).writerows(csv_rows) 
    84         csv_file.seek(0) 
    85         importer = PLMObjectsImporter(csv_file, self.user) 
    86         headers = importer.get_preview().guessed_headers 
    87         objects = importer.import_csv(headers) 
     100        objects = self.import_csv(PLMObjectsImporter, csv_rows) 
    88101        self.assertEquals(len(csv_rows) - 1, len(objects)) 
    89102        sp1 = get_obj("SinglePart", "sp1", "s", self.user) 
     
    95108        the database. 
    96109        """ 
    97         csv_file = cStringIO.StringIO() 
    98110        csv_rows = self.get_valid_rows() 
    99111        csv_rows.append(["BadType", "bt", "1", "BT", 
    100112            self.group.name, u'draft_official_deprecated']) 
    101113        plmobjects = list(PLMObject.objects.all()) 
    102         UnicodeWriter(csv_file).writerows(csv_rows) 
    103         csv_file.seek(0) 
    104         importer = PLMObjectsImporter(csv_file, self.user) 
    105         headers = importer.get_preview().guessed_headers 
    106         self.assertRaises(CSVImportError, importer.import_csv, headers) 
     114        self.assertRaises(CSVImportError, self.import_csv, 
     115                PLMObjectsImporter, csv_rows) 
    107116        self.assertEquals(plmobjects, list(PLMObject.objects.all())) 
    108117 
     118    def get_valid_bom(self): 
     119        return [["parent-type", "parent-reference", "parent-revision", 
     120                 "child-type", "child-reference", "child-revision", 
     121                 "quantity", "order"], 
     122                ["Part", "p1", "a", "SinglePart", "sp1", "s", "10", "15"], 
     123                ["SinglePart", "sp1", "s", "SinglePart", "sp2", "s", "10.5", "16"], 
     124                ] 
    109125 
     126    def test_import_bom_valid(self): 
     127        """ 
     128        Tests an import of a valid bom. 
     129        """ 
     130        self.import_csv(PLMObjectsImporter, self.get_valid_rows()) 
     131        csv_rows = self.get_valid_bom() 
     132        objects = self.import_csv(BOMImporter, csv_rows) 
     133        # objects should be [parent1, child1, ...] 
     134        self.assertEquals((len(csv_rows) - 1) * 2, len(objects)) 
     135 
     136        # first row 
     137        parent = get_obj("Part", "p1", "a", self.user) 
     138        child = get_obj("SinglePart", "sp1", "s", self.user) 
     139        c = parent.get_children()[0] 
     140        self.assertEquals(c.link.parent.id, parent.id) 
     141        self.assertEquals(c.link.child.id, child.id) 
     142        self.assertEquals(c.link.quantity, 10) 
     143        self.assertEquals(c.link.order, 15) 
     144 
     145        # second row 
     146        parent = get_obj("SinglePart", "sp1", "s", self.user) 
     147        child = get_obj("SinglePart", "sp2", "s", self.user) 
     148        c = parent.get_children()[0] 
     149        self.assertEquals(c.link.parent.id, parent.id) 
     150        self.assertEquals(c.link.child.id, child.id) 
     151        self.assertEquals(c.link.quantity, 10.5) 
     152        self.assertEquals(c.link.order, 16) 
     153 
     154    def test_import_bom_invalid_order(self): 
     155        """ 
     156        Tests an import of an invalid bom: invalid order. 
     157        """ 
     158        self.import_csv(PLMObjectsImporter, self.get_valid_rows()) 
     159        csv_rows = self.get_valid_bom() 
     160        csv_rows[-1][-1] = "not an integer" 
     161        self.assertRaises(CSVImportError, self.import_csv, 
     162                          BOMImporter, csv_rows) 
     163        self.assertEquals(0, len(ParentChildLink.objects.all())) 
     164     
     165    def test_import_bom_invalid_parent(self): 
     166        """ 
     167        Tests an import of an invalid bom: invalid parent. 
     168        """ 
     169        self.import_csv(PLMObjectsImporter, self.get_valid_rows()) 
     170        csv_rows = self.get_valid_bom() 
     171        csv_rows[1][0] = "not an type" 
     172        self.assertRaises(CSVImportError, self.import_csv, 
     173                          BOMImporter, csv_rows) 
     174        self.assertEquals(0, len(ParentChildLink.objects.all())) 
     175 
     176    def test_import_bom_invalid_duplicated_row(self): 
     177        """ 
     178        Tests an import of an invalid bom: a row is duplicated. 
     179        """ 
     180        self.import_csv(PLMObjectsImporter, self.get_valid_rows()) 
     181        csv_rows = self.get_valid_bom() 
     182        csv_rows.append(csv_rows[-1]) 
     183        self.assertRaises(CSVImportError, self.import_csv, 
     184                          BOMImporter, csv_rows) 
     185        self.assertEquals(0, len(ParentChildLink.objects.all())) 
     186 
Note: See TracChangeset for help on using the changeset viewer.