diff --git a/beembase/objects.py b/beembase/objects.py index 1e3cdd93a085683b66b5917482b767e471dcc1af..3ba66dfc31b6cce322e0c2fbed886ffb56696634 100644 --- a/beembase/objects.py +++ b/beembase/objects.py @@ -48,12 +48,13 @@ class Amount(object): self.amount = d[0] self.asset = d[2] self.precision = d[1] - self.str_repr = d + a = Array([String(d[0]), d[1], d[2]]) + self.str_repr = str(a.__str__()) else: self.amount = d.amount self.asset = d.symbol self.precision = d.asset["precision"] - self.str_repr = d.json() + self.str_repr = json.dumps((d.json())) def __bytes__(self): # padding diff --git a/beemgraphenebase/types.py b/beemgraphenebase/types.py index 73f7976eb3486e92a5ce681256458c02981518d7..c88759ee383cb034f320a3e4b9edc05d1ea978ff 100644 --- a/beemgraphenebase/types.py +++ b/beemgraphenebase/types.py @@ -248,7 +248,10 @@ class Array(object): r = [] for a in self.data: try: - r.append(JsonObj(a)) + if isinstance(a, String): + r.append(str(a)) + else: + r.append(JsonObj(a)) except Exception: r.append(str(a)) return json.dumps(r) diff --git a/tests/beembase/test_objects.py b/tests/beembase/test_objects.py new file mode 100644 index 0000000000000000000000000000000000000000..463631b5c68d44f760ad2c82f6aca444ef47155c --- /dev/null +++ b/tests/beembase/test_objects.py @@ -0,0 +1,37 @@ +from builtins import chr +from builtins import range +from builtins import str +import unittest +import hashlib +from binascii import hexlify, unhexlify +import os +import json +from pprint import pprint +from beembase.objects import Amount +from beembase.objects import Operation +from beemgraphenebase.types import ( + Uint8, Int16, Uint16, Uint32, Uint64, + Varint32, Int64, String, Bytes, Void, + Array, PointInTime, Signature, Bool, + Set, Fixed_array, Optional, Static_variant, + Map, Id +) + + +class Testcases(unittest.TestCase): + def test_Amount(self): + a = "1.000 STEEM" + t = Amount(a) + self.assertEqual(a, t.__str__()) + self.assertEqual(a, str(t)) + + a = ["3000", 3, "@@00000032"] + t = Amount(a) + # self.assertEqual(str(a), t.__str__()) + self.assertEqual(a, json.loads(str(t))) + + def test_Operation(self): + a = ['1000', 3, '@@000000013'] + j = ["transfer", {'from': 'a', 'to': 'b', 'amount': a, 'memo': 'c'}] + o = Operation(j) + self.assertEqual(o.json()[1], j[1]) diff --git a/tests/beembase/test_operations.py b/tests/beembase/test_operations.py index aabc1ddba0c0b6a19fa2040842de24043b3dfff7..2b17784b3256fb48743dc2833a5629b0cd59c7ae 100644 --- a/tests/beembase/test_operations.py +++ b/tests/beembase/test_operations.py @@ -6,21 +6,41 @@ from __future__ import unicode_literals from builtins import bytes from builtins import chr from builtins import range +from builtins import str import unittest import hashlib from binascii import hexlify, unhexlify import os import json from pprint import pprint +from beem.amount import Amount from beembase.operations import Transfer +from beembase.objects import Operation +from beembase.signedtransactions import Signed_Transaction +from beembase.chains import known_chains +wif = "5J4KCbg1G3my9b9hCaQXnHSm6vrwW9xQTJS6ZciW2Kek7cCkCEk" -class Testcases(unittest.TestCase): +class Testcases(unittest.TestCase): def test_Transfer(self): - transferJson = {'from': 'test', 'to': 'test1', 'amount': '1.000 SBD', 'memo': 'foobar'} + transferJson = {'from': 'test', 'to': 'test1', 'amount': "1.000 STEEM", 'memo': 'foobar'} t = Transfer(transferJson) self.assertEqual(transferJson, json.loads(str(t))) self.assertEqual(transferJson, t.json()) self.assertEqual(transferJson, t.toJson()) self.assertEqual(transferJson, t.__json__()) + + transferJson = {'from': 'test', 'to': 'test1', 'amount': ['3000', 3, '@@00000032'], 'memo': 'foobar'} + t = Transfer(transferJson) + self.assertEqual(transferJson, json.loads(str(t))) + self.assertEqual(transferJson, t.json()) + self.assertEqual(transferJson, t.toJson()) + self.assertEqual(transferJson, t.__json__()) + + o = Operation(Transfer(transferJson)) + self.assertEqual(o.json()[1], transferJson) + tx = {'ref_block_num': 0, 'ref_block_prefix': 0, 'expiration': '2018-04-07T09:30:53', 'operations': [o], 'extensions': [], 'signatures': []} + s = Signed_Transaction(tx) + s.sign(wifkeys=[wif], chain="STEEMAPPBASE") + self.assertEqual(s.json()["operations"][0][1], transferJson) diff --git a/tests/beemgraphene/test_objects.py b/tests/beemgraphene/test_objects.py new file mode 100644 index 0000000000000000000000000000000000000000..195038d55b5fae7a322b21d64e1dc4878261e9a6 --- /dev/null +++ b/tests/beemgraphene/test_objects.py @@ -0,0 +1,31 @@ +# This Python file uses the following encoding: utf-8 +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals +import unittest +import json +from beemgraphenebase import objects +from beemgraphenebase import types +from beem.amount import Amount +from beem import Steem + + +class Testcases(unittest.TestCase): + def test_GrapheneObject(self): + j = {"a": 2, "b": "abcde", "c": ["a", "b"]} + j2 = objects.GrapheneObject(j) + self.assertEqual(j, j2.data) + self.assertEqual(json.loads(j2.__str__()), j2.json()) + + a = objects.Array(['1000', 3, '@@000000013']) + j = {"a": a} + j2 = objects.GrapheneObject(j) + self.assertEqual(j, j2.data) + self.assertEqual(json.loads(j2.__str__()), j2.json()) + + a = types.Array(['1000', 3, '@@000000013']) + j = {"a": a} + j2 = objects.GrapheneObject(j) + self.assertEqual(j, j2.data) + self.assertEqual(json.loads(j2.__str__()), j2.json())