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)
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 )
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 )
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)
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)
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)
def test_disruption_without_cause(): disruption = get_disruption('KISIO-DIGITAL') del disruption.cause feed_entity = populate_pb(disruption)
def test_disruption_with_impact_without_severity(): disruption = get_disruption('KISIO-DIGITAL') del disruption.impacts[0].severity feed_entity = populate_pb(disruption)
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)
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)
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)
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)
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)