def test_get_pos_time(): dates = [ datetime.datetime(2014, 1, 14, 9, 0), datetime.datetime(2014, 8, 14, 12, 0), datetime.datetime(2014, 3, 29, 2, 0) ] for d in dates: eq_(d, datetime.datetime.utcfromtimestamp(get_pos_time(d)))
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)