Browse Source

yaml support for taxi rides

Fabian Peter Hammerle 8 years ago
parent
commit
6d6a4d7676
2 changed files with 48 additions and 1 deletions
  1. 10 1
      dingguo/__init__.py
  2. 38 0
      tests/test_yaml.py

+ 10 - 1
dingguo/__init__.py

@@ -352,7 +352,16 @@ yaml.SafeDumper.add_representer(Transportation, lambda dumper, transportation: d
 
 class TaxiRide(Transportation):
 
-    def __init__(self, name = None, driver = None, arrival_time = None, departure_time = None, **kwargs):
+    yaml_tag = u'!taxi-ride'
+
+    def __init__(
+            self,
+            arrival_time = None,
+            departure_time = None,
+            driver = None,
+            name = None,
+            **kwargs
+            ):
         if name is None:
             name = u'Taxi Ride'
         super(TaxiRide, self).__init__(name = name, **kwargs)

+ 38 - 0
tests/test_yaml.py

@@ -52,6 +52,18 @@ def get_transportation():
             distance = dingguo.Distance(3.21, u'km'),
             )
 
+def get_taxi_ride():
+    return dingguo.TaxiRide(
+            name = u'taxi ride',
+            price_brutto = get_sum_a(),
+            departure_point = u'home',
+            destination_point = u'city',
+            distance = dingguo.Distance(3.21, u'km'),
+            driver = u'driver',
+            arrival_time = datetime.datetime(2016, 5, 2, 18, 10),
+            departure_time = datetime.datetime(2016, 5, 2, 18, 25),
+            )
+
 def get_discount_a():
     return dingguo.Discount(
             name = u'discount a',
@@ -281,3 +293,29 @@ name: ticket
 price_brutto: !sum '1.23 EUR'
 route_map: null
 """)
+
+def test_taxi_ride_to_yaml():
+    assert to_yaml(get_taxi_ride()) == u"""!taxi-ride
+arrival_time: 2016-05-02 18:10:00
+departure_point: home
+departure_time: 2016-05-02 18:25:00
+destination_point: city
+distance: !distance '3.21 km'
+driver: driver
+name: taxi ride
+price_brutto: !sum '1.23 EUR'
+route_map: null
+"""
+
+def test_taxi_ride_from_yaml():
+    assert get_taxi_ride() == yaml.load(u"""!taxi-ride
+arrival_time: 2016-05-02 18:10:00
+departure_point: home
+departure_time: 2016-05-02 18:25:00
+destination_point: city
+distance: !distance '3.21 km'
+driver: driver
+name: taxi ride
+price_brutto: !sum '1.23 EUR'
+route_map: null
+""")