Browse Source

added comparison operators for Order

Fabian Peter Hammerle 8 years ago
parent
commit
e11ac0d518
3 changed files with 136 additions and 103 deletions
  1. 7 0
      dingguo/__init__.py
  2. 0 103
      tests/test_.py
  3. 129 0
      tests/test_comparison.py

+ 7 - 0
dingguo/__init__.py

@@ -165,6 +165,13 @@ class Order(object):
 
         return order
 
+    def __eq__(self, other):
+        return (type(self) == type(other)
+                and vars(self) == vars(other))
+
+    def __ne__(self, other):
+        return not (self == other)
+
 yaml.SafeDumper.add_representer(Order, lambda dumper, order: dumper.represent_dict(order.dict_repr()))
 
 class Item(object):

+ 0 - 103
tests/test_.py

@@ -7,9 +7,6 @@ import dingguo
 import yaml
 import os
 
-project_root_path = os.path.realpath(os.path.join(__file__, '..', '..'))
-test_data_path = os.path.join(project_root_path, 'tests', 'data')
-
 def test_order_dict_repr():
 
     order = dingguo.Order(
@@ -107,106 +104,6 @@ def test_order_from_dict_tree():
     assert order.order_id == u'id'
     assert order.platform == u'platform'
 
-def test_figure_eq():
-    assert dingguo.Figure(1, u'mm') == dingguo.Figure(1, u'mm')
-
-def test_figure_eq_inverted():
-    assert not dingguo.Figure(1, u'mm') == dingguo.Figure(2, u'mm')
-
-def test_figure_ne():
-    assert dingguo.Figure(1, u'mm') != dingguo.Figure(2, u'mm')
-
-def test_figure_ne_inverted():
-    assert not dingguo.Figure(1, u'mm') != dingguo.Figure(1, u'mm')
-
-def test_item_eq():
-    item_a = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(1.0, u'EUR'),
-            )
-    item_b = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(1.0, u'EUR'),
-            )
-    assert item_a == item_b
-
-def test_item_eq_inverted():
-    item_a = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(1.0, u'EUR'),
-            )
-    item_b = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(2.0, u'EUR'),
-            )
-    assert not item_a == item_b
-
-def test_item_ne():
-    item_a = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(1.0, u'EUR'),
-            )
-    item_b = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(2.0, u'EUR'),
-            )
-    assert item_a != item_b
-
-def test_item_ne_inverted():
-    item_a = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(1.0, u'EUR'),
-            )
-    item_b = dingguo.Item(
-            name = u'item',
-            price_brutto = dingguo.Sum(1.0, u'EUR'),
-            )
-    assert not item_a != item_b
-
-def test_discount_eq():
-    discount_a = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(1.0, u'EUR'),
-            )
-    discount_b = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(1.0, u'EUR'),
-            )
-    assert discount_a == discount_b
-
-def test_discount_eq_inverted():
-    discount_a = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(1.0, u'EUR'),
-            )
-    discount_b = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(2.0, u'EUR'),
-            )
-    assert not discount_a == discount_b
-
-def test_discount_ne():
-    discount_a = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(1.0, u'EUR'),
-            )
-    discount_b = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(2.0, u'EUR'),
-            )
-    assert discount_a != discount_b
-
-def test_discount_ne_inverted():
-    discount_a = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(1.0, u'EUR'),
-            )
-    discount_b = dingguo.Discount(
-            name = u'discount',
-            amount = dingguo.Sum(1.0, u'EUR'),
-            )
-    assert not discount_a != discount_b
-
 def test_item_from_dict():
 
     item = dingguo.Item.from_dict({

+ 129 - 0
tests/test_comparison.py

@@ -0,0 +1,129 @@
+# -*- coding: utf-8 -*-
+
+import pytest
+
+import datetime
+import dingguo
+import yaml
+import os
+
+def get_item_a():
+    return dingguo.Item(
+            name = u'item',
+            price_brutto = dingguo.Sum(1.0, u'EUR'),
+            )
+def get_item_b():
+    return dingguo.Item(
+            name = u'item',
+            price_brutto = dingguo.Sum(2.0, u'EUR'),
+            )
+
+def get_discount_a():
+    return dingguo.Discount(
+            name = u'discount',
+            amount = dingguo.Sum(1.0, u'EUR'),
+            )
+
+def get_discount_b():
+    return dingguo.Discount(
+            name = u'discount',
+            amount = dingguo.Sum(2.0, u'EUR'),
+            )
+
+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())
+    order.discounts.append(get_discount_a())
+    order.discounts.append(get_discount_b())
+    return order
+
+def get_order_b():
+    order = dingguo.Order(
+            platform = u'platform',
+            order_id = u'id',
+            order_date = datetime.datetime(2016, 5, 8, 0, 18, 17),
+            )
+    order.items.append(get_item_a())
+    order.items.append(get_item_b())
+    order.discounts.append(get_discount_a())
+    order.discounts.append(get_discount_b())
+    return order
+
+def get_order_c():
+    order = dingguo.Order(
+            platform = u'platform',
+            order_id = u'id',
+            order_date = datetime.datetime(2016, 5, 8, 0, 18, 17),
+            )
+    order.items.append(get_item_a())
+    order.items.append(get_item_b())
+    order.items.append(get_item_b())
+    order.discounts.append(get_discount_a())
+    order.discounts.append(get_discount_b())
+    return order
+
+def test_figure_eq():
+    assert dingguo.Figure(1, u'mm') == dingguo.Figure(1, u'mm')
+
+def test_figure_eq_inverted():
+    assert not dingguo.Figure(1, u'mm') == dingguo.Figure(2, u'mm')
+
+def test_figure_ne():
+    assert dingguo.Figure(1, u'mm') != dingguo.Figure(2, u'mm')
+
+def test_figure_ne_inverted():
+    assert not dingguo.Figure(1, u'mm') != dingguo.Figure(1, u'mm')
+
+def test_item_eq():
+    assert get_item_a() == get_item_a()
+    assert get_item_b() == get_item_b()
+
+def test_item_eq_inverted():
+    assert not get_item_a() == get_item_b()
+
+def test_item_ne():
+    assert get_item_a() != get_item_b()
+
+def test_item_ne_inverted():
+    assert not get_item_a() != get_item_a()
+    assert not get_item_b() != get_item_b()
+
+def test_discount_eq():
+    assert get_discount_a() == get_discount_a()
+    assert get_discount_b() == get_discount_b()
+
+def test_discount_eq_inverted():
+    assert not get_discount_a() == get_discount_b()
+
+def test_discount_ne():
+    assert get_discount_a() != get_discount_b()
+
+def test_discount_ne_inverted():
+    assert not get_discount_a() != get_discount_a()
+    assert not get_discount_b() != get_discount_b()
+
+def test_order_eq():
+    assert get_order_a() == get_order_a()
+    assert get_order_b() == get_order_b()
+    assert get_order_c() == get_order_c()
+
+def test_order_eq_inverted():
+    assert not get_order_a() == get_order_c()
+    assert not get_order_b() == get_order_a()
+    assert not get_order_c() == get_order_b()
+
+def test_order_neq():
+    assert get_order_a() != get_order_c()
+    assert get_order_b() != get_order_a()
+    assert get_order_c() != get_order_b()
+
+def test_order_neq_inverted():
+    assert not get_order_a() != get_order_a()
+    assert not get_order_b() != get_order_b()
+    assert not get_order_c() != get_order_c()