示例#1
0
    def test_seantis_import_build_url(self):
        context = mock.Mock()
        context.url = '  http://www.ex.ch/ev/  '
        context.do_filter = False
        context.import_imported = False
        context.cat1 = ''
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        self.assertEquals(source.build_url(),
                          'http://www.ex.ch/ev/?type=json&compact=true')

        context.url = '  http://www.ex.ch/ev  '
        source = EventsSourceSeantisJson(context)
        self.assertEquals(source.build_url(),
                          'http://www.ex.ch/ev?type=json&compact=true')

        context.do_filter = True
        source = EventsSourceSeantisJson(context)
        self.assertEquals(source.build_url(),
                          'http://www.ex.ch/ev?type=json&compact=true')

        context.cat1 = 'cat1'
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&filter=true&cat1=cat1')

        context.cat1 = ''
        context.cat2 = 'cat2'
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&filter=true&cat2=cat2')

        context.cat1 = 'cat1'
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&filter=true'
            '&cat1=cat1&cat2=cat2')

        context.import_imported = True
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&imported=1&filter=true'
            '&cat1=cat1&cat2=cat2')
示例#2
0
    def test_seantis_import(self):
        json_string = """[{
            "id": "id1", "title": "title",
            "short_description": "short_description",
            "long_description": "h\u00e4nsel",
            "cat1": ["cat12", "cat11"], "cat2": ["cat21"],
            "event_url": "http://www.event.ch",
            "timezone": "Europe/Zurich",
            "start": "2014-01-15T00:00:00+00:00",
            "end": "2014-01-15T23:59:59+00:00",
            "whole_day": true,
            "recurrence": "RRULE:FREQ=WEEKLY;BYDAY=MO,TU;UNTIL=20150101T0000Z",
            "locality": "locality",
            "street": "street", "housenumber": "housenumber",
            "zipcode": "1234", "town": "town",
            "longitude": 2.0, "latitude": 1.0,
            "location_url": "http://www.location.ch",
            "contact_name": "contact_name",
            "contact_phone": "+12 (3) 45 678 90 12",
            "contact_email": "*****@*****.**",
            "registration": "http://www.tickets.ch",
            "organizer": "organizer",
            "prices": "prices",
            "images": [{"url": "img_url", "name": "img_name"}],
            "attachements": [
                {"url": "a1_url", "name": "a1_name"},
                {"url": "a2_url", "name": "a2_name"}
            ],
            "submitter": "sumitter", "submitter_email": "*****@*****.**"
        },{
            "last_update": "2014-01-21T10:21:47+01:00",
            "id": "test", "title": "test",
            "short_description": "test", "long_description": null,
            "cat1": ["cat13", "cat14"], "cat2": ["cat21", "cat22", "cat23"],
            "event_url": null,
            "timezone": "UTC",
            "start": "2014-01-19T17:00:00+02:00",
            "end": "2014-01-19T18:00:00+02:00",
            "whole_day": false, "recurrence": null,
            "locality": null, "street": null, "housenumber": null,
            "zipcode": null, "town": null,
            "longitude": null, "latitude": null,
            "location_url": null,
            "contact_name": null, "contact_phone": null, "contact_email": null,
            "registration": null, "organizer": null, "prices": null,
            "images": null, "attachments": [],
            "submitter": "cccc", "submitter_email": "*****@*****.**"
        }]"""

        context = mock.Mock()
        context.url = 'url'
        context.do_filter = False
        context.cat1 = ''
        context.cat2 = ''

        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 2)

        self.assertTrue(
            default_now() - events[0]['last_update'] < timedelta(seconds=10)
        )
        self.assertEquals(events[0]['fetch_id'], 'url')
        self.assertEquals(events[0]['id'], 'id1')
        self.assertEquals(events[0]['source_id'], 'id1')
        self.assertEquals(events[0]['title'], 'title')
        self.assertEquals(events[0]['short_description'], u'short_description')
        self.assertEquals(events[0]['long_description'], u'h\xe4nsel')
        self.assertEquals(events[0]['event_url'], 'http://www.event.ch')
        self.assertEquals(events[0]['registration'], 'http://www.tickets.ch')
        self.assertEquals(events[0]['location_url'], 'http://www.location.ch')
        self.assertEquals(events[0]['image'], 'img_url')
        self.assertEquals(events[0]['image_name'], 'img_name')
        self.assertEquals(events[0]['attachment_1'], 'a1_url')
        self.assertEquals(events[0]['attachment_1_name'], 'a1_name')
        self.assertEquals(events[0]['attachment_2'], 'a2_url')
        self.assertEquals(events[0]['attachment_2_name'], 'a2_name')
        self.assertEquals(events[0]['organizer'], 'organizer')
        self.assertEquals(events[0]['street'], 'street')
        self.assertEquals(events[0]['housenumber'], 'housenumber')
        self.assertEquals(events[0]['locality'], 'locality')
        self.assertEquals(events[0]['zipcode'], '1234')
        self.assertEquals(events[0]['town'], 'town')
        self.assertEquals(events[0]['contact_name'], 'contact_name')
        self.assertEquals(events[0]['contact_email'], '*****@*****.**')
        self.assertEquals(events[0]['contact_phone'], '+12 (3) 45 678 90 12')
        self.assertEquals(events[0]['latitude'], '1.0')
        self.assertEquals(events[0]['longitude'], '2.0')
        self.assertEquals(events[0]['timezone'], 'Europe/Zurich')
        self.assertEquals(events[0]['start'], datetime(2014, 1, 15, 0, 0,
                                                       tzinfo=pytz.UTC))
        self.assertEquals(events[0]['end'], datetime(2014, 1, 15, 23, 59, 59,
                                                     tzinfo=pytz.UTC))
        self.assertEquals(events[0]['recurrence'],
                          'RRULE:FREQ=WEEKLY;BYDAY=MO,TU;UNTIL=20150101T0000Z')
        self.assertEquals(events[0]['whole_day'], True)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))
        self.assertEquals(events[0]['cat2'], set(['cat21']))
        self.assertEquals(events[0]['submitter'], 'sumitter')
        self.assertEquals(events[0]['submitter_email'], '*****@*****.**')

        self.assertEquals(
            events[1]['last_update'],
            datetime(2014, 1, 21, 9, 21, 47, tzinfo=pytz.UTC)
        )
        self.assertEquals(events[1]['latitude'], None)
        self.assertEquals(events[1]['longitude'], None)
        self.assertEquals(events[1]['timezone'], 'UTC')
        self.assertEquals(events[1]['start'], datetime(2014, 1, 19, 15, 0,
                                                       tzinfo=pytz.UTC))
        self.assertEquals(events[1]['end'], datetime(2014, 1, 19, 16, 0,
                                                     tzinfo=pytz.UTC))
        self.assertEquals(events[1]['whole_day'], False)
        self.assertEquals(events[1]['cat1'], set(['cat13', 'cat14']))
        self.assertEquals(events[1]['cat2'], set(['cat21', 'cat22', 'cat23']))

        # Filter by categories
        context.do_filter = False
        context.cat1 = 'cat5'
        context.cat2 = 'cat6'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 2)

        context.do_filter = True

        context.cat1 = ''
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 2)

        context.cat1 = 'cat1'
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 0)

        context.cat1 = 'cat11'
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))

        context.cat1 = 'cat12'
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))

        context.cat1 = ''
        context.cat2 = 'cat23'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat2'], set(['cat21', 'cat22', 'cat23']))

        context.cat1 = ''
        context.cat2 = 'cat24'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 0)

        context.do_filter = True
        context.cat1 = 'cat11'
        context.cat2 = 'cat21'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))
        self.assertEquals(events[0]['cat2'], set(['cat21']))
