#!/usr/bin/env python # -*- coding: utf-8 -*- import os test_path = os.path.abspath(__file__) test_dir_path = os.path.dirname(test_path) + os.sep from django.test import TestCase from chimere.models import Icon, Importer, Category, SubCategory, Marker class KMLImporterTest(TestCase): def setUp(self): category = Category.objects.create(name='Main category', available=True, order=1, description='') icon = Icon.objects.create(name='Default icon', image='icons/marker.png', height=25, width=21) subcategory_1 = SubCategory.objects.create(category=category, name='Subcategory 1', available=True, icon=icon, order=1, item_type='M',) subcategory_2 = SubCategory.objects.create(category=category, name='Subcategory 2', available=True, icon=icon, order=1, item_type='M',) importer1 = Importer.objects.create(importer_type='KML', source_url=test_dir_path+'sample.kml', filtr="//kml:Folder/kml:name[text()='Category 1']/../kml:Placemark") importer1.categories.add(subcategory_1) importer2 = Importer.objects.create(importer_type='KML', source_url=test_dir_path+'sample.kml', filtr="//kml:Folder/kml:name[text()='Subcategory 1']/../kml:Placemark") importer2.categories.add(subcategory_1) importer2.categories.add(subcategory_2) importer3 = Importer.objects.create(importer_type='KML', source_url=test_path+'sample.kml', filtr="//kml:Folder/kml:name[text()='Subcategory 3']/../kml:Placemark") importer3.categories.add(subcategory_2) self.marker_importers = [(importer1, 1), (importer2, 2), (importer3, 0)] def test_get(self): nb_by_cat = {} for importer, awaited_nb in self.marker_importers: nb, nb_updated, res = importer.manager.get() self.assertEqual(nb, awaited_nb) self.assertEqual(nb_updated, 0) for cat in importer.categories.all(): if cat not in nb_by_cat: nb_by_cat[cat] = 0 nb_by_cat[cat] += nb for cat in nb_by_cat: self.assertEqual(nb_by_cat[cat], Marker.objects.filter(categories__pk=cat.pk).count()) # update for importer, awaited_nb in self.marker_importers: nb, nb_updated, res = importer.manager.get() self.assertEqual(nb, 0) self.assertEqual(nb_updated, awaited_nb)