Example #1
0
class ArchiveItemDetailView(TestCase):
    def setUp(self):
        self.archive_item = ArchiveItemFactory()

    def test_archiveitem_empty(self):
        obj = ArchiveItemFactory()
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.dataset.get_absolute_url())
        self.assertContains(response, obj.dataset.source.get_absolute_url())
        self.assertContains(response, obj.tablename)

        self.assertNotContains(response, "Rule")
        self.assertNotContains(response, settings.REFINE_EXTERNAL_HOST)

    def test_archiveitem_with_refine_data(self):
        obj = ArchiveItemFactory(refine_url="http://blablah.com",
                                 refine_projectid="123213")
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.refine_url)

    def test_archiveitem_with_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.rule.rule)

    def test_archiveitem_edit_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        new_rule = '[{"that": "is a brand new rule :D"}]'

        response = self.client.post(obj.get_absolute_url(), {"rule": new_rule},
                                    follow=True)

        self.assertContains(
            response,
            "[\n  {\n    "that": "is a brand new rule " +
            ":D"\n  }\n]")

    def test_contains_sparql_metagraph_query(self):
        from webui.cnmain.utils import get_sparql_query_metagraph_info
        query = get_sparql_query_metagraph_info(self.archive_item)
        response = self.client.get(self.archive_item.get_absolute_url())
        self.assertContains(response,
                            '<a href="/sparql/?query=' + quote_plus(query))

    def test_contains_sparql_datagraph_raw_query(self):
        from webui.cnmain.utils import get_sparql_query_graph
        query = get_sparql_query_graph(self.archive_item.datagraph_raw_name)
        response = self.client.get(self.archive_item.get_absolute_url())
        self.assertContains(response,
                            '<a href="/sparql/?query=' + quote_plus(query))

    def test_contains_sparql_datagraph_mapped_query(self):
        from webui.cnmain.utils import get_sparql_query_graph
        query = get_sparql_query_graph(self.archive_item.datagraph_mapped_name)
        response = self.client.get(self.archive_item.get_absolute_url())
        self.assertContains(response,
                            '<a href="/sparql/?query=' + quote_plus(query))
Example #2
0
    def test_archiveitem_with_refine_data(self):
        obj = ArchiveItemFactory(
            refine_url="http://blablah.com", refine_projectid="123213"
        )
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.refine_url)
Example #3
0
 def setUp(self):
     self.archiveitem = ArchiveItemFactory()
     self.aggregator = AggregatorFactory()
     AggregatorArchiveItem.objects.create(
         aggregator=self.aggregator,
         archiveitem=self.archiveitem,
     )
     self.url = reverse('archiveitem_aggregator_del',
                        args=(self.archiveitem.pk, ))
Example #4
0
    def test_archiveitem_empty(self):
        obj = ArchiveItemFactory()
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.dataset.get_absolute_url())
        self.assertContains(response, obj.dataset.source.get_absolute_url())
        self.assertContains(response, obj.tablename)

        self.assertNotContains(response, "Rule")
        self.assertNotContains(response, settings.REFINE_EXTERNAL_HOST)
Example #5
0
    def test_archiveitem_empty(self):
        obj = ArchiveItemFactory()
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.dataset.get_absolute_url())
        self.assertContains(response, obj.dataset.source.get_absolute_url())
        self.assertContains(response, obj.tablename)

        self.assertNotContains(response, "Rule")
        self.assertNotContains(response, settings.REFINE_EXTERNAL_HOST)
Example #6
0
    def test_archiveitem_edit_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        new_rule = '[{"that": "is a brand new rule :D"}]'

        response = self.client.post(obj.get_absolute_url(), {"rule": new_rule},
                                    follow=True)

        self.assertContains(
            response,
            "[\n  {\n    &quot;that&quot;: &quot;is a brand new rule " +
            ":D&quot;\n  }\n]")
Example #7
0
    def test_contains_archiveitems(self):
        item1 = ArchiveItemFactory()
        item2 = ArchiveItemFactory()
        for item in (item1, item2):
            AggregatorArchiveItem.objects.create(
                aggregator=self.aggregator,
                archiveitem=item
            )

        response = self.client.get(self.aggregator.get_absolute_url())
        self.assertContains(response, item1.get_absolute_url())
        self.assertContains(response, item2.get_absolute_url())
