예제 #1
0
def send_disruption_to_navitia(disruption):
    if disruption.is_draft():
        return True

    feed_entity = populate_pb(disruption)
    return chaos.publisher.publish(feed_entity.SerializeToString(),
                                   disruption.contributor.contributor_code)
예제 #2
0
def send_disruption_to_navitia(disruption):
    if disruption.is_published:
        feed_entity = populate_pb(disruption)
        chaos.publisher.publish(
            feed_entity.SerializeToString(),
            disruption.contributor.contributor_code
        )
예제 #3
0
파일: utils.py 프로젝트: dvdn/Chaos
def send_disruption_to_navitia(disruption):
    if disruption.is_draft():
        return True

    feed_entity = populate_pb(disruption)
    return chaos.publisher.publish(
        feed_entity.SerializeToString(),
        disruption.contributor.contributor_code
    )
예제 #4
0
def test_disruption_with_message_meta():
    disruption = get_disruption('KISIO-DIGITAL', True, True, True)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]
    eq_(disruption_pb.reference, disruption.reference)
    eq_(len(disruption_pb.impacts[0].messages), 2)
    eq_(len(disruption_pb.impacts[0].messages[0].meta), 1)
    eq_(disruption_pb.impacts[0].messages[0].meta[0].key, disruption.impacts[0].messages[0].meta[0].key)
    eq_(disruption_pb.impacts[0].messages[0].meta[0].value, disruption.impacts[0].messages[0].meta[0].value)
    eq_(len(disruption_pb.impacts[0].messages[1].meta), 2)
    eq_(disruption_pb.impacts[0].messages[1].meta[0].key, disruption.impacts[0].messages[1].meta[0].key)
    eq_(disruption_pb.impacts[0].messages[1].meta[0].value, disruption.impacts[0].messages[1].meta[0].value)
    eq_(disruption_pb.impacts[0].messages[1].meta[1].key, disruption.impacts[0].messages[1].meta[1].key)
    eq_(disruption_pb.impacts[0].messages[1].meta[1].value, disruption.impacts[0].messages[1].meta[1].value)
예제 #5
0
def test_disruption_with_message_meta():
    disruption = get_disruption('KISIO-DIGITAL', True, True)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]
    eq_(disruption_pb.reference, disruption.reference)
    eq_(len(disruption_pb.impacts[0].messages), 2)
    eq_(len(disruption_pb.impacts[0].messages[0].meta), 1)
    eq_(disruption_pb.impacts[0].messages[0].meta[0].key, disruption.impacts[0].messages[0].meta[0].key)
    eq_(disruption_pb.impacts[0].messages[0].meta[0].value, disruption.impacts[0].messages[0].meta[0].value)
    eq_(len(disruption_pb.impacts[0].messages[1].meta), 2)
    eq_(disruption_pb.impacts[0].messages[1].meta[0].key, disruption.impacts[0].messages[1].meta[0].key)
    eq_(disruption_pb.impacts[0].messages[1].meta[0].value, disruption.impacts[0].messages[1].meta[0].value)
    eq_(disruption_pb.impacts[0].messages[1].meta[1].key, disruption.impacts[0].messages[1].meta[1].key)
    eq_(disruption_pb.impacts[0].messages[1].meta[1].value, disruption.impacts[0].messages[1].meta[1].value)
예제 #6
0
def test_impact_with_application_period_patterns():
    disruption = get_disruption(contributor_code='KISIO-DIGITAL', with_routes=False, with_message_meta=False,
                                with_patterns=True)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]
    eq_(len(disruption_pb.impacts), 3)
    eq_(len(disruption_pb.impacts[0].application_patterns), 2)
    eq_(len(disruption_pb.impacts[0].application_periods), 5)
    # "start_date": "2015-02-01", "end_date": "2015-02-03", "weekly_pattern": "1111001"
    eq_(disruption.impacts[0].patterns[0].weekly_pattern, '1111001')
    eq_(disruption_pb.impacts[0].application_patterns[0].start_date,
        get_pos_date(disruption.impacts[0].patterns[0].start_date))
    eq_(disruption_pb.impacts[0].application_patterns[0].end_date,
        get_pos_date(disruption.impacts[0].patterns[0].end_date))
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.monday, True)
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.tuesday, True)
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.wednesday, True)
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.thursday, True)
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.friday, False)
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.saturday, False)
    eq_(disruption_pb.impacts[0].application_patterns[0].week_pattern.sunday, True)
    eq_(len(disruption_pb.impacts[0].application_patterns[0].time_slots), 1)
    # "time_slots": [{"begin": "08:45", "end": "09:30"}]
    eq_(disruption_pb.impacts[0].application_patterns[0].time_slots[0].begin, 31500)
    eq_(disruption_pb.impacts[0].application_patterns[0].time_slots[0].end, 34200)

    # "start_date": "2015-02-05", "end_date": "2015-02-06", "weekly_pattern": "1111111",
    eq_(disruption.impacts[0].patterns[1].weekly_pattern, '1111111')
    eq_(disruption_pb.impacts[0].application_patterns[1].start_date,
        get_pos_date(disruption.impacts[0].patterns[1].start_date))
    eq_(disruption_pb.impacts[0].application_patterns[1].end_date,
        get_pos_date(disruption.impacts[0].patterns[1].end_date))
    # 1423094400 -> 2015-02-05 00:00:00
    eq_(disruption_pb.impacts[0].application_patterns[1].start_date, 1423094400)
    # 1423180800 -> 2015-02-06 00:00:00
    eq_(disruption_pb.impacts[0].application_patterns[1].end_date, 1423180800)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.monday, True)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.tuesday, True)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.wednesday, True)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.thursday, True)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.friday, True)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.saturday, True)
    eq_(disruption_pb.impacts[0].application_patterns[1].week_pattern.sunday, True)
    eq_(len(disruption_pb.impacts[0].application_patterns[0].time_slots), 1)
    # "time_slots": [{"begin": "17:45", "end": "19:30"}]
    eq_(disruption_pb.impacts[0].application_patterns[1].time_slots[0].begin, 63900)
    eq_(disruption_pb.impacts[0].application_patterns[1].time_slots[0].end, 70200)
예제 #7
0
def test_disruption_without_cause():
    disruption = get_disruption('KISIO-DIGITAL')
    del disruption.cause
    feed_entity = populate_pb(disruption)
예제 #8
0
def test_disruption_with_impact_without_severity():
    disruption = get_disruption('KISIO-DIGITAL')
    del disruption.impacts[0].severity
    feed_entity = populate_pb(disruption)
예제 #9
0
def test_disruption_is_deleted():
    disruption = get_disruption('KISIO-DIGITAL')
    disruption.status = 'archived'
    feed_entity = populate_pb(disruption).entity[0]

    eq_(feed_entity.is_deleted, True)
예제 #10
0
def test_disruption_without_routes():
    disruption = get_disruption('KISIO-DIGITAL', False, False)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]

    eq_(disruption_pb.reference, disruption.reference)
    eq_(disruption_pb.cause.wording, disruption.cause.wording)
    eq_(len(disruption_pb.localization), 1)
    eq_(disruption_pb.localization[0].uri, disruption.localizations[0].uri)
    eq_(len(disruption_pb.tags), 2)
    eq_(disruption_pb.tags[0].name, disruption.tags[0].name)
    eq_(disruption_pb.tags[1].name, disruption.tags[1].name)

    eq_(len(disruption_pb.impacts), 3)
    eq_(disruption_pb.impacts[0].severity.wording,
        "Severity_with_priority_NULL")
    eq_(disruption_pb.impacts[0].severity.color, "#FFFF00")

    eq_(len(disruption_pb.impacts[0].application_periods), 1)
    eq_(len(disruption_pb.impacts[0].informed_entities), 5)
    eq_(disruption_pb.impacts[0].informed_entities[0].uri,
        disruption.impacts[0].objects[0].uri)
    eq_(disruption_pb.impacts[0].informed_entities[0].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[0].type))
    eq_(disruption_pb.impacts[0].informed_entities[1].uri,
        disruption.impacts[0].objects[1].uri)
    eq_(disruption_pb.impacts[0].informed_entities[1].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[1].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].uri,
        disruption.impacts[0].objects[2].uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[2].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.uri,
        disruption.impacts[0].objects[2].line_section.line.uri)
    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.
        pt_object_type,
        get_pt_object_type(
            disruption.impacts[0].objects[2].line_section.line.type))

    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        start_point.uri,
        disruption.impacts[0].objects[2].line_section.start_point.uri)
    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        start_point.pt_object_type,
        get_pt_object_type(
            disruption.impacts[0].objects[2].line_section.start_point.type))

    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        end_point.uri,
        disruption.impacts[0].objects[2].line_section.end_point.uri)
    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        end_point.pt_object_type,
        get_pt_object_type(
            disruption.impacts[0].objects[2].line_section.end_point.type))

    eq_(disruption_pb.impacts[0].informed_entities[3].uri,
        disruption.impacts[0].objects[3].uri)
    eq_(disruption_pb.impacts[0].informed_entities[3].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[3].type))

    eq_(
        len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.
            routes), 0)
    eq_(len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.via),
        0)
    eq_(disruption_pb.impacts[0].messages[0].text,
        disruption.impacts[0].messages[0].text)
    eq_(disruption_pb.impacts[0].messages[0].channel.name,
        disruption.impacts[0].messages[0].channel.name)
    eq_(disruption_pb.impacts[0].messages[0].channel.max_size,
        disruption.impacts[0].messages[0].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[0].channel.content_type,
        disruption.impacts[0].messages[0].channel.content_type)
    eq_(
        disruption_pb.impacts[0].messages[0].channel.types[0],
        get_channel_type(
            disruption.impacts[0].messages[0].channel.channel_types[0].name))
    eq_(
        disruption_pb.impacts[0].messages[0].channel.types[1],
        get_channel_type(
            disruption.impacts[0].messages[0].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].messages[1].text,
        disruption.impacts[0].messages[1].text)
    eq_(disruption_pb.impacts[0].messages[1].channel.name,
        disruption.impacts[0].messages[1].channel.name)
    eq_(disruption_pb.impacts[0].messages[1].channel.max_size,
        disruption.impacts[0].messages[1].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[1].channel.content_type,
        disruption.impacts[0].messages[1].channel.content_type)
    eq_(
        disruption_pb.impacts[0].messages[1].channel.types[0],
        get_channel_type(
            disruption.impacts[0].messages[1].channel.channel_types[0].name))
    eq_(
        disruption_pb.impacts[0].messages[1].channel.types[1],
        get_channel_type(
            disruption.impacts[0].messages[1].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[1].HasField('send_notifications'), True)
    eq_(disruption_pb.impacts[1].send_notifications, True)
    eq_(disruption_pb.impacts[2].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[0].HasField('notification_date'), False)
    eq_(disruption_pb.impacts[1].HasField('notification_date'), True)
    eq_(
        disruption_pb.impacts[1].notification_date,
        get_pos_time(
            parse_datetime("2014-04-12T16:52:00").replace(tzinfo=None)))
    eq_(disruption_pb.impacts[2].HasField('notification_date'), False)
예제 #11
0
def test_disruption():
    disruption = get_disruption(None)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]
    eq_(disruption_pb.HasField('contributor'), False)
    eq_(disruption_pb.reference, disruption.reference)
    eq_(disruption_pb.cause.wording, disruption.cause.wording)
    eq_(len(disruption_pb.cause.wordings), 2)
    eq_(disruption_pb.cause.category.name, disruption.cause.category.name)
    eq_(len(disruption_pb.localization), 1)
    eq_(disruption_pb.localization[0].uri, disruption.localizations[0].uri)
    eq_(len(disruption_pb.tags), 2)
    eq_(disruption_pb.tags[0].name, disruption.tags[0].name)
    eq_(disruption_pb.tags[1].name, disruption.tags[1].name)

    eq_(len(disruption_pb.properties), 1)
    eq_(disruption_pb.properties[0].key, 'key')
    eq_(disruption_pb.properties[0].type, 'type')
    eq_(disruption_pb.properties[0].value, '42')

    eq_(len(disruption_pb.impacts), 3)
    eq_(disruption_pb.impacts[0].severity.wording,
        "Severity_with_priority_NULL")
    eq_(disruption_pb.impacts[0].severity.color, "#FFFF00")
    eq_(disruption_pb.impacts[0].severity.effect,
        chaos.gtfs_realtime_pb2.Alert.NO_SERVICE)
    eq_(disruption_pb.impacts[0].severity.priority, 0)
    eq_(disruption_pb.impacts[1].severity.wording, "Severity_with_priority_0")
    eq_(disruption_pb.impacts[1].severity.priority, 0)
    eq_(disruption_pb.impacts[2].severity.wording, "Severity_with_priority_2")
    eq_(disruption_pb.impacts[2].severity.priority, 2)

    eq_(len(disruption_pb.impacts[0].application_periods), 1)
    eq_(len(disruption_pb.impacts[0].informed_entities), 5)

    eq_(disruption_pb.impacts[0].informed_entities[0].uri,
        disruption.impacts[0].objects[0].uri)
    eq_(disruption_pb.impacts[0].informed_entities[0].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[0].type))

    eq_(disruption_pb.impacts[0].informed_entities[1].uri,
        disruption.impacts[0].objects[1].uri)
    eq_(disruption_pb.impacts[0].informed_entities[1].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[1].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].uri,
        disruption.impacts[0].objects[2].uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[2].type))

    eq_(disruption_pb.impacts[0].informed_entities[3].uri,
        disruption.impacts[0].objects[3].uri)
    eq_(disruption_pb.impacts[0].informed_entities[3].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[3].type))

    eq_(disruption_pb.impacts[0].informed_entities[4].uri,
        disruption.impacts[0].objects[4].uri)
    eq_(disruption_pb.impacts[0].informed_entities[4].pt_object_type,
        get_pt_object_type(disruption.impacts[0].objects[4].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.uri,
        disruption.impacts[0].objects[2].line_section.line.uri)
    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.
        pt_object_type,
        get_pt_object_type(
            disruption.impacts[0].objects[2].line_section.line.type))

    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        start_point.uri,
        disruption.impacts[0].objects[2].line_section.start_point.uri)
    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        start_point.pt_object_type,
        get_pt_object_type(
            disruption.impacts[0].objects[2].line_section.start_point.type))

    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        end_point.uri,
        disruption.impacts[0].objects[2].line_section.end_point.uri)
    eq_(
        disruption_pb.impacts[0].informed_entities[2].pt_line_section.
        end_point.pt_object_type,
        get_pt_object_type(
            disruption.impacts[0].objects[2].line_section.end_point.type))

    eq_(
        len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.
            routes), 2)
    eq_(len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.via),
        2)

    eq_(disruption_pb.impacts[0].messages[0].text,
        disruption.impacts[0].messages[0].text)
    eq_(disruption_pb.impacts[0].messages[0].channel.name,
        disruption.impacts[0].messages[0].channel.name)
    eq_(disruption_pb.impacts[0].messages[0].channel.max_size,
        disruption.impacts[0].messages[0].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[0].channel.content_type,
        disruption.impacts[0].messages[0].channel.content_type)
    eq_(
        disruption_pb.impacts[0].messages[0].channel.types[0],
        get_channel_type(
            disruption.impacts[0].messages[0].channel.channel_types[0].name))
    eq_(
        disruption_pb.impacts[0].messages[0].channel.types[1],
        get_channel_type(
            disruption.impacts[0].messages[0].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].messages[1].text,
        disruption.impacts[0].messages[1].text)
    eq_(disruption_pb.impacts[0].messages[1].channel.name,
        disruption.impacts[0].messages[1].channel.name)
    eq_(disruption_pb.impacts[0].messages[1].channel.max_size,
        disruption.impacts[0].messages[1].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[1].channel.content_type,
        disruption.impacts[0].messages[1].channel.content_type)
    eq_(
        disruption_pb.impacts[0].messages[1].channel.types[0],
        get_channel_type(
            disruption.impacts[0].messages[1].channel.channel_types[0].name))
    eq_(
        disruption_pb.impacts[0].messages[1].channel.types[1],
        get_channel_type(
            disruption.impacts[0].messages[1].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[1].HasField('send_notifications'), True)
    eq_(disruption_pb.impacts[1].send_notifications, True)
    eq_(disruption_pb.impacts[2].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[0].HasField('notification_date'), False)
    eq_(disruption_pb.impacts[1].HasField('notification_date'), True)
    eq_(
        disruption_pb.impacts[1].notification_date,
        get_pos_time(
            parse_datetime("2014-04-12T16:52:00").replace(tzinfo=None)))
    eq_(disruption_pb.impacts[2].HasField('notification_date'), False)
예제 #12
0
def test_disruption_without_cause():
    disruption = get_disruption('KISIO-DIGITAL')
    del disruption.cause
    feed_entity = populate_pb(disruption)
예제 #13
0
def test_disruption_with_impact_without_severity():
    disruption = get_disruption('KISIO-DIGITAL')
    del disruption.impacts[0].severity
    feed_entity = populate_pb(disruption)
예제 #14
0
def test_disruption_is_deleted():
    disruption = get_disruption('KISIO-DIGITAL')
    disruption.status = 'archived'
    feed_entity = populate_pb(disruption).entity[0]

    eq_(feed_entity.is_deleted, True)
예제 #15
0
def test_disruption_without_routes():
    disruption = get_disruption('KISIO-DIGITAL', False, False)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]

    eq_(disruption_pb.reference, disruption.reference)
    eq_(disruption_pb.cause.wording, disruption.cause.wording)
    eq_(len(disruption_pb.localization), 1)
    eq_(disruption_pb.localization[0].uri,  disruption.localizations[0].uri)
    eq_(len(disruption_pb.tags), 2)
    eq_(disruption_pb.tags[0].name, disruption.tags[0].name)
    eq_(disruption_pb.tags[1].name, disruption.tags[1].name)


    eq_(len(disruption_pb.impacts), 3)
    eq_(disruption_pb.impacts[0].severity.wording, "Severity_with_priority_NULL")
    eq_(disruption_pb.impacts[0].severity.color, "#FFFF00")

    eq_(len(disruption_pb.impacts[0].application_periods), 1)
    eq_(len(disruption_pb.impacts[0].informed_entities), 5)
    eq_(disruption_pb.impacts[0].informed_entities[0].uri, disruption.impacts[0].objects[0].uri)
    eq_(disruption_pb.impacts[0].informed_entities[0].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[0].type))
    eq_(disruption_pb.impacts[0].informed_entities[1].uri, disruption.impacts[0].objects[1].uri)
    eq_(disruption_pb.impacts[0].informed_entities[1].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[1].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].uri, disruption.impacts[0].objects[2].uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.uri,
    disruption.impacts[0].objects[2].line_section.line.uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].line_section.line.type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.start_point.uri,
    disruption.impacts[0].objects[2].line_section.start_point.uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.start_point.pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].line_section.start_point.type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.end_point.uri,
    disruption.impacts[0].objects[2].line_section.end_point.uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.end_point.pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].line_section.end_point.type))

    eq_(disruption_pb.impacts[0].informed_entities[3].uri, disruption.impacts[0].objects[3].uri)
    eq_(disruption_pb.impacts[0].informed_entities[3].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[3].type))

    eq_(len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.routes), 0)
    eq_(len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.via), 0)
    eq_(disruption_pb.impacts[0].messages[0].text, disruption.impacts[0].messages[0].text)
    eq_(disruption_pb.impacts[0].messages[0].channel.name, disruption.impacts[0].messages[0].channel.name)
    eq_(disruption_pb.impacts[0].messages[0].channel.max_size, disruption.impacts[0].messages[0].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[0].channel.content_type,
    disruption.impacts[0].messages[0].channel.content_type)
    eq_(disruption_pb.impacts[0].messages[0].channel.types[0], get_channel_type(disruption.impacts[0].messages[0].channel.channel_types[0].name))
    eq_(disruption_pb.impacts[0].messages[0].channel.types[1], get_channel_type(disruption.impacts[0].messages[0].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].messages[1].text, disruption.impacts[0].messages[1].text)
    eq_(disruption_pb.impacts[0].messages[1].channel.name, disruption.impacts[0].messages[1].channel.name)
    eq_(disruption_pb.impacts[0].messages[1].channel.max_size, disruption.impacts[0].messages[1].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[1].channel.content_type,
    disruption.impacts[0].messages[1].channel.content_type)
    eq_(disruption_pb.impacts[0].messages[1].channel.types[0], get_channel_type(disruption.impacts[0].messages[1].channel.channel_types[0].name))
    eq_(disruption_pb.impacts[0].messages[1].channel.types[1], get_channel_type(disruption.impacts[0].messages[1].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[1].HasField('send_notifications'), True)
    eq_(disruption_pb.impacts[1].send_notifications, True)
    eq_(disruption_pb.impacts[2].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[0].HasField('notification_date'), False)
    eq_(disruption_pb.impacts[1].HasField('notification_date'), True)
    eq_(disruption_pb.impacts[1].notification_date, get_pos_time(parse_datetime("2014-04-12T16:52:00").replace(tzinfo=None)))
    eq_(disruption_pb.impacts[2].HasField('notification_date'), False)
예제 #16
0
def test_disruption():
    disruption = get_disruption(None)
    feed_entity = populate_pb(disruption).entity[0]
    eq_(feed_entity.is_deleted, False)
    disruption_pb = feed_entity.Extensions[chaos.chaos_pb2.disruption]
    eq_(disruption_pb.HasField('contributor'),  False)
    eq_(disruption_pb.reference,  disruption.reference)
    eq_(disruption_pb.cause.wording,  disruption.cause.wording)
    eq_(len(disruption_pb.cause.wordings), 2)
    eq_(disruption_pb.cause.category.name, disruption.cause.category.name)
    eq_(len(disruption_pb.localization),  1)
    eq_(disruption_pb.localization[0].uri,  disruption.localizations[0].uri)
    eq_(len(disruption_pb.tags),  2)
    eq_(disruption_pb.tags[0].name,  disruption.tags[0].name)
    eq_(disruption_pb.tags[1].name,  disruption.tags[1].name)

    eq_(len(disruption_pb.properties), 1)
    eq_(disruption_pb.properties[0].key, 'key')
    eq_(disruption_pb.properties[0].type, 'type')
    eq_(disruption_pb.properties[0].value, '42')

    eq_(len(disruption_pb.impacts),  3)
    eq_(disruption_pb.impacts[0].severity.wording,  "Severity_with_priority_NULL")
    eq_(disruption_pb.impacts[0].severity.color,  "#FFFF00")
    eq_(disruption_pb.impacts[0].severity.effect, chaos.gtfs_realtime_pb2.Alert.NO_SERVICE)
    eq_(disruption_pb.impacts[0].severity.priority,  0)
    eq_(disruption_pb.impacts[1].severity.wording,  "Severity_with_priority_0")
    eq_(disruption_pb.impacts[1].severity.priority,  0)
    eq_(disruption_pb.impacts[2].severity.wording,  "Severity_with_priority_2")
    eq_(disruption_pb.impacts[2].severity.priority,  2)

    eq_(len(disruption_pb.impacts[0].application_periods),  1)
    eq_(len(disruption_pb.impacts[0].informed_entities), 5)

    eq_(disruption_pb.impacts[0].informed_entities[0].uri, disruption.impacts[0].objects[0].uri)
    eq_(disruption_pb.impacts[0].informed_entities[0].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[0].type))

    eq_(disruption_pb.impacts[0].informed_entities[1].uri, disruption.impacts[0].objects[1].uri)
    eq_(disruption_pb.impacts[0].informed_entities[1].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[1].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].uri, disruption.impacts[0].objects[2].uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].type))

    eq_(disruption_pb.impacts[0].informed_entities[3].uri, disruption.impacts[0].objects[3].uri)
    eq_(disruption_pb.impacts[0].informed_entities[3].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[3].type))

    eq_(disruption_pb.impacts[0].informed_entities[4].uri, disruption.impacts[0].objects[4].uri)
    eq_(disruption_pb.impacts[0].informed_entities[4].pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[4].type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.uri,
    disruption.impacts[0].objects[2].line_section.line.uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.line.pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].line_section.line.type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.start_point.uri,
    disruption.impacts[0].objects[2].line_section.start_point.uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.start_point.pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].line_section.start_point.type))

    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.end_point.uri,
    disruption.impacts[0].objects[2].line_section.end_point.uri)
    eq_(disruption_pb.impacts[0].informed_entities[2].pt_line_section.end_point.pt_object_type,
    get_pt_object_type(disruption.impacts[0].objects[2].line_section.end_point.type))

    eq_(len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.routes), 2)
    eq_(len(disruption_pb.impacts[0].informed_entities[2].pt_line_section.via), 2)

    eq_(disruption_pb.impacts[0].messages[0].text, disruption.impacts[0].messages[0].text)
    eq_(disruption_pb.impacts[0].messages[0].channel.name, disruption.impacts[0].messages[0].channel.name)
    eq_(disruption_pb.impacts[0].messages[0].channel.max_size, disruption.impacts[0].messages[0].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[0].channel.content_type,
    disruption.impacts[0].messages[0].channel.content_type)
    eq_(disruption_pb.impacts[0].messages[0].channel.types[0], get_channel_type(disruption.impacts[0].messages[0].channel.channel_types[0].name))
    eq_(disruption_pb.impacts[0].messages[0].channel.types[1], get_channel_type(disruption.impacts[0].messages[0].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].messages[1].text, disruption.impacts[0].messages[1].text)
    eq_(disruption_pb.impacts[0].messages[1].channel.name, disruption.impacts[0].messages[1].channel.name)
    eq_(disruption_pb.impacts[0].messages[1].channel.max_size, disruption.impacts[0].messages[1].channel.max_size)
    eq_(disruption_pb.impacts[0].messages[1].channel.content_type,
    disruption.impacts[0].messages[1].channel.content_type)
    eq_(disruption_pb.impacts[0].messages[1].channel.types[0], get_channel_type(disruption.impacts[0].messages[1].channel.channel_types[0].name))
    eq_(disruption_pb.impacts[0].messages[1].channel.types[1], get_channel_type(disruption.impacts[0].messages[1].channel.channel_types[1].name))

    eq_(disruption_pb.impacts[0].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[1].HasField('send_notifications'), True)
    eq_(disruption_pb.impacts[1].send_notifications, True)
    eq_(disruption_pb.impacts[2].HasField('send_notifications'), False)
    eq_(disruption_pb.impacts[0].HasField('notification_date'), False)
    eq_(disruption_pb.impacts[1].HasField('notification_date'), True)
    eq_(disruption_pb.impacts[1].notification_date, get_pos_time(parse_datetime("2014-04-12T16:52:00").replace(tzinfo=None)))
    eq_(disruption_pb.impacts[2].HasField('notification_date'), False)