def test_get_traffic_report_with_impact_on_stop_areas_2_networks(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = get_pt_object impact = chaos.models.Impact() line = chaos.models.PTobject() line.type = 'stop_area' line.uri = 'stop_area:uri2' impact.objects.append(line) result = { "network:uri4": { "network": { "id": "network:uri4", "name": "network 4 name" }, "stop_areas": [{'id': 'stop_area:uri2', 'name': 'stop area 2 name', "impacts": [impact]}] }, "network:uri5": { "network": { "id": "network:uri5", "name": "network 5 name" }, "stop_areas": [{'id': 'stop_area:uri2', 'name': 'stop area 2 name', "impacts": [impact]}] } } dd = get_traffic_report_objects([impact], navitia) eq_(cmp(dd["traffic_report"], result), 0)
def test_get_traffic_report_with_2_impact_on_stop_area(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = get_pt_object impacts = [] impact = chaos.models.Impact() stop_area = chaos.models.PTobject() stop_area.type = 'stop_area' stop_area.uri = 'stop_area:uri1' impact.objects.append(stop_area) impacts.append(impact) impact = chaos.models.Impact() stop_area = chaos.models.PTobject() stop_area.type = 'stop_area' stop_area.uri = 'stop_area:uri1' impact.objects.append(stop_area) impacts.append(impact) result = { "network:uri3": { "network": { "id": "network:uri3", "name": "network 3 name" }, "stop_areas": [{'id': 'stop_area:uri1', 'name': 'stop area 1 name', "impacts": impacts}] } } dd = get_traffic_report_objects(impacts, navitia) eq_(cmp(dd["traffic_report"], result), 0)
def test_get_traffic_report_with_impact_on_networks(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = get_pt_object impact = chaos.models.Impact() line = chaos.models.PTobject() line.type = 'network' line.uri = 'network:uri1' impact.objects.append(line) line = chaos.models.PTobject() line.type = 'network' line.uri = 'network:uri2' impact.objects.append(line) result = { "network:uri1": { "network": { "id": "network:uri1", "name": "network 1 name", "impacts": [impact] } }, "network:uri2": { "network": { "id": "network:uri2", "name": "network 2 name", "impacts": [impact] } } } dd = get_traffic_report_objects([impact], navitia) eq_(cmp(dd["traffic_report"], result), 0)
def get(self, contributor, navitia): self.navitia = navitia args = self.parsers['get'].parse_args() g.current_time = args['current_time'] disruptions = models.Disruption.traffic_report_filter(contributor.id) # Prepare line sections to get them all in once pt_object_ids = [] for disruption in disruptions: for impact in (i for i in disruption.impacts if i.status == 'published'): for pt_object in impact.objects: pt_object_ids.append(pt_object.id) line_sections = models.LineSection.get_by_ids(pt_object_ids) line_sections_by_objid = {} for line_section in line_sections: line_sections_by_objid[line_section.object_id] = line_section result = utils.get_traffic_report_objects(disruptions, self.navitia, line_sections_by_objid) return marshal( { 'traffic_reports': [value for key, value in result["traffic_report"].items()], 'disruptions': result["impacts_used"] }, traffic_reports_marshaler), 200
def get(self, contributor, navitia): self.navitia = navitia args = self.parsers['get'].parse_args() g.current_time = args['current_time'] impacts = models.Impact.traffic_report_filter(contributor.id) result = utils.get_traffic_report_objects(impacts, self.navitia) return marshal({'traffic_reports': [value for key, value in result["traffic_report"].items()], "disruptions": result["impacts_used"]}, traffic_reports_marshaler), 200
def get(self, contributor, navitia): self.navitia = navitia args = self.parsers['get'].parse_args() g.current_time = args['current_time'] impacts = models.Impact.traffic_report_filter(contributor.id) result = utils.get_traffic_report_objects(impacts, self.navitia) return marshal( { 'traffic_reports': [value for key, value in result["traffic_report"].items()], 'disruptions': result["impacts_used"] }, traffic_reports_marshaler), 200
def test_get_traffic_report_with_network(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = MagicMock(return_value={"id": "uri1", "name": "network name"}) network = chaos.models.PTobject() network.type = 'network' network.uri = 'uri1' impact = chaos.models.Impact() impact.objects.append(network) result = { "uri1": { "network": { "id": "uri1", "name": "network name", "impacts": [impact] } } } dd = get_traffic_report_objects([impact], navitia) eq_(cmp(dd["traffic_report"], result), 0)
def test_get_traffic_report_with_impact_on_networks(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = get_pt_object disruption = chaos.models.Disruption() impact = chaos.models.Impact() impact.status = 'published' line = chaos.models.PTobject() line.type = 'network' line.uri = 'network:uri1' impact.objects.append(line) line = chaos.models.PTobject() line.type = 'network' line.uri = 'network:uri2' impact.objects.append(line) disruption.impacts.append(impact) result = { "network:uri1": { "network": { "id": "network:uri1", "name": "network 1 name", "impacts": [impact] } }, "network:uri2": { "network": { "id": "network:uri2", "name": "network 2 name", "impacts": [impact] } } } dd = get_traffic_report_objects([disruption], navitia, {}, []) eq_(cmp(dd["traffic_report"], result), 0)
def test_get_traffic_report_with_impact_on_stop_areas_2_networks_and_filter_activated(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = get_pt_object disruption = chaos.models.Disruption() impact = chaos.models.Impact() impact.status = 'published' line = chaos.models.PTobject() line.type = 'stop_area' line.uri = 'stop_area:uri2' impact.objects.append(line) disruption.impacts.append(impact) result = { "network:uri5": { "network": { "id": "network:uri5", "name": "network 5 name" }, "stop_areas": [{'id': 'stop_area:uri2', 'name': 'stop area 2 name', "impacts": [impact]}] } } dd = get_traffic_report_objects([disruption], navitia, {}, ["network:uri5"]) eq_(cmp(dd["traffic_report"], result), 0)
def test_get_traffic_report_with_impact_on_line_sections(): navitia = chaos.navitia.Navitia('http://api.navitia.io', 'jdr') navitia.get_pt_object = get_pt_object impact = chaos.models.Impact() #LineSection ptobject = chaos.models.PTobject() ptobject.uri = "line_section:123" ptobject.type = "line_section" ptobject.line_section = chaos.models.LineSection() ptobject.line_section.id = '7ffab234-3d49-4eea-aa2c-22f8680230b6' ptobject.line_section.sens = 1 ptobject.line_section.line = chaos.models.PTobject() ptobject.line_section.line.uri = 'line:uri3' ptobject.line_section.line.type = 'line' ptobject.line_section.start_point = chaos.models.PTobject() ptobject.line_section.start_point.uri = 'stop_area:1' ptobject.line_section.start_point.type = 'stop_area' ptobject.line_section.end_point = chaos.models.PTobject() ptobject.line_section.end_point.uri = 'stop_area:2' ptobject.line_section.end_point.type = 'stop_area' impact.objects.append(ptobject) result = { "network:uri1": { "network": { "id": "network:uri1", "name": "network 1 name" }, "line_sections": [ { "id": "7ffab234-3d49-4eea-aa2c-22f8680230b6", "line_section": { "end_point": { "id": "stop_area:2", "type": "stop_area" }, "line": { "id": "line:uri3", "name": "line 3 name", "type": "line", "code": "line 3 code" }, "start_point": { "id": "stop_area:1", "type": "stop_area" }, "routes": [], "via": [], "metas": [] }, "type": "line_section", "impacts": [impact] } ] } } dd = get_traffic_report_objects([impact], navitia) eq_(cmp(dd["traffic_report"], result), 0)
def test_get_traffic_report_without_objects(): impact = chaos.models.Impact() dd = get_traffic_report_objects([impact], Obj()) eq_(len(dd["traffic_report"].items()), 0)
def test_get_traffic_report_objects(): dd = get_traffic_report_objects([], Obj()) eq_(len(dd["traffic_report"].items()), 0)
def test_get_traffic_report_without_objects(): disruption = chaos.models.Disruption() dd = get_traffic_report_objects([disruption], Obj(), {}, []) eq_(len(dd["traffic_report"].items()), 0)