Example #8
0
    def test_archiveitem_edit_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        new_rule = '[{"that": "is a brand new rule :D"}]'

        response = self.client.post(
            obj.get_absolute_url(), {"rule": new_rule}, follow=True
        )

        self.assertContains(
            response,
            "[\n  {\n    &quot;that&quot;: &quot;is a brand new rule " +
            ":D&quot;\n  }\n]"
        )
Example #9
0
    def test_archiveitem_sync(self):
        from refine.refine import IllegalRuleCheckSum
        rule = {"amazing": "rule"}
        obj = ArchiveItemFactory(rule=RuleFactory(hash="LOL", rule=rule),
                                 file_hash="WUT")

        with self.assertRaises(IllegalRuleCheckSum):
            obj.get_refine_rule()

        self.client.post(
            reverse("archiveitem_refine_sync", kwargs={'pk': obj.pk}))

        obj = ArchiveItem.objects.get(pk=obj.pk)
        self.assertEquals(obj.get_refine_rule(), rule)
Example #10
0
class ArchiveItemAggregatorDelView(TestCase):
    def setUp(self):
        self.archiveitem = ArchiveItemFactory()
        self.aggregator = AggregatorFactory()
        AggregatorArchiveItem.objects.create(
            aggregator=self.aggregator,
            archiveitem=self.archiveitem,
        )
        self.url = reverse('archiveitem_aggregator_del',
                           args=(self.archiveitem.pk, ))

    def test_del(self):
        self.client_login('admin')
        self.assertEquals(len(self.archiveitem.aggregators.all()), 1)

        post_data = {"aggregator": self.aggregator.pk}
        response = self.client.post(self.url, data=post_data, follow=True)

        self.assertContains(response, 'success')
        self.assertEquals(len(self.archiveitem.aggregators.all()), 0)

    def test_del_invalid(self):
        self.client_login('admin')

        self.assertEquals(len(self.archiveitem.aggregators.all()), 1)

        post_data = {"aggregator": 99999}
        response = self.client.post(self.url, data=post_data, follow=True)
        self.assertEquals(len(self.archiveitem.aggregators.all()), 1)
        self.assertContains(response, 'error')

        response = self.client.get(self.archiveitem.get_absolute_url())
        self.assertContains(response, self.aggregator.name)
Example #11
0
class ArchiveItemAggregatorDelView(TestCase):
    def setUp(self):
        self.archiveitem = ArchiveItemFactory()
        self.aggregator = AggregatorFactory()
        AggregatorArchiveItem.objects.create(
            aggregator=self.aggregator,
            archiveitem=self.archiveitem,
        )
        self.url = reverse('archiveitem_aggregator_del',
                           args=(self.archiveitem.pk, ))

    def test_del(self):
        self.client_login('admin')
        self.assertEquals(len(self.archiveitem.aggregators.all()), 1)

        post_data = {"aggregator": self.aggregator.pk}
        response = self.client.post(self.url, data=post_data, follow=True)

        self.assertContains(response, 'success')
        self.assertEquals(len(self.archiveitem.aggregators.all()), 0)

    def test_del_invalid(self):
        self.client_login('admin')

        self.assertEquals(len(self.archiveitem.aggregators.all()), 1)

        post_data = {"aggregator": 99999}
        response = self.client.post(self.url, data=post_data, follow=True)
        self.assertEquals(len(self.archiveitem.aggregators.all()), 1)
        self.assertContains(response, 'error')

        response = self.client.get(self.archiveitem.get_absolute_url())
        self.assertContains(response, self.aggregator.name)
Example #12
0
    def test_archiveitem_sync(self):
        from refine.refine import IllegalRuleCheckSum
        rule = {"amazing": "rule"}
        obj = ArchiveItemFactory(
            rule=RuleFactory(hash="LOL", rule=rule),
            file_hash="WUT"
        )

        with self.assertRaises(IllegalRuleCheckSum):
            obj.get_refine_rule()

        self.client.post(
            reverse("archiveitem_refine_sync", kwargs={'pk': obj.pk})
        )

        obj = ArchiveItem.objects.get(pk=obj.pk)
        self.assertEquals(obj.get_refine_rule(), rule)
Example #13
0
 def setUp(self):
     self.archiveitem = ArchiveItemFactory()
     self.aggregator = AggregatorFactory()
     AggregatorArchiveItem.objects.create(
         aggregator=self.aggregator,
         archiveitem=self.archiveitem,
     )
     self.url = reverse('archiveitem_aggregator_del',
                        args=(self.archiveitem.pk, ))