示例#3
0
    def test_seantis_import(self):
        json_string = """[{
            "id": "id1", "title": "title",
            "short_description": "short_description",
            "long_description": "h\u00e4nsel",
            "cat1": ["cat12", "cat11"], "cat2": ["cat21"],
            "event_url": "http://www.event.ch",
            "timezone": "Europe/Zurich",
            "start": "2014-01-15T00:00:00+00:00",
            "end": "2014-01-15T23:59:59+00:00",
            "whole_day": true,
            "recurrence": "RRULE:FREQ=WEEKLY;BYDAY=MO,TU;UNTIL=20150101T0000Z",
            "locality": "locality",
            "street": "street", "housenumber": "housenumber",
            "zipcode": "1234", "town": "town",
            "longitude": 2.0, "latitude": 1.0,
            "location_url": "http://www.location.ch",
            "contact_name": "contact_name",
            "contact_phone": "+12 (3) 45 678 90 12",
            "contact_email": "*****@*****.**",
            "registration": "http://www.tickets.ch",
            "organizer": "organizer",
            "prices": "prices",
            "images": [{"url": "img_url", "name": "img_name"}],
            "attachements": [
                {"url": "a1_url", "name": "a1_name"},
                {"url": "a2_url", "name": "a2_name"}
            ],
            "submitter": "sumitter", "submitter_email": "*****@*****.**"
        },{
            "last_update": "2014-01-21T10:21:47+01:00",
            "id": "test", "title": "test",
            "short_description": "test", "long_description": null,
            "cat1": ["cat13", "cat14"], "cat2": ["cat21", "cat22", "cat23"],
            "event_url": null,
            "timezone": "UTC",
            "start": "2014-01-19T17:00:00+02:00",
            "end": "2014-01-19T18:00:00+02:00",
            "whole_day": false, "recurrence": null,
            "locality": null, "street": null, "housenumber": null,
            "zipcode": null, "town": null,
            "longitude": null, "latitude": null,
            "location_url": null,
            "contact_name": null, "contact_phone": null, "contact_email": null,
            "registration": null, "organizer": null, "prices": null,
            "images": null, "attachments": [],
            "submitter": "cccc", "submitter_email": "*****@*****.**"
        }]"""

        context = mock.Mock()
        context.url = 'url'
        context.do_filter = False
        context.cat1 = ''
        context.cat2 = ''

        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 2)

        self.assertTrue(
            default_now() - events[0]['last_update'] < timedelta(seconds=10))
        self.assertEquals(events[0]['fetch_id'], 'url')
        self.assertEquals(events[0]['id'], 'id1')
        self.assertEquals(events[0]['source_id'], 'id1')
        self.assertEquals(events[0]['title'], 'title')
        self.assertEquals(events[0]['short_description'], u'short_description')
        self.assertEquals(events[0]['long_description'], u'h\xe4nsel')
        self.assertEquals(events[0]['event_url'], 'http://www.event.ch')
        self.assertEquals(events[0]['registration'], 'http://www.tickets.ch')
        self.assertEquals(events[0]['location_url'], 'http://www.location.ch')
        self.assertEquals(events[0]['image'], 'img_url')
        self.assertEquals(events[0]['image_name'], 'img_name')
        self.assertEquals(events[0]['attachment_1'], 'a1_url')
        self.assertEquals(events[0]['attachment_1_name'], 'a1_name')
        self.assertEquals(events[0]['attachment_2'], 'a2_url')
        self.assertEquals(events[0]['attachment_2_name'], 'a2_name')
        self.assertEquals(events[0]['organizer'], 'organizer')
        self.assertEquals(events[0]['street'], 'street')
        self.assertEquals(events[0]['housenumber'], 'housenumber')
        self.assertEquals(events[0]['locality'], 'locality')
        self.assertEquals(events[0]['zipcode'], '1234')
        self.assertEquals(events[0]['town'], 'town')
        self.assertEquals(events[0]['contact_name'], 'contact_name')
        self.assertEquals(events[0]['contact_email'], '*****@*****.**')
        self.assertEquals(events[0]['contact_phone'], '+12 (3) 45 678 90 12')
        self.assertEquals(events[0]['latitude'], '1.0')
        self.assertEquals(events[0]['longitude'], '2.0')
        self.assertEquals(events[0]['timezone'], 'Europe/Zurich')
        self.assertEquals(events[0]['start'],
                          datetime(2014, 1, 15, 0, 0, tzinfo=pytz.UTC))
        self.assertEquals(events[0]['end'],
                          datetime(2014, 1, 15, 23, 59, 59, tzinfo=pytz.UTC))
        self.assertEquals(
            events[0]['recurrence'],
            'RRULE:FREQ=WEEKLY;BYDAY=MO,TU;UNTIL=20150101T0000Z')
        self.assertEquals(events[0]['whole_day'], True)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))
        self.assertEquals(events[0]['cat2'], set(['cat21']))
        self.assertEquals(events[0]['submitter'], 'sumitter')
        self.assertEquals(events[0]['submitter_email'], '*****@*****.**')

        self.assertEquals(events[1]['last_update'],
                          datetime(2014, 1, 21, 9, 21, 47, tzinfo=pytz.UTC))
        self.assertEquals(events[1]['latitude'], None)
        self.assertEquals(events[1]['longitude'], None)
        self.assertEquals(events[1]['timezone'], 'UTC')
        self.assertEquals(events[1]['start'],
                          datetime(2014, 1, 19, 15, 0, tzinfo=pytz.UTC))
        self.assertEquals(events[1]['end'],
                          datetime(2014, 1, 19, 16, 0, tzinfo=pytz.UTC))
        self.assertEquals(events[1]['whole_day'], False)
        self.assertEquals(events[1]['cat1'], set(['cat13', 'cat14']))
        self.assertEquals(events[1]['cat2'], set(['cat21', 'cat22', 'cat23']))

        # Filter by categories
        context.do_filter = False
        context.cat1 = 'cat5'
        context.cat2 = 'cat6'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 2)

        context.do_filter = True

        context.cat1 = ''
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 2)

        context.cat1 = 'cat1'
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 0)

        context.cat1 = 'cat11'
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))

        context.cat1 = 'cat12'
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))

        context.cat1 = ''
        context.cat2 = 'cat23'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat2'], set(['cat21', 'cat22', 'cat23']))

        context.cat1 = ''
        context.cat2 = 'cat24'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 0)

        context.do_filter = True
        context.cat1 = 'cat11'
        context.cat2 = 'cat21'
        source = EventsSourceSeantisJson(context)
        events = [event for event in source.fetch(json_string)]
        self.assertEquals(len(events), 1)
        self.assertEquals(events[0]['cat1'], set(['cat11', 'cat12']))
        self.assertEquals(events[0]['cat2'], set(['cat21']))
示例#4
0
    def test_seantis_import_build_url(self):
        context = mock.Mock()
        context.url = '  http://www.ex.ch/ev/  '
        context.do_filter = False
        context.import_imported = False
        context.cat1 = ''
        context.cat2 = ''
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev/?type=json&compact=true'
        )

        context.url = '  http://www.ex.ch/ev  '
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true'
        )

        context.do_filter = True
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true'
        )

        context.cat1 = 'cat1'
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&filter=true&cat1=cat1'
        )

        context.cat1 = ''
        context.cat2 = 'cat2'
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&filter=true&cat2=cat2'
        )

        context.cat1 = 'cat1'
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&filter=true'
            '&cat1=cat1&cat2=cat2'
        )

        context.import_imported = True
        source = EventsSourceSeantisJson(context)
        self.assertEquals(
            source.build_url(),
            'http://www.ex.ch/ev?type=json&compact=true&imported=1&filter=true'
            '&cat1=cat1&cat2=cat2'
        )