def setUp(self): self.longMessage = True # Print complete error message on failure self.maxDiff = None # View the complete diff when there is a mismatch in a test self.interface = TransactionsInterface() self.asset_manager_id = 1 self.asset = generate_asset(asset_manager_id=self.asset_manager_id, fungible=True) self.asset_book = generate_book(asset_manager_id=self.asset_manager_id) self.counterparty_book = generate_book( asset_manager_id=self.asset_manager_id) self.transaction1 = generate_transaction( asset_manager_id=self.asset_manager_id, asset_id=self.asset.asset_id, asset_book_id=self.asset_book.book_id, counterparty_book_id=self.counterparty_book.book_id, transaction_currency='USD', net_affecting_charges=True, charge_currency='USD') self.transaction2 = generate_transaction( asset_manager_id=self.asset_manager_id, asset_id=self.asset.asset_id, asset_book_id=self.asset_book.book_id, counterparty_book_id=self.counterparty_book.book_id, transaction_currency='USD', net_affecting_charges=True, charge_currency='USD') self.setup_cache() self.interface.new(self.transaction1) self.interface.new(self.transaction2) self.transaction_id1 = self.transaction1.transaction_id self.transaction_id2 = self.transaction2.transaction_id
def setUp(self): self.longMessage = True # Print complete error message on failure self.maxDiff = None # View the complete diff when there is a mismatch in a test self.interface = TransactionsInterface() self.asset_manager_id = random.randint(1, 2**31-1) self.asset = generate_asset(asset_manager_id=self.asset_manager_id, fungible=True) self.trader_one_book = generate_book(asset_manager_id=self.asset_manager_id) self.trader_two_book = generate_book(asset_manager_id=self.asset_manager_id) self.wash_book = generate_book(asset_manager_id=self.asset_manager_id) self.setup_cache()
def setUp(self): self.longMessage = True # Print complete error message on failure self.maxDiff = None # View the complete diff when there is a mismatch in a test self.asset_manager_id = random.randint(1, 2**31-1) self.asset = generate_asset(asset_manager_id=self.asset_manager_id) self.asset_book = generate_book(asset_manager_id=self.asset_manager_id) self.counterparty_book = generate_book(asset_manager_id=self.asset_manager_id) self.transaction = generate_transaction(asset_manager_id=self.asset_manager_id, asset_id=self.asset.asset_id, asset_book_id=self.asset_book.book_id, counterparty_book_id=self.counterparty_book.book_id) self.transaction_id = self.transaction.transaction_id self.setup_cache()
def test_BookConfigByAssetManager(self): book = generate_book() self.books_interface.new(book) book_config = self.books_interface.book_config(asset_manager_id=book.asset_manager_id) self.assertEqual(len(book_config.keys()), 3) self.assertEqual(len(book_config.get('business_unit')), 1) self.assertEqual(len(book_config.get('owner_id')), 1) self.assertEqual(len(book_config.get('party_id')), 1)
def setUp(self): self.longMessage = True # Print complete error message on failure self.maxDiff = None # View the complete diff when there is a mismatch in a test self.transactions_interface = TransactionsInterface(environment=STAGE) self.assets_interface = AssetsInterface(environment=STAGE) self.books_interface = BooksInterface(environment=STAGE) self.asset_manager_id = 1 self.asset = generate_asset(asset_manager_id=self.asset_manager_id) self.asset_book = generate_book(asset_manager_id=self.asset_manager_id) self.counterparty_book = generate_book( asset_manager_id=self.asset_manager_id) self.transaction = generate_transaction( asset_manager_id=self.asset_manager_id, asset_id=self.asset.asset_id, asset_book_id=self.asset_book.book_id, counterparty_book_id=self.counterparty_book.book_id) self.transaction_id = self.transaction.transaction_id self.setup_cache()
def test_BooksToCSVStream(self): # Books have no children so test this case as well. file_desc, temp_filepath = tempfile.mkstemp() books = [generate_book() for i in range(5)] with open(temp_filepath, 'w') as temp_file: objects_to_csv_stream(objects=books, stream=temp_file, clazz=Book) # Read the file back out again with open(temp_filepath, 'r') as temp_file: data = temp_file.readlines() self.assertEqual(len(data), 6) # 5 books + header os.close(file_desc) os.remove(temp_filepath)
def test_AllocationWithExplictID(self): transaction = generate_transaction( asset_manager_id=self.asset_manager_id, asset_id=self.asset.asset_id, asset_book_id=self.asset_book.book_id, counterparty_book_id=self.counterparty_book.book_id, quantity=Decimal('100')) self.transactions_interface.new(transaction) partial_tran_id = transaction.transaction_id[:10] allocation_dicts = [{ 'book_id': 'ABC', 'quantity': Decimal('60'), 'transaction_id': partial_tran_id + '_ABC' }, { 'book_id': 'XYZ', 'quantity': Decimal('40'), 'transaction_id': partial_tran_id + '_XYZ' }] abc_book = generate_book(asset_manager_id=self.asset_manager_id, book_id='ABC') xyz_book = generate_book(asset_manager_id=self.asset_manager_id, book_id='XYZ') self.create_transaction_book(abc_book) self.create_transaction_book(xyz_book) allocations = self.transactions_interface.allocate_transaction( asset_manager_id=self.asset_manager_id, transaction_id=transaction.transaction_id, allocation_type='counterparty', allocation_dicts=allocation_dicts) self.assertEqual(len(allocations), 2) book_ids = sorted( [allocation.counterparty_book_id for allocation in allocations]) self.assertEqual(book_ids, ['ABC', 'XYZ']) quantities = sorted( [allocation.quantity for allocation in allocations]) self.assertEqual(quantities, [Decimal('40'), Decimal('60')]) transaction_ids = sorted( [allocation.transaction_id for allocation in allocations]) self.assertEqual(transaction_ids, [partial_tran_id + '_ABC', partial_tran_id + '_XYZ'])
def test_Allocations(self): transaction = generate_transaction( asset_manager_id=self.asset_manager_id, asset_id=self.asset.asset_id, asset_book_id=self.asset_book.book_id, counterparty_book_id=self.counterparty_book.book_id, quantity=Decimal('100')) transaction.charges['TEST'] = Charge(charge_value=Decimal('10'), currency='SGD') self.transactions_interface.new(transaction) allocation_dicts = [{ 'book_id': 'ABC', 'quantity': Decimal('40') }, { 'book_id': 'XYZ', 'quantity': Decimal('60') }] abc_book = generate_book(asset_manager_id=self.asset_manager_id, book_id='ABC') xyz_book = generate_book(asset_manager_id=self.asset_manager_id, book_id='XYZ') self.create_transaction_book(abc_book) self.create_transaction_book(xyz_book) allocations = self.transactions_interface.allocate_transaction( asset_manager_id=self.asset_manager_id, transaction_id=transaction.transaction_id, allocation_type='asset_manager', allocation_dicts=allocation_dicts) self.assertEqual(len(allocations), 2) book_ids = sorted( [allocation.asset_book_id for allocation in allocations]) self.assertEqual(book_ids, ['ABC', 'XYZ']) quantities = sorted( [allocation.quantity for allocation in allocations]) self.assertEqual(quantities, [Decimal('40'), Decimal('60')]) charges = sorted([ allocation.charges.get('TEST').charge_value for allocation in allocations ]) self.assertEqual(charges, [Decimal('4'), Decimal('6')])
def setUp(self): self.longMessage = True # Print complete error message on failure self.book = generate_book(asset_manager_id=self.asset_manager_id) self.book_id = self.book.book_id
def test_InvalidBookType(self): with self.assertRaisesRegexp(ValueError, 'Invalid book type Invalid'): book = generate_book(book_type='Invalid')