Example #14
0
    def test_post(self):
        self.client_login('admin')
        archiveitem = ArchiveItemFactory()
        self.post_data['archiveitems'] = [archiveitem.pk]
        print self.post_data
        response = self.client.post(self.update_url, data=self.post_data)
        self.assertRedirects(response, self.aggregator.get_absolute_url())

        aggregator = Aggregator.objects.get(pk=self.aggregator.pk)
        self.assertEqual(aggregator.name, self.post_data['name'])
        self.assertEqual(aggregator.description, self.post_data['description'])
        self.assertIn(archiveitem, aggregator.archiveitems.all())
Example #15
0
    def test_archiveitem_csv_ok(self):
        obj = ArchiveItemFactory()
        with patch.object(ArchiveItem,
                          'data',
                          return_value=((x, x, 42) for x in range(20))):
            csv_url = reverse("archiveitem_csv", kwargs={"pk": obj.pk})

            response = self.client.get(csv_url)

            self.assertEqual(response['Content-Type'], 'text/csv')
            self.assertContains(response, '1,1,42')
            self.assertEqual(len(response.content.split("\n")), 21)
Example #16
0
    def test_contains_archiveitems(self):
        item1 = ArchiveItemFactory()
        item2 = ArchiveItemFactory()
        for item in (item1, item2):
            AggregatorArchiveItem.objects.create(aggregator=self.aggregator,
                                                 archiveitem=item)

        response = self.client.get(self.aggregator.get_absolute_url())
        self.assertContains(response, item1.get_absolute_url())
        self.assertContains(response, item2.get_absolute_url())
Example #17
0
    def test_post(self):
        self.client_login('admin')

        archiveitem = ArchiveItemFactory()
        self.post_data['archiveitems'] = [archiveitem.pk]
        response = self.client.post(self.update_url, data=self.post_data)
        self.assertRedirects(response, self.aggregator.get_absolute_url())

        aggregator = Aggregator.objects.get(pk=self.aggregator.pk)
        self.assertEqual(
            aggregator.silk_rule.strip().replace("\n", ""),
            '<LinkageRule>        '
            '<Compare id="unnamed_5" metric="levenshtein" required="false" '
            'threshold="0.0" weight="1">          '
            '<TransformInput function="lowerCase" id="unnamed_3">            '
            '<Input id="unnamed_1" path="?a/sd:Event#name" />          '
            '</TransformInput>          <TransformInput function="lowerCase" '
            'id="unnamed_4">            '
            '<Input id="unnamed_2" path="?b/sd:Event#name" />          '
            '</TransformInput>          <Param name="minChar" value="0" />'
            '          <Param name="maxChar" value="z" />        '
            '</Compare>      </LinkageRule>'.strip())
Example #18
0
    def test_can_silk_rules_file_is_valid(self):
        import xml.etree.ElementTree as ET
        from django.template.loader import render_to_string

        archive_item = ArchiveItemFactory()
        AggregatorArchiveItem.objects.create(
            aggregator=self.aggregator,
            archiveitem=archive_item
        )

        self.aggregator.silk_rule = \
            '<LinkageRule><smart data="now" /></LinkageRule>'
        self.aggregator.save()
        output_filename = 'a_really_cool_filename.thm'

        context = {
            'aggregator': self.aggregator,
            'sd_prefix': settings.TRIPLE_DATABASE['PREFIXES']['sdv1'],
            'sparql_endpoint': get_virtuoso_endpoint(),
            'archive_item': archive_item,
            'output_filename': output_filename,
            'mastergraph_host': settings.TRIPLE_DATABASE_MASTER['HOST'],
            'mastergraph_port':
            settings.TRIPLE_DATABASE_MASTER['KWARGS']['rexpro_port'],
            'mastergraph_graphname':
            settings.TRIPLE_DATABASE_MASTER['KWARGS']['graph'],
            'resource_namespace':
            settings.TRIPLE_DATABASE_MASTER['PREFIXES']['sdres'],
        }

        tree = ET.fromstring(render_to_string(
            'controller/aggregator/silk_rules.xml', context
        ))

        self.assertIn(
            (settings.TRIPLE_DATABASE['PREFIXES']['sdv1'], 'sd'),
            [(x.get('namespace'), x.get('id'))
             for x in tree.findall('.//Prefix')]
        )

        # check datasources
        datasources_dom = tree.findall('.//DataSource')
        self.assertEqual(len(datasources_dom), 2)
        self.assertEqual(datasources_dom[0].get('id'), 'master-graph')

        mastergraph, datasource = datasources_dom

        # check datasource endpoints
        self.assertEqual(
            get_virtuoso_endpoint(),
            datasource.find('Param[@name="endpointURI"]').get("value"),
        )

        # check datasources graph names
        self.assertEqual(
            mastergraph.find('Param[@name="graph"]').get('value'),
            settings.TRIPLE_DATABASE_MASTER["KWARGS"]["graph"]
        )
        self.assertEqual(
            archive_item.datagraph_mapped_name,
            datasource.find('Param[@name="graph"]').get("value")
        )

        # check tasks
        datasource_id = datasource.get('id')
        rules = tree.findall('.//Interlink')
        self.assertEqual(len(rules), 1)
        self.assertEqual(datasource_id, rules[0].get('id'))

        # check rules parameters
        rule = rules[0]
        self.assertEqual(
            rule.find('.//SourceDataset').get('dataSource'),
            datasource_id
        )
        self.assertEqual(
            rule.find('.//TargetDataset').get('dataSource'),
            'master-graph'
        )
        self.assertEqual(
            ET.tostring(rule.find('.//LinkageRule')).strip(),
            self.aggregator.silk_rule
        )
        self.assertEqual(
            rule.find('.//SourceDataset').find('RestrictTo').text.strip(),
            '?a rdf:type <{}> .'.format(self.aggregator.entity_type)
        )
        self.assertEqual(
            rule.find('.//TargetDataset').find('RestrictTo').text.strip(),
            'b -> {}'.format(self.aggregator.vertex_selector)
        )
        self.assertIsNone(rule.find('.//Filter').text)

        output = rule.find('.//Outputs').find('Output')
        self.assertEqual(output.get('type'), 'file')
        self.assertEqual(output.findall('Param')[0].get('name'), 'file')
        self.assertEqual(
            output.findall('Param')[0].get('value'), output_filename)
        self.assertEqual(output.findall('Param')[1].get('name'), 'format')
        self.assertEqual(output.findall('Param')[1].get('value'), 'ntriples')
Example #19
0
 def setUp(self):
     self.archive_item = ArchiveItemFactory()
Example #20
0
    def test_archiveitem_with_refine_data(self):
        obj = ArchiveItemFactory(refine_url="http://blablah.com",
                                 refine_projectid="123213")
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.refine_url)
Example #21
0
    def test_archiveitem_with_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.rule.rule)
Example #22
0
    def test_archiveitem_with_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.rule.rule)
Example #23
0
    def test_archiveitem_csv_no_table(self):
        obj = ArchiveItemFactory()
        csv_url = reverse("archiveitem_csv", kwargs={"pk": obj.pk})

        response = self.client.get(csv_url)
        self.assertEqual(response.status_code, 404)
Example #24
0
    def test_silk_project_file_is_valid(self):
        import xml.etree.ElementTree as ET

        self.client_login('admin')

        item1 = ArchiveItemFactory()
        item2 = ArchiveItemFactory()
        for item in (item1, item2):
            AggregatorArchiveItem.objects.create(aggregator=self.aggregator,
                                                 archiveitem=item)

        response = self.client.get(self.export_url)
        tree = ET.fromstring(response.content)

        self.assertIn((settings.TRIPLE_DATABASE['PREFIXES']['sdv1'], 'sd'),
                      [(x.get('namespace'), x.get('id'))
                       for x in tree.findall('.//Prefix')])

        # check datasources
        datasources = tree.findall('.//DataSource')
        self.assertEqual(len(datasources), 3)
        self.assertEqual(datasources[0].get('id'), 'master-graph')

        mastergraph = datasources[0]
        datasources = datasources[1:]

        # check datasources endpoints
        self.assertEqual(
            mastergraph.find('Param[@name="host"]').get('value'),
            settings.TRIPLE_DATABASE_MASTER['HOST'])
        self.assertEqual([get_virtuoso_endpoint()] * 2, [
            x.find('Param[@name="endpointURI"]').get("value")
            for x in datasources
        ])

        # check datasources graph names
        self.assertEqual(
            mastergraph.find('Param[@name="graph"]').get('value'),
            settings.TRIPLE_DATABASE_MASTER["KWARGS"]["graph"])
        self.assertEqual(
            [item1.datagraph_mapped_name, item2.datagraph_mapped_name],
            [x.find('Param[@name="graph"]').get("value") for x in datasources])

        # check tasks
        datasource_ids = [x.get('id') for x in datasources]
        tasks = tree.findall('.//LinkingTask')
        self.assertEqual(len(tasks), 2)
        self.assertEqual(datasource_ids,
                         [x.find('.//Interlink').get('id') for x in tasks])

        # check task parameters
        for datasource_id, task in zip(datasource_ids, tasks):
            self.assertEqual(
                task.find('.//SourceDataset').get('dataSource'), datasource_id)
            self.assertEqual(
                task.find('.//TargetDataset').get('dataSource'),
                'master-graph')
            self.assertEqual(
                task.find('.//SourceDataset').find('RestrictTo').text.strip(),
                '?a rdf:type <{}> .'.format(self.aggregator.entity_type))
            self.assertEqual(
                task.find('.//TargetDataset').find('RestrictTo').text.strip(),
                'b -> {}'.format(self.aggregator.vertex_selector))
            self.assertIsNone(task.find('.//LinkageRule').text)
            self.assertIsNone(task.find('.//Filter').text)
            self.assertIsNone(task.find('.//Outputs').text)
            self.assertIsNone(task.find('.//PositiveEntities').text)
            self.assertIsNone(task.find('.//NegativeEntities').text)
            self.assertIsNone(
                task.find('.//Alignment/').find('{}Alignment'.format(
                    '{http://knowledgeweb.'
                    'semanticweb.org'
                    '/heterogeneity/alignment#}')).text)
Example #25
0
class ArchiveItemDetailView(TestCase):
    def setUp(self):
        self.archive_item = ArchiveItemFactory()

    def test_archiveitem_empty(self):
        obj = ArchiveItemFactory()
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.dataset.get_absolute_url())
        self.assertContains(response, obj.dataset.source.get_absolute_url())
        self.assertContains(response, obj.tablename)

        self.assertNotContains(response, "Rule")
        self.assertNotContains(response, settings.REFINE_EXTERNAL_HOST)

    def test_archiveitem_with_refine_data(self):
        obj = ArchiveItemFactory(
            refine_url="http://blablah.com", refine_projectid="123213"
        )
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.refine_url)

    def test_archiveitem_with_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        response = self.client.get(obj.get_absolute_url())

        self.assertContains(response, obj.rule.rule)

    def test_archiveitem_edit_rule(self):
        obj = ArchiveItemFactory(rule=RuleFactory())
        new_rule = '[{"that": "is a brand new rule :D"}]'

        response = self.client.post(
            obj.get_absolute_url(), {"rule": new_rule}, follow=True
        )

        self.assertContains(
            response,
            "[\n  {\n    &quot;that&quot;: &quot;is a brand new rule " +
            ":D&quot;\n  }\n]"
        )

    def test_contains_sparql_metagraph_query(self):
        from webui.cnmain.utils import get_sparql_query_metagraph_info
        query = get_sparql_query_metagraph_info(self.archive_item)
        response = self.client.get(self.archive_item.get_absolute_url())
        self.assertContains(
            response, '<a href="/sparql/?query=' + quote_plus(query)
        )

    def test_contains_sparql_datagraph_raw_query(self):
        from webui.cnmain.utils import get_sparql_query_graph
        query = get_sparql_query_graph(self.archive_item.datagraph_raw_name)
        response = self.client.get(self.archive_item.get_absolute_url())
        self.assertContains(
            response, '<a href="/sparql/?query=' + quote_plus(query)
        )

    def test_contains_sparql_datagraph_mapped_query(self):
        from webui.cnmain.utils import get_sparql_query_graph
        query = get_sparql_query_graph(self.archive_item.datagraph_mapped_name)
        response = self.client.get(self.archive_item.get_absolute_url())
        self.assertContains(
            response, '<a href="/sparql/?query=' + quote_plus(query)
        )
Example #26
0
 def test_get_rule_valid(self):
     obj = ArchiveItemFactory(rule=RuleFactory())
     self.assertEqual(obj.get_refine_rule(), obj.rule.rule)
Example #27
0
    def test_get_rule_invalid(self):
        from refine.refine import IllegalRuleCheckSum

        obj = ArchiveItemFactory(rule=RuleFactory(hash="pippero"))
        with self.assertRaises(IllegalRuleCheckSum):
            obj.get_refine_rule()
Example #28
0
 def test_get_rule_none(self):
     obj = ArchiveItemFactory()
     self.assertIsNone(obj.get_refine_rule())
Example #29
0
 def setUp(self):
     self.archiveitem = ArchiveItemFactory()
     self.aggregator = AggregatorFactory()
     self.url = reverse('archiveitem_aggregator_add',
                        args=(self.archiveitem.pk, ))
Example #30
0
    def handle(self, *args, **options):
        """
        entry point
        """
        from django.contrib.sites.models import Site

        site = Site.objects.get()
        site.name = 'controller'
        site.domain = 'localhost:8001'
        site.save()

        AdminFactory()

        trentinocultura = SourceFactory(
            name='trentinocultura',
            description='description description',
            scraper_name='trentinocultura',
            scraper_api_key='',
        )

        DatasetFactory(
            source=trentinocultura,
            name='Trentinocultura agenda',
            url='http://www.trentinocultura.net/asp_cat/main.asp?IDProspettiva'
                '=35&SearchType=AGENDA_SEARCH&Pag=%d&TipoVista=AGENDA&cmd=new',
            description='Eventi in Trentino',
            download='scraper:trentinocultura:trentinocultura',
            curator='Federico Scrinzi',
            license='All rights reserved',
            other_meta='{}',
            bounding_box='10.3817591116112,45.6730626059259,'
                         '12.4775685651704,47.0917759206089',
        )

        ingiro_local = SourceFactory(
            name='in-giro (locale)',
            description='i dati dello scraper di in-giro, ma in locale (file '
                        'webui.scheduler.tests.data/in-giro.zip) utile per'
                        'test, ma anche per boh, altro? =)',
        )

        DatasetFactory(
            source=ingiro_local,
            name='eventi-e-poi-ingiro',
            url='http://in-giro.net',
            description='Eventi e POI presi da in-giro',
            download='http://testserver/in-giro.zip',
            curator='Ciccio Pasticcio',
            license='All rights reserved',
            other_meta='{}',
        )

        bgg_source = SourceFactory(
            name='BoardGameGeek (test)',
            description='pochi dati per testare il matching su silk'
        )

        bgt_source = SourceFactory(
            name='BoardGameTournament (test)',
            description='pochi dati per testare il matching su silk',
        )

        bgg_dataset = DatasetFactory(
            source=bgg_source,
            name='boardgamegeek-games',
            url='http://boardgamegeek.com',
            description='Lista di boardgames presi da boardgamegeek',
            download='https://dl.dropbox.com/u/3435878/boardgamegeek.csv',
            curator='Stefano Parmesan',
            license='All rights reserved',
            other_meta='{}',
        )

        bgt_dataset = DatasetFactory(
            source=bgt_source,
            name='boardgametournament-games',
            url='http://boardgametournament.com',
            description='Lista di boardgames presi da boardgametournament',
            download='https://dl.dropbox.com/u/3435878/'
                     'boardgametournament.csv',
            curator='Stefano Parmesan',
            license='All rights reserved',
            other_meta='{}',
        )

        DatasetFactory(
            source=bgt_source,
            name='boardgametournament-games-xls',
            url='http://boardgametournament.com',
            description='Lista di boardgames presi da boardgametournament',
            download='https://dl.dropbox.com/u/3435878/'
                     'boardgametournament.xls',
            curator='Stefano Parmesan',
            license='All rights reserved',
            encoding="utf8",
            other_meta='{}',
        )

        DatasetFactory(
            source=bgt_source,
            name='boardgametournament-games-xlsx',
            url='http://boardgametournament.com',
            description='Lista di boardgames presi da boardgametournament',
            download='https://dl.dropbox.com/u/3435878/'
                     'boardgametournament.xlsx',
            curator='Stefano Parmesan',
            license='All rights reserved',
            encoding="utf8",
            other_meta='{}',
        )

        with open(get_test_file('boardgamegeek_refine_rules.json')) as fin:
            rule = ''.join(fin.readlines())
        bgg_archiveitem = ArchiveItemFactory(
            dataset=bgg_dataset,
            file_target='boardgamegeek.csv',
            file_hash='ea6ee15e9b052171db4f96743aa11425',
            rule=RuleFactory(
                hash="ea6ee15e9b052171db4f96743aa11425",
                rule=rule,
            )
        )

        with open(get_test_file('boardgametournament_refine_rules.json')) \
                as fin:
            rule = ''.join(fin.readlines())

        bgt_archiveitem = ArchiveItemFactory(
            dataset=bgt_dataset,
            file_target='boardgametournament.csv',
            file_hash='be864f716b6a7716f3b1c2254f4f5eea',
            rule=RuleFactory(
                hash="be864f716b6a7716f3b1c2254f4f5eea",
                rule=rule,
            )
        )

        with open(get_test_file('boardgames_aggregator_silk_rules.xml')) \
                as fin:
            rule = ''.join(fin.readlines())
        aggregator = AggregatorFactory(
            name='BoardGames',
            description='Un dataset di giochi da tavolo',
            silk_rule=rule,
            entity_type='{}BoardGame'.format(
                settings.TRIPLE_DATABASE['PREFIXES']['sdv1']
            ),
            vertex_selector="g.V('type', 'sd$BoardGame')%limit.id.fill(m)",
        )

        for archiveitem in (bgg_archiveitem, bgt_archiveitem):
            AggregatorArchiveItem.objects.create(
                aggregator=aggregator,
                archiveitem=archiveitem,
            )

        osm_source = SourceFactory(
            name='OSM (test)',
            description='pochi dati per testare lo slicer'
        )

        osm_dataset = DatasetFactory(
            source=osm_source,
            name='osm-dataset',
            url='http://openstreetmap.org',
            download='https://dl.dropbox.com/u/781790/osm-10nodes.csv',
            curator='Davide setti',
            license='CC PUCCI',
        )

        with open(get_test_file('osm-refine-rules.json')) as fin:
            rule = ''.join(fin.readlines())
        osm_archiveitem = ArchiveItemFactory(
            dataset=osm_dataset,
            file_target='osm-10nodes.csv',
            file_hash='e6f4a5c5f5fe12765f7b3ca04ab7a82d',
            rule=RuleFactory(
                hash="e6f4a5c5f5fe12765f7b3ca04ab7a82d",
                rule=rule,
            )
        )

        poi_aggregator = AggregatorFactory(
            name='POI',
            description='POI aggregator',
            entity_type=settings.TRIPLE_DATABASE['PREFIXES']['sdv1'] + 'POI',
            vertex_selector="g.V('type', 'sd$POI')%limit.id.fill(m)"
        )
        AggregatorArchiveItem.objects.create(
            aggregator=poi_aggregator,
            archiveitem=osm_archiveitem,
        )

        DatasetFactory(
            source=osm_source,
            name='Aeroporti',
            url='http://dati.trentino.it',
            description='Aeroporti del trentino, file SHP',
            download='http://testserver/aeroporti_tn.zip',
            curator='Federico Scrinzi',
            license='Open Data',
            other_meta='{}',
        )

        strange_source = SourceFactory(
            name='Strange or malformed (test)',
            description='pochi dati con valori strani tipo None',
        )

        DatasetFactory(
            source=strange_source,
            name='strange symbols',
            url='http://testserver/',
            description='Some strange symbols',
            download='http://testserver/strangesymbols.csv',
            curator='Federico Scrinzi',
            license='Open Data',
            other_meta='{}',
        )

        DatasetFactory(
            source=strange_source,
            name='looks like ascii',
            url='http://testserver/',
            description="file that looks like ascii but it's UTF8",
            download='http://testserver/lookslikeascii.csv',
            curator='Federico Scrinzi',
            license='Open Data',
            other_meta='{}',
        )
Example #31
0
 def setUp(self):
     self.archive_item = ArchiveItemFactory()
Example #32
0
 def test_index_unsynced(self):
     obj = ArchiveItemFactory(file_hash='thesame',
                              rule=RuleFactory(hash='notthesame'))
     response = self.client.get('/')
     self.assertContains(response, obj.file_target)
Example #33
0
 def test_index_archiveitem_no_rule(self):
     obj = ArchiveItemFactory(rule=None)
     response = self.client.get('/')
     self.assertNotContains(response, obj.file_target)