|
@@ -5,11 +5,9 @@ import pytest
|
|
|
import os
|
|
|
import yaml
|
|
|
import dingguo
|
|
|
+import difflib
|
|
|
import datetime
|
|
|
|
|
|
-project_root_path = os.path.realpath(os.path.join(__file__, '..', '..'))
|
|
|
-test_data_path = os.path.join(project_root_path, 'tests', 'data')
|
|
|
-
|
|
|
def get_figure_a():
|
|
|
return dingguo.Figure(12.3, u'km')
|
|
|
|
|
@@ -22,9 +20,38 @@ def get_sum_a():
|
|
|
def get_sum_b():
|
|
|
return dingguo.Sum(20.45, u'€')
|
|
|
|
|
|
+def get_item_a():
|
|
|
+ return dingguo.Item(
|
|
|
+ name = u'item a',
|
|
|
+ price_brutto = get_sum_a(),
|
|
|
+ )
|
|
|
+
|
|
|
+def get_item_b():
|
|
|
+ return dingguo.Item(
|
|
|
+ name = u'item β',
|
|
|
+ price_brutto = get_sum_b(),
|
|
|
+ )
|
|
|
+
|
|
|
+def get_order_a():
|
|
|
+ order = dingguo.Order(
|
|
|
+ platform = u'platformπ',
|
|
|
+ order_id = u'id',
|
|
|
+ order_date = datetime.datetime(2016, 5, 8, 0, 18, 17),
|
|
|
+ customer_id = u'customer',
|
|
|
+ )
|
|
|
+ order.items.append(get_item_a())
|
|
|
+ order.items.append(get_item_b())
|
|
|
+ return order
|
|
|
+
|
|
|
def to_yaml(data):
|
|
|
return yaml.dump(data, default_flow_style = False, allow_unicode = True).decode('utf-8')
|
|
|
|
|
|
+def yaml_diff(a, b):
|
|
|
+ return '\n'.join(difflib.ndiff(
|
|
|
+ to_yaml(a).split('\n'),
|
|
|
+ to_yaml(b).split('\n'),
|
|
|
+ ))
|
|
|
+
|
|
|
def test_figure_to_yaml():
|
|
|
assert to_yaml(get_figure_a()) == u"""!figure
|
|
|
unit: km
|
|
@@ -63,3 +90,61 @@ def test_sum_from_yaml_a_sign():
|
|
|
|
|
|
def test_sum_from_yaml_a_quotes():
|
|
|
assert get_sum_a() == yaml.load(u"!sum 'EUR 1.23'")
|
|
|
+
|
|
|
+def test_item_to_yaml_a():
|
|
|
+ assert to_yaml(get_item_a()) == u"""!item
|
|
|
+name: item a
|
|
|
+price_brutto: !sum 'EUR 1.23'
|
|
|
+"""
|
|
|
+
|
|
|
+def test_item_to_yaml_b():
|
|
|
+ assert to_yaml(get_item_b()) == u"""!item
|
|
|
+name: item β
|
|
|
+price_brutto: !sum 'EUR 20.45'
|
|
|
+"""
|
|
|
+
|
|
|
+def test_item_from_yaml_a():
|
|
|
+ assert get_item_a() == yaml.load(u"""!item
|
|
|
+name: item a
|
|
|
+price_brutto: !sum 'EUR 1.23'
|
|
|
+""")
|
|
|
+
|
|
|
+def test_item_from_yaml_b():
|
|
|
+ assert get_item_b() == yaml.load(u"""!item
|
|
|
+name: item β
|
|
|
+price_brutto: !sum 'EUR 20.45'
|
|
|
+""")
|
|
|
+
|
|
|
+def test_order_to_yaml():
|
|
|
+ assert to_yaml(get_order_a()) == u"""!order
|
|
|
+customer_id: customer
|
|
|
+discounts: []
|
|
|
+items:
|
|
|
+- !item
|
|
|
+ name: item a
|
|
|
+ price_brutto: !sum 'EUR 1.23'
|
|
|
+- !item
|
|
|
+ name: item β
|
|
|
+ price_brutto: !sum 'EUR 20.45'
|
|
|
+order_date: 2016-05-08
|
|
|
+order_id: id
|
|
|
+platform: platformπ
|
|
|
+"""
|
|
|
+
|
|
|
+def test_order_from_yaml():
|
|
|
+ order_loaded = yaml.load(u"""!order
|
|
|
+customer_id: customer
|
|
|
+discounts: []
|
|
|
+items:
|
|
|
+- !item
|
|
|
+ name: item a
|
|
|
+ price_brutto: !sum 'EUR 1.23'
|
|
|
+- !item
|
|
|
+ name: item β
|
|
|
+ price_brutto: !sum 'EUR 20.45'
|
|
|
+order_date: 2016-05-08
|
|
|
+order_id: id
|
|
|
+platform: platformπ
|
|
|
+""")
|
|
|
+ order_expected = get_order_a()
|
|
|
+ assert order_expected == order_loaded, yaml_diff(order_expected, order_loaded)
|