def test_parse_forecast__unknown_rating__parses_with_unknown_rating(self):
     actual_forecast = dict(
         parse_forecast(read_file('./test/fixtures/unknownrating.html')))
     expected_forecast = dict(
         Forecast.from_json(
             read_file('./test/fixtures/unknownrating.json')))
     self.assertEqual(expected_forecast, actual_forecast)
Beispiel #2
0
    def test_format_segments(self):
        segments = Forecast.from_json(
            read_file('./test/fixtures/sangre.segments.json'))
        segments = format_segments(segments, joined=True)
        expected_text = read_file('./test/fixtures/sangre.txt').strip()

        self.assertEqual(1, len(segments))
        self.assertEqual(expected_text, segments[0].strip())
Beispiel #3
0
    def test_forecast_to_segments(self):
        forecast = Forecast.from_json(read_file('./test/fixtures/sangre.json'))
        actual_segments = forecast_to_segments(forecast)
        expected_segments = jsonpickle.decode(
            read_file('./test/fixtures/sangre.segments.json'))

        self.assertEqual(jsonpickle.encode(expected_segments),
                         jsonpickle.encode(actual_segments))

        self.assertEqual(jsonpickle.encode(expected_segments),
                         jsonpickle.encode(actual_segments))
 def test_parse_forecast(self):
     actual_forecast = dict(
         parse_forecast(read_file('./test/fixtures/sangre.html')))
     expected_forecast = dict(
         Forecast.from_json(read_file('./test/fixtures/sangre.json')))
     self.assertEqual(expected_forecast, actual_forecast)
Beispiel #5
0
        filter(is_not_None,
               ["Avalanche dangers", *map(convert_danger_to_text, dangers)]))


@safe(safe_return_value="Avalanche Forecast", log=LOG)
def convert_header_to_text(forecast):
    return " - ".join(
        filter(is_not_None,
               [ZONE_TO_TEXT.get(forecast.zone, None), forecast.date]))


@safe(log=LOG)
def forecast_to_segments(forecast):
    segments = [
        convert_header_to_text(forecast),
        convert_all_dangers_to_text(forecast.dangers),
        *[convert_problem_to_text(p) for p in forecast.problems],
        *[convert_warning_to_text(w) for w in forecast.warnings],
    ]

    segments = filter(lambda s: s is not None, segments)
    return list(segments)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    args = parser.parse_args()

    forecast = Forecast.from_json(sys.stdin)
    print(jsonpickle.encode(forecast_to_segments(forecast)), end='')