예제 #1
0
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)
예제 #2
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)
예제 #3
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)
예제 #4
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
예제 #5
0
 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
예제 #6
0
파일: resources.py 프로젝트: nberard/Chaos
 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
예제 #7
0
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)
예제 #8
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)
예제 #9
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)
예제 #10
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)
예제 #11
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)
예제 #12
0
def test_get_traffic_report_objects():
    dd = get_traffic_report_objects([], Obj())
    eq_(len(dd["traffic_report"].items()), 0)
예제 #13
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)