mirror of
https://github.com/gooba42/adventureland.git
synced 2026-10-24 05:31:26 -05:00
Open source
This commit is contained in:
+366
@@ -0,0 +1,366 @@
|
||||
from libraries.stripe.test.helper import (
|
||||
StripeApiTestCase, MyUpdateable
|
||||
)
|
||||
|
||||
|
||||
class UpdateableAPIResourceTests(StripeApiTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(UpdateableAPIResourceTests, self).setUp()
|
||||
|
||||
self.mock_response({
|
||||
'thats': 'it'
|
||||
})
|
||||
|
||||
self.obj = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'foo': 'bar',
|
||||
'baz': 'boz',
|
||||
'metadata': {
|
||||
'size': 'l',
|
||||
'score': 4,
|
||||
'height': 10
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
def checkSave(self):
|
||||
self.assertTrue(self.obj is self.obj.save())
|
||||
|
||||
self.assertEqual('it', self.obj.thats)
|
||||
# TODO: Should we force id to be retained?
|
||||
# self.assertEqual('myid', obj.id)
|
||||
self.assertRaises(AttributeError, getattr, self.obj, 'baz')
|
||||
|
||||
def test_idempotent_save(self):
|
||||
self.obj.baz = 'updated'
|
||||
self.obj.save(idempotency_key='foo')
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'metadata': {},
|
||||
'baz': 'updated',
|
||||
},
|
||||
{
|
||||
'Idempotency-Key': 'foo',
|
||||
},
|
||||
)
|
||||
|
||||
def test_save(self):
|
||||
self.obj.baz = 'updated'
|
||||
self.obj.other = 'newval'
|
||||
self.obj.metadata.size = 'm'
|
||||
self.obj.metadata.info = 'a2'
|
||||
self.obj.metadata.height = None
|
||||
|
||||
self.checkSave()
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'baz': 'updated',
|
||||
'other': 'newval',
|
||||
'metadata': {
|
||||
'size': 'm',
|
||||
'info': 'a2',
|
||||
'height': '',
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_add_key_to_nested_object(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'size': 'l',
|
||||
'score': 4,
|
||||
'height': 10
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
acct.legal_entity['first_name'] = 'bob'
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'legal_entity': {
|
||||
'first_name': 'bob',
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_save_nothing(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'metadata': {
|
||||
'key': 'value',
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
# Note: ideally, we'd want the library to NOT issue requests in this
|
||||
# case (i.e. the assert should actually be `assert_not_called()`).
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{'metadata': {}},
|
||||
None
|
||||
)
|
||||
|
||||
def test_replace_nested_object(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'last_name': 'smith',
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
acct.legal_entity = {
|
||||
'first_name': 'bob',
|
||||
}
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'legal_entity': {
|
||||
'first_name': 'bob',
|
||||
'last_name': '',
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_array_setting(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {}
|
||||
}, 'mykey')
|
||||
|
||||
acct.legal_entity.additional_owners = [{'first_name': 'Bob'}]
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'legal_entity': {
|
||||
'additional_owners': [
|
||||
{'first_name': 'Bob'}
|
||||
]
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_array_none(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'additional_owners': None,
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
acct.foo = 'bar'
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'foo': 'bar',
|
||||
'legal_entity': {},
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_array_insertion(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'additional_owners': []
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
acct.legal_entity.additional_owners.append({'first_name': 'Bob'})
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'legal_entity': {
|
||||
'additional_owners': {
|
||||
'0': {'first_name': 'Bob'},
|
||||
}
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_array_update(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'additional_owners': [
|
||||
{'first_name': 'Bob'},
|
||||
{'first_name': 'Jane'}
|
||||
]
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
acct.legal_entity.additional_owners[1].first_name = 'Janet'
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'legal_entity': {
|
||||
'additional_owners': {
|
||||
'0': {},
|
||||
'1': {'first_name': 'Janet'}
|
||||
}
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_array_noop(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'additional_owners': [{'first_name': 'Bob'}]
|
||||
},
|
||||
'currencies_supported': ['usd', 'cad']
|
||||
}, 'mykey')
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'legal_entity': {'additional_owners': {'0': {}}}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_hash_noop(self):
|
||||
acct = MyUpdateable.construct_from({
|
||||
'id': 'myid',
|
||||
'legal_entity': {
|
||||
'address': {'line1': '1 Two Three'}
|
||||
}
|
||||
}, 'mykey')
|
||||
|
||||
self.assertTrue(acct is acct.save())
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{'legal_entity': {'address': {}}},
|
||||
None
|
||||
)
|
||||
|
||||
def test_save_replace_metadata_with_number(self):
|
||||
self.obj.baz = 'updated'
|
||||
self.obj.other = 'newval'
|
||||
self.obj.metadata = 3
|
||||
|
||||
self.checkSave()
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'baz': 'updated',
|
||||
'other': 'newval',
|
||||
'metadata': 3,
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_save_overwrite_metadata(self):
|
||||
self.obj.metadata = {}
|
||||
self.checkSave()
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'metadata': {
|
||||
'size': '',
|
||||
'score': '',
|
||||
'height': '',
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_save_replace_metadata(self):
|
||||
self.obj.baz = 'updated'
|
||||
self.obj.other = 'newval'
|
||||
self.obj.metadata = {
|
||||
'size': 'm',
|
||||
'info': 'a2',
|
||||
'score': 4,
|
||||
}
|
||||
|
||||
self.checkSave()
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'baz': 'updated',
|
||||
'other': 'newval',
|
||||
'metadata': {
|
||||
'size': 'm',
|
||||
'info': 'a2',
|
||||
'height': '',
|
||||
'score': 4,
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
|
||||
def test_save_update_metadata(self):
|
||||
self.obj.baz = 'updated'
|
||||
self.obj.other = 'newval'
|
||||
self.obj.metadata.update({
|
||||
'size': 'm',
|
||||
'info': 'a2',
|
||||
'score': 4,
|
||||
})
|
||||
|
||||
self.checkSave()
|
||||
|
||||
self.requestor_mock.request.assert_called_with(
|
||||
'post',
|
||||
'/v1/myupdateables/myid',
|
||||
{
|
||||
'baz': 'updated',
|
||||
'other': 'newval',
|
||||
'metadata': {
|
||||
'size': 'm',
|
||||
'info': 'a2',
|
||||
'score': 4,
|
||||
}
|
||||
},
|
||||
None
|
||||
)
|
||||
Reference in New Issue
Block a user