def test_parse_corp_contact_list(self): api_result, _, _ = make_api_result("corp/contact_list.xml") result = contact_list.parse_contact_list(api_result) expected_result = { 'corp': { 1082138174: {'standing': 10.0, 'id': 1082138174, 'name': 'Nomad LLP', 'in_watchlist': None}, 1086308227: {'standing': 0.0, 'id': 1086308227, 'name': 'Rebel Alliance of New Eden', 'in_watchlist': None}, 1113838907: {'standing': -10.0, 'id': 1113838907, 'name': 'Significant other', 'in_watchlist': None} }, 'alliance': { 2049763943: {'standing': -10.0, 'id': 2049763943, 'name': 'EntroPraetorian Aegis', 'in_watchlist': None}, 2067199408: {'standing': -10.0, 'id': 2067199408, 'name': 'Vera Cruz Alliance', 'in_watchlist': None}, 2081065875: {'standing': -10.0, 'id': 2081065875, 'name': 'TheRedMaple', 'in_watchlist': None} }, } self.assertEqual(result['alliance'], expected_result['alliance']) self.assertEqual(result['corp'], expected_result['corp']) self.assertFalse('personal' in result) self.assertEqual(sorted(result.keys()), sorted(expected_result.keys()))
def test_parse_contract_items(self): api_result = make_api_result("char/contract_items.xml") result = evelink_c.parse_contract_items(api_result) self.assertEqual(result, [ {'id': 779703190, 'quantity': 490, 'type_id': 17867, 'action': 'offered', 'singleton': False}, {'id': 779703191, 'quantity': 60, 'type_id': 17868, 'action': 'offered', 'singleton': False}, {'id': 779703192, 'quantity': 8360, 'type_id': 1228, 'action': 'offered', 'singleton': False}, {'id': 779703193, 'quantity': 16617, 'type_id': 1228, 'action': 'offered', 'singleton': False}, ])
def test_parse_contracts(self): self.maxDiff = None api_result = make_api_result("corp/contracts.xml") result = evelink_c.parse_contracts(api_result) self.assertEqual(result, { 5966: { 'id': 5966, 'issuer': 154416088, 'issuer_corp': 154430949, 'assignee': 0, 'acceptor': 0, 'start': 60014659, 'end': 60014659, 'type': 'ItemExchange', 'status': 'Outstanding', 'title': '', 'corp': False, 'availability': 'Public', 'issued': api.parse_ts('2010-02-23 11:28:00'), 'expired': api.parse_ts('2010-03-24 11:28:00'), 'accepted': None, 'completed': None, 'days': 0, 'price': 5000.0, 'reward': 0.0, 'collateral': 0.0, 'buyout': 0.0, 'volume': 0.01, }, 5968: { 'id': 5968, 'issuer': 154416088, 'issuer_corp': 154430949, 'assignee': 154430949, 'acceptor': 0, 'start': 60003760, 'end': 60003760, 'type': 'ItemExchange', 'status': 'Outstanding', 'title': '', 'corp': False, 'availability': 'Private', 'issued': api.parse_ts('2010-02-25 11:33:00'), 'expired': api.parse_ts('2010-03-26 11:33:00'), 'accepted': None, 'completed': None, 'days': 0, 'price': 0.00, 'reward': 0.00, 'collateral': 0.00, 'buyout': 0.00, 'volume': 0.03, } })
def test_parse_contracts(self): api_result, _, _ = make_api_result("corp/contracts.xml") result = evelink_c.parse_contracts(api_result) self.assertEqual( result, { 5966: { 'id': 5966, 'issuer': 154416088, 'issuer_corp': 154430949, 'assignee': 0, 'acceptor': 0, 'start': 60014659, 'end': 60014659, 'type': 'ItemExchange', 'status': 'Outstanding', 'title': '', 'corp': False, 'availability': 'Public', 'issued': api.parse_ts('2010-02-23 11:28:00'), 'expired': api.parse_ts('2010-03-24 11:28:00'), 'accepted': None, 'completed': None, 'days': 0, 'price': 5000.0, 'reward': 0.0, 'collateral': 0.0, 'buyout': 0.0, 'volume': 0.01, }, 5968: { 'id': 5968, 'issuer': 154416088, 'issuer_corp': 154430949, 'assignee': 154430949, 'acceptor': 0, 'start': 60003760, 'end': 60003760, 'type': 'ItemExchange', 'status': 'Outstanding', 'title': '', 'corp': False, 'availability': 'Private', 'issued': api.parse_ts('2010-02-25 11:33:00'), 'expired': api.parse_ts('2010-03-26 11:33:00'), 'accepted': None, 'completed': None, 'days': 0, 'price': 0.00, 'reward': 0.00, 'collateral': 0.00, 'buyout': 0.00, 'volume': 0.03, } })
def test_parse_wallet_transactions(self): api_result = make_api_result("char/wallet_transactions.xml") result = evelink_w.parse_wallet_transactions(api_result) self.assertEqual(result, [ {'client': {'id': 1034922339, 'name': 'Elthana'}, 'id': 1309776438, 'action': 'buy', 'for': 'personal', 'journal_id': 6256809868L, 'price': 34101.06, 'quantity': 1, 'station': {'id': 60003760, 'name': 'Jita IV - Moon 4 - Caldari Navy Assembly Plant'}, 'timestamp': 1265513640, 'type': {'id': 20495, 'name': 'Information Warfare'}}, {'client': {'id': 1979235241, 'name': 'Daeja synn'}, 'id': 1307711508, 'action': 'buy', 'for': 'personal', 'journal_id': 6256808968L, 'price': 1169939.97, 'quantity': 1, 'station': {'id': 60015027, 'name': 'Uitra VI - Moon 4 - State War Academy School'}, 'timestamp': 1265392020, 'type': {'id': 11574, 'name': 'Wing Command'}}, {'client': {'id': 275581519, 'name': 'SPAIDERKA'}, 'char': {'id': 124, 'name': 'Bar'}, 'id': 1304203159, 'action': 'buy', 'for': 'personal', 'journal_id': 6256808878L, 'price': 13012.01, 'quantity': 2, 'station': {'id': 60003760, 'name': 'Jita IV - Moon 4 - Caldari Navy Assembly Plant'}, 'timestamp': 1265135280, 'type': {'id': 3349, 'name': 'Skirmish Warfare'}}, {'client': {'id': 1703231064, 'name': 'Der Suchende'}, 'char': {'id': 123, 'name': 'Foo'}, 'id': 1298649939, 'action': 'buy', 'for': 'personal', 'journal_id': 6256808869L, 'price': 556001.01, 'quantity': 1, 'station': {'id': 60004369, 'name': 'Ohmahailen V - Moon 7 - Corporate Police Force Assembly Plant'}, 'timestamp': 1264779900, 'type': {'id': 2410, 'name': 'Heavy Missile Launcher II'}} ])
def test_parse_planetary_links(self): api_result, _, _ = make_api_result("char/planetary_links.xml") result = evelink_pi.parse_planetary_links(api_result) self.assertEqual(result, { 1014990361645: {'source_id': 1014990361645, 'destination_id': 1014990361652, 'link_level': 0, }, 1014990361646: {'source_id': 1014990361646, 'destination_id': 1014990361652, 'link_level': 0, }, })
def test_parse_contract_bids(self): api_result, _, _ = make_api_result("char/contract_bids.xml") result = evelink_c.parse_contract_bids(api_result) self.assertEqual(result, [ {'id': 123456, 'contract_id': 8439234, 'bidder_id': 984127, 'timestamp': 1178692470, 'amount': 1958.12}, {'id': 4025870, 'contract_id': 58777338, 'bidder_id': 91397530, 'timestamp': 1345698201, 'amount': 14.0}, ])
def test_parse_planetary_colonies(self): api_result, _, _ = make_api_result("char/planetary_colonies.xml") result = evelink_pi.parse_planetary_colonies(api_result) self.assertEqual(result, { 40223494: {'id': 40223494, 'system': {'id': 30003522, 'name': 'Sarum Prime'}, 'planet': {'name': 'Sarum Prime IV', 'type': 13, 'type_name': 'Planet (Gas)'}, 'owner': {'id': 1133950739, 'name': 'BarbersHuZ'}, 'last_update': 1402305835, 'upgrade_level': 2, 'number_of_pins': 8, }, })
def run_gets(api_wrapper, method_name, src, *args, **kw): if kw.get('_client', None) is None: api = AppEngineAPI() client = api_wrapper(api=api) else: client = kw.pop('_client') api = client.api raw_resp = make_api_result(src) api.get = mock.Mock() api.get.return_value = raw_resp mock_async_method(api, 'get_async', raw_resp) sync = getattr(client, method_name) async = getattr(client, '%s_async' % method_name) return api, sync(*args, **kw), async(*args, **kw).get_result()
def run_gets(api_wrapper, method_name, src, *args, **kw): if kw.get('_client', None) is None: api = AppEngineAPI() client = api_wrapper(api=api) else: client = kw.pop('_client') api = client.api raw_resp = make_api_result(src) api.get = mock.Mock() api.get.return_value = raw_resp mock_async_method(api, 'get_async', raw_resp) sync = getattr(client, method_name) async = getattr(client, '%s_async' % method_name) return api, sync(*args, **kw), async (*args, **kw).get_result()
def test_parse_assets(self): api_result, _, _ = make_api_result("corp/assets.xml") result = evelink_a.parse_assets(api_result) self.assertEqual(result, { 30003719: { 'contents': [ {'contents': [ {'id': 1007353294812, 'item_type_id': 34, 'location_flag': 42, 'location_id': 30003719, 'packaged': True, 'quantity': 100}, {'id': 1007353294813, 'item_type_id': 34, 'location_flag': 42, 'location_id': 30003719, 'packaged': True, 'quantity': 200}], 'id': 1007222140712, 'item_type_id': 16216, 'location_flag': 0, 'location_id': 30003719, 'packaged': False, 'quantity': 1, 'raw_quantity': -1}], 'location_id': 30003719}, 67000050: { 'contents': [ {'id': 1007221285456, 'item_type_id': 13780, 'location_flag': 0, 'location_id': 67000050, 'packaged': False, 'quantity': 1, 'raw_quantity': -1}, {'id': 374680079, 'item_type_id': 973, 'location_flag': 0, 'location_id': 67000050, 'packaged': False, 'quantity': 1, 'raw_quantity': -2}], 'location_id': 67000050}})
def test_parse_planetary_routes(self): api_result, _, _ = make_api_result("char/planetary_routes.xml") result = evelink_pi.parse_planetary_routes(api_result) self.assertEqual(result, { 605707989: {'id': 605707989, 'source_id': 1014990361652, 'destination_id': 1014990361649, 'content': {'type': 2310, 'name': 'Noble Gas'}, 'quantity': 3000, 'path': (1014990361647, 1014990361650, 0, 0, 0), }, 605707990: {'id': 605707990, 'source_id': 1014990361652, 'destination_id': 1014990361647, 'content': {'type': 2311, 'name': 'Reactive Gas'}, 'quantity': 3000, 'path': (0, 0, 0, 0, 0), }, })
def test_parse_contract_bids(self): api_result, _, _ = make_api_result("char/contract_bids.xml") result = evelink_c.parse_contract_bids(api_result) self.assertEqual(result, [ { 'id': 123456, 'contract_id': 8439234, 'bidder_id': 984127, 'timestamp': 1178692470, 'amount': 1958.12 }, { 'id': 4025870, 'contract_id': 58777338, 'bidder_id': 91397530, 'timestamp': 1345698201, 'amount': 14.0 }, ])
def test_parse_char_contact_list(self): api_result, _, _ = make_api_result("char/contact_list.xml") result = contact_list.parse_contact_list(api_result) expected_result = { 'corp': { 1082138174: {'standing': 10.0, 'id': 1082138174, 'name': 'Nomad LLP', 'in_watchlist': None}, 1086308227: {'standing': 0.0, 'id': 1086308227, 'name': 'Rebel Alliance of New Eden', 'in_watchlist': None}, 1113838907: {'standing': -10.0, 'id': 1113838907, 'name': 'Significant other', 'in_watchlist': None} }, 'alliance': { 2049763943: {'standing': -10.0, 'id': 2049763943, 'name': 'EntroPraetorian Aegis', 'in_watchlist': None}, 2067199408: {'standing': -10.0, 'id': 2067199408, 'name': 'Vera Cruz Alliance', 'in_watchlist': None}, 2081065875: {'standing': -7.5, 'id': 2081065875, 'name': 'TheRedMaple', 'in_watchlist': None} }, 'personal': { 3009988: {'standing': 0.0, 'id': 3009988, 'name': 'Navittus Sildbena', 'in_watchlist': True}, 544497016: {'standing': 10.0, 'id': 544497016, 'name': 'Valkyries of Night', 'in_watchlist': False} } } self.assertEqual(result['personal'], expected_result['personal']) self.assertEqual(result['alliance'], expected_result['alliance']) self.assertEqual(result['corp'], expected_result['corp']) self.assertEqual(sorted(result.keys()), sorted(expected_result.keys()))
def test_parse_contract_items(self): api_result, _, _ = make_api_result("char/contract_items.xml") result = evelink_c.parse_contract_items(api_result) self.assertEqual( result, [ {"id": 779703190, "quantity": 490, "type_id": 17867, "action": "offered", "singleton": False}, {"id": 779703191, "quantity": 60, "type_id": 17868, "action": "offered", "singleton": False}, {"id": 779703192, "quantity": 8360, "type_id": 1228, "action": "offered", "singleton": False}, {"id": 779703193, "quantity": 16617, "type_id": 1228, "action": "offered", "singleton": False}, { "id": 779703194, "quantity": 1, "type_id": 973, "action": "offered", "singleton": True, "raw_quantity": -2, }, ], )
def test_parse_contract_items(self): api_result, _, _ = make_api_result("char/contract_items.xml") result = evelink_c.parse_contract_items(api_result) self.assertEqual(result, [ { 'id': 779703190, 'quantity': 490, 'type_id': 17867, 'action': 'offered', 'singleton': False }, { 'id': 779703191, 'quantity': 60, 'type_id': 17868, 'action': 'offered', 'singleton': False }, { 'id': 779703192, 'quantity': 8360, 'type_id': 1228, 'action': 'offered', 'singleton': False }, { 'id': 779703193, 'quantity': 16617, 'type_id': 1228, 'action': 'offered', 'singleton': False }, { 'id': 779703194, 'quantity': 1, 'type_id': 973, 'action': 'offered', 'singleton': True, 'raw_quantity': -2 }, ])
def test_parse_market_orders(self): api_result, _, _ = make_api_result("char/orders.xml") result = evelink_o.parse_market_orders(api_result) self.assertEqual( result, { 2579890411: { 'account_key': 1000, 'char_id': 91397530, 'duration': 90, 'amount': 2120, 'escrow': 0.0, 'id': 2579890411, 'type': 'sell', 'timestamp': 1340742712, 'price': 5100.0, 'range': 32767, 'amount_left': 2120, 'status': 'active', 'station_id': 60011866, 'type_id': 3689 }, 2584848036: { 'account_key': 1000, 'char_id': 91397530, 'duration': 90, 'amount': 1, 'escrow': 0.0, 'id': 2584848036, 'type': 'sell', 'timestamp': 1341183080, 'price': 250000.0, 'range': 32767, 'amount_left': 1, 'status': 'active', 'station_id': 60012550, 'type_id': 16399 } })
def test_corp_wallet_journal(self): api_result, _, _ = make_api_result("corp/wallet_journal.xml") result = evelink_w.parse_wallet_journal(api_result) self.assertEqual(result, [{ 'amount': 3843.75, 'balance': 119691201.37, 'party_2': {'name': 'Varax Artrald', 'id': 92229838, 'type': 1378}, 'type_id': 85, 'reason': '24156:1,', 'timestamp': 1349149240, 'tax': {'taxer_id': 0, 'amount': 0.0}, 'party_1': {'name': 'CONCORD', 'id': 1000125, 'type': 2}, 'arg': {'name': '9-F0B2', 'id': 30003704}, 'id': 6421767712}, { 'amount': 97500.0, 'balance': 119802845.12, 'party_2': {'name': 'Valkyries of Night', 'id': 544497016, 'type': 1378}, 'type_id': 60, 'reason': '', 'timestamp': 1349155785, 'tax': {'taxer_id': 0, 'amount': 0.0}, 'party_1': {'name': 'Valkyries of Night', 'id': 544497016, 'type': 2}, 'arg': {'name': '153187659', 'id': 0}, 'id': 6421966585}, { 'amount': 6250.0, 'balance': 119858095.12, 'party_2': {'name': 'Valkyries of Night', 'id': 544497016, 'type': 1378}, 'type_id': 57, 'reason': '', 'timestamp': 1349189425, 'tax': {'taxer_id': 0, 'amount': 0.0}, 'party_1': {'name': 'Valkyries of Night', 'id': 544497016, 'type': 2}, 'arg': {'name': '153219782', 'id': 0}, 'id': 6422968336} ])
def test_corp_wallet_journal(self): api_result, _, _ = make_api_result("corp/wallet_journal.xml") result = evelink_w.parse_wallet_journal(api_result) self.assertEqual(result, [{ 'amount': 3843.75, 'balance': 119691201.37, 'party_2': {'name': 'Varax Artrald', 'id': 92229838}, 'type_id': 85, 'reason': '24156:1,', 'timestamp': 1349149240, 'tax': {'taxer_id': 0, 'amount': 0.0}, 'party_1': {'name': 'CONCORD', 'id': 1000125}, 'arg': {'name': '9-F0B2', 'id': 30003704}, 'id': 6421767712}, { 'amount': 97500.0, 'balance': 119802845.12, 'party_2': {'name': 'Valkyries of Night', 'id': 544497016}, 'type_id': 60, 'reason': '', 'timestamp': 1349155785, 'tax': {'taxer_id': 0, 'amount': 0.0}, 'party_1': {'name': 'Valkyries of Night', 'id': 544497016}, 'arg': {'name': '153187659', 'id': 0}, 'id': 6421966585}, { 'amount': 6250.0, 'balance': 119858095.12, 'party_2': {'name': 'Valkyries of Night', 'id': 544497016}, 'type_id': 57, 'reason': '', 'timestamp': 1349189425, 'tax': {'taxer_id': 0, 'amount': 0.0}, 'party_1': {'name': 'Valkyries of Night', 'id': 544497016}, 'arg': {'name': '153219782', 'id': 0}, 'id': 6422968336} ])
def test_parse_market_orders(self): api_result, _, _ = make_api_result("char/orders.xml") result = evelink_o.parse_market_orders(api_result) self.assertEqual(result, { 2579890411L: { 'account_key': 1000, 'char_id': 91397530, 'duration': 90, 'amount': 2120, 'escrow': 0.0, 'id': 2579890411L, 'type': 'sell', 'timestamp': 1340742712, 'price': 5100.0, 'range': 32767, 'amount_left': 2120, 'status': 'active', 'station_id': 60011866, 'type_id': 3689}, 2584848036L: { 'account_key': 1000, 'char_id': 91397530, 'duration': 90, 'amount': 1, 'escrow': 0.0, 'id': 2584848036L, 'type': 'sell', 'timestamp': 1341183080, 'price': 250000.0, 'range': 32767, 'amount_left': 1, 'status': 'active', 'station_id': 60012550, 'type_id': 16399} })
def test_parse_kills(self): api_result, _, _ = make_api_result("char/kills.xml") result = evelink_k.parse_kills(api_result) self.assertEqual( result, { 15640545: { 'attackers': { 935091361: { 'alliance': { 'id': 5514808, 'name': 'Authorities of EVE' }, 'corp': { 'id': 224588600, 'name': 'Inkblot Squad' }, 'damage': 446, 'faction': { 'id': 0, 'name': '' }, 'final_blow': True, 'id': 935091361, 'name': 'ICU123', 'sec_status': -0.441287532452161, 'ship_type_id': 17932, 'weapon_type_id': 2881 } }, 'items': [{ 'destroyed': 0, 'dropped': 1, 'flag': 0, 'id': 5531 }, { 'destroyed': 750, 'dropped': 0, 'flag': 5, 'id': 16273 }, { 'destroyed': 1, 'dropped': 0, 'flag': 0, 'id': 21096 }, { 'destroyed': 1, 'dropped': 0, 'flag': 0, 'id': 2605 }], 'id': 15640545, 'moon_id': 0, 'system_id': 30001160, 'time': 1290612480, 'victim': { 'alliance': { 'id': 1254074, 'name': 'EVE Gurus' }, 'corp': { 'id': 1254875843, 'name': 'Starbase Anchoring Corp' }, 'damage': 446, 'faction': { 'id': 0, 'name': '' }, 'id': 150080271, 'name': 'Pilot 333', 'ship_type_id': 670 } }, 15640551: { 'attackers': { 935091361: { 'alliance': { 'id': 5514808, 'name': 'Authorities of EVE' }, 'corp': { 'id': 224588600, 'name': 'Inkblot Squad' }, 'damage': 446, 'faction': { 'id': 0, 'name': '' }, 'final_blow': True, 'id': 935091361, 'name': 'ICU123', 'sec_status': -0.441287532452161, 'ship_type_id': 17932, 'weapon_type_id': 2881 } }, 'items': [{ 'destroyed': 1, 'dropped': 0, 'flag': 14, 'id': 1319 }, { 'destroyed': 1, 'dropped': 0, 'flag': 28, 'id': 11370 }, { 'destroyed': 1, 'dropped': 0, 'flag': 93, 'id': 31119 }, { 'destroyed': 1, 'dropped': 0, 'flag': 5, 'id': 3467 }, { 'destroyed': 1, 'dropped': 0, 'flag': 0, 'id': 819 }, { 'destroyed': 2, 'dropped': 0, 'flag': 0, 'id': 4394 }, { 'destroyed': 0, 'dropped': 1, 'flag': 5, 'id': 11489 }, { 'destroyed': 0, 'dropped': 7, 'flag': 0, 'id': 9213 }, { 'destroyed': 0, 'dropped': 1, 'flag': 0, 'id': 4260 }, { 'destroyed': 0, 'dropped': 1, 'flag': 0, 'id': 9141 }], 'id': 15640551, 'moon_id': 0, 'system_id': 30001160, 'time': 1290612540, 'victim': { 'alliance': { 'id': 1254074, 'name': 'EVE Gurus' }, 'corp': { 'id': 1254875843, 'name': 'Starbase Anchoring Corp' }, 'damage': 446, 'faction': { 'id': 0, 'name': '' }, 'id': 150080271, 'name': 'Pilot 333', 'ship_type_id': 670 } } })
def test_parse_bookmarks(self): api_result, _, _ = make_api_result("char/bookmarks.xml") result = evelink_b.parse_bookmarks(api_result) self.assertEqual( result, { 0: { "bookmarks": { 12: { "created_ts": 1436391254, "creator_id": 90000001, "id": 12, "item_id": 60014689, "location_id": 30004971, "name": "Home Station", "note": "Our base of residence", "type_id": 57, "x": 0.0, "y": 0.0, "z": 0.0, }, 13: { "created_ts": 1436391307, "creator_id": 90000001, "id": 13, "item_id": 40314792, "location_id": 30004971, "name": "Sun", "note": "", "type_id": 8, "x": 0.0, "y": 0.0, "z": 0.0, }, }, "id": 0, "name": "", }, 1: {"bookmarks": {}, "id": 1, "name": "A lovely empty folder"}, 4: { "bookmarks": { 14: { "created_ts": 1436391368, "creator_id": 90000001, "id": 14, "item_id": 0, "location_id": 30004971, "name": "spot in Duripant solar system", "note": "", "type_id": 5, "x": -373405654941.733, "y": 42718621667.0746, "z": -1415023302173.46, } }, "id": 4, "name": "Random crap", }, }, )
def test_wallet_journal(self): api_result, _, _ = make_api_result("char/wallet_journal.xml") result = evelink_w.parse_wallet_journal(api_result) self.assertEqual(result, [{ 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402941'}, 'balance': 985620165.53, 'timestamp': 1291962600, 'id': 3605301231, 'party_1': {'id': 150337897, 'name': 'corpslave12', 'type': 2}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission', 'type': 1378}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402950'}, 'balance': 985610165.53, 'timestamp': 1291962600, 'id': 3605302609, 'party_1': {'id': 150337897, 'name': 'corpslave12', 'type': 2}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission', 'type': 1378}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402956'}, 'balance': 985600165.53, 'timestamp': 1291962660, 'id': 3605303380, 'party_1': {'id': 150337897, 'name': 'corpslave12', 'type': 2}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission', 'type': 1378}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402974'}, 'balance': 985590165.53, 'timestamp': 1291962720, 'id': 3605305292, 'party_1': {'id': 150337897, 'name': 'corpslave12', 'type': 2}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission', 'type': 1378}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402980'}, 'balance': 985580165.53, 'timestamp': 1291962720, 'id': 3605306236, 'party_1': {'id': 150337897, 'name': 'corpslave12', 'type': 2}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission', 'type': 1378}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, ])
def test_wallet_journal(self): api_result, _, _ = make_api_result("char/wallet_journal.xml") result = evelink_w.parse_wallet_journal(api_result) self.assertEqual(result, [{ 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402941'}, 'balance': 985620165.53, 'timestamp': 1291962600, 'id': 3605301231L, 'party_1': {'id': 150337897, 'name': 'corpslave12'}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission'}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402950'}, 'balance': 985610165.53, 'timestamp': 1291962600, 'id': 3605302609L, 'party_1': {'id': 150337897, 'name': 'corpslave12'}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission'}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402956'}, 'balance': 985600165.53, 'timestamp': 1291962660, 'id': 3605303380L, 'party_1': {'id': 150337897, 'name': 'corpslave12'}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission'}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402974'}, 'balance': 985590165.53, 'timestamp': 1291962720, 'id': 3605305292L, 'party_1': {'id': 150337897, 'name': 'corpslave12'}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission'}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, { 'amount': -10000.0, 'arg': {'id': 0, 'name': '35402980'}, 'balance': 985580165.53, 'timestamp': 1291962720, 'id': 3605306236L, 'party_1': {'id': 150337897, 'name': 'corpslave12'}, 'party_2': {'id': 1000132, 'name': 'Secure Commerce Commission'}, 'reason': '', 'tax': {'amount': 0.0, 'taxer_id': 0}, 'type_id': 72}, ])
def test_parse_industry_jobs(self): api_result, _, _ = make_api_result("char/industry_jobs.xml") result = evelink_ij.parse_industry_jobs(api_result) self.assertEqual(result, { 229049720: { 'activity_id': 1, 'begin_ts': 1405234032, 'blueprint': { 'id': 1012703933072, 'location_id': 60002758, 'type': { 'id': 31599, 'name': 'Small Hydraulic Bay Thrusters I Blueprint', }, }, 'complete_ts': None, 'completed': False, 'completor_id': 0, 'cost': 0.0, 'duration': 81600, 'end_ts': 1405315632, 'facility_id': 60002758, 'installer': { 'id': 93578165, 'name': 'Rhals Tea', }, 'licensed_runs': 0, 'pause_ts': None, 'product': { 'location_id': 60002758, 'name': 'Small Hydraulic Bay Thrusters I', 'probability': 0.0, 'type_id': 31598, }, 'runs': 68, 'station_id': 60002758, 'status': 1, 'system': { 'id': 30002776, 'name': 'Annaro', }, 'team_id': 0, }, 229049806: { 'activity_id': 1, 'begin_ts': 1405234119, 'blueprint': { 'id': 1012218751226, 'location_id': 60002758, 'type': { 'id': 31178, 'name': 'Small Polycarbon Engine Housing I Blueprint', }, }, 'complete_ts': None, 'completed': False, 'completor_id': 0, 'cost': 0.0, 'duration': 81491, 'end_ts': 1405315610, 'facility_id': 60002758, 'installer': { 'id': 93578165, 'name': 'Rhals Tea', }, 'licensed_runs': 0, 'pause_ts': None, 'product': { 'location_id': 60002758, 'name': 'Small Polycarbon Engine Housing I', 'probability': 0.0, 'type_id': 31177, }, 'runs': 83, 'station_id': 60002758, 'status': 1, 'system': { 'id': 30002776, 'name': 'Annaro', }, 'team_id': 0, }, })
def test_parse_assets(self): api_result, _, _ = make_api_result("corp/assets.xml") result = evelink_a.parse_assets(api_result) self.assertEqual( result, { 30003719: { 'contents': [{ 'contents': [{ 'id': 1007353294812, 'item_type_id': 34, 'location_flag': 42, 'location_id': 30003719, 'packaged': True, 'quantity': 100 }, { 'id': 1007353294813, 'item_type_id': 34, 'location_flag': 42, 'location_id': 30003719, 'packaged': True, 'quantity': 200 }], 'id': 1007222140712, 'item_type_id': 16216, 'location_flag': 0, 'location_id': 30003719, 'packaged': False, 'quantity': 1, 'raw_quantity': -1 }], 'location_id': 30003719 }, 67000050: { 'contents': [{ 'id': 1007221285456, 'item_type_id': 13780, 'location_flag': 0, 'location_id': 67000050, 'packaged': False, 'quantity': 1, 'raw_quantity': -1 }, { 'id': 374680079, 'item_type_id': 973, 'location_flag': 0, 'location_id': 67000050, 'packaged': False, 'quantity': 1, 'raw_quantity': -2 }], 'location_id': 67000050 } })
def test_parse_bookmarks(self): api_result, _, _ = make_api_result("char/bookmarks.xml") result = evelink_b.parse_bookmarks(api_result) self.assertEqual(result, { 0: { 'bookmarks': { 12: { 'created_ts': 1436391254, 'creator_id': 90000001, 'id': 12, 'item_id': 60014689, 'location_id': 30004971, 'name': 'Home Station', 'note': 'Our base of residence', 'type_id': 57, 'x': 0.0, 'y': 0.0, 'z': 0.0, }, 13: { 'created_ts': 1436391307, 'creator_id': 90000001, 'id': 13, 'item_id': 40314792, 'location_id': 30004971, 'name': 'Sun', 'note': '', 'type_id': 8, 'x': 0.0, 'y': 0.0, 'z': 0.0, }, }, 'id': 0, 'name': '', }, 1: { 'bookmarks': {}, 'id': 1, 'name': 'A lovely empty folder', }, 4: { 'bookmarks': { 14: { 'created_ts': 1436391368, 'creator_id': 90000001, 'id': 14, 'item_id': 0, 'location_id': 30004971, 'name': 'spot in Duripant solar system', 'note': '', 'type_id': 5, 'x': -373405654941.733, 'y': 42718621667.0746, 'z': -1415023302173.46, }, }, 'id': 4, 'name': 'Random crap', }, })
def test_parse_industry_jobs(self): api_result = make_api_result("char/industry_jobs.xml") result = evelink_ij.parse_industry_jobs(api_result) self.assertEqual( result, { 19962573: { "activity_id": 4, "begin_ts": 1205793300, "delivered": False, "status": "failed", "finished": False, "container_id": 61000139, "container_type_id": 21644, "end_ts": 1208073300, "input": { "id": 178470781, "blueprint_type": "original", "item_flag": 4, "location_id": 61000139, "mat_level": 0, "prod_level": 0, "quantity": 1, "runs_left": -1, "type_id": 27309, }, "install_ts": 1205423400, "system_id": 30002903, "installer_id": 975676271, "line_id": 100502936, "multipliers": { "char_material": 1.25, "char_time": 0.949999988079071, "material": 1.0, "time": 1.0, }, "output": { "bpc_runs": 0, "container_location_id": 30002903, "flag": 0, "location_id": 61000139, "type_id": 27309, }, "runs": 20, "pause_ts": None, }, 37051255: { "activity_id": 1, "begin_ts": 1233500820, "delivered": False, "status": "failed", "finished": False, "container_id": 61000211, "container_type_id": 21644, "end_ts": 1233511140, "input": { "id": 664432163, "blueprint_type": "original", "item_flag": 4, "location_id": 61000211, "mat_level": 90, "prod_level": 11, "quantity": 1, "runs_left": -1, "type_id": 894, }, "install_ts": 1233500820, "system_id": 30001233, "installer_id": 975676271, "line_id": 101335750, "multipliers": { "char_material": 1.25, "char_time": 0.800000011920929, "material": 1.0, "time": 0.699999988079071, }, "output": { "bpc_runs": 0, "container_location_id": 30001233, "flag": 4, "location_id": 61000211, "type_id": 193, }, "runs": 75, "pause_ts": None, }, }, )
def test_parse_wallet_transactions(self): api_result, _, _ = make_api_result("char/wallet_transactions.xml") result = evelink_w.parse_wallet_transactions(api_result) self.assertEqual(result, [{ 'client': { 'id': 1034922339, 'name': 'Elthana' }, 'id': 1309776438, 'action': 'buy', 'for': 'personal', 'journal_id': 6256809868, 'price': 34101.06, 'quantity': 1, 'station': { 'id': 60003760, 'name': 'Jita IV - Moon 4 - Caldari Navy Assembly Plant' }, 'timestamp': 1265513640, 'type': { 'id': 20495, 'name': 'Information Warfare' } }, { 'client': { 'id': 1979235241, 'name': 'Daeja synn' }, 'id': 1307711508, 'action': 'buy', 'for': 'personal', 'journal_id': 6256808968, 'price': 1169939.97, 'quantity': 1, 'station': { 'id': 60015027, 'name': 'Uitra VI - Moon 4 - State War Academy School' }, 'timestamp': 1265392020, 'type': { 'id': 11574, 'name': 'Wing Command' } }, { 'client': { 'id': 275581519, 'name': 'SPAIDERKA' }, 'char': { 'id': 124, 'name': 'Bar' }, 'id': 1304203159, 'action': 'buy', 'for': 'personal', 'journal_id': 6256808878, 'price': 13012.01, 'quantity': 2, 'station': { 'id': 60003760, 'name': 'Jita IV - Moon 4 - Caldari Navy Assembly Plant' }, 'timestamp': 1265135280, 'type': { 'id': 3349, 'name': 'Skirmish Warfare' } }, { 'client': { 'id': 1703231064, 'name': 'Der Suchende' }, 'char': { 'id': 123, 'name': 'Foo' }, 'id': 1298649939, 'action': 'buy', 'for': 'personal', 'journal_id': 6256808869, 'price': 556001.01, 'quantity': 1, 'station': { 'id': 60004369, 'name': 'Ohmahailen V - Moon 7 - Corporate Police Force Assembly Plant' }, 'timestamp': 1264779900, 'type': { 'id': 2410, 'name': 'Heavy Missile Launcher II' } }])
def test_parse_kills(self): api_result, _, _ = make_api_result("char/kills.xml") result = evelink_k.parse_kills(api_result) self.assertEqual(result, { 15640545: { 'attackers': { 935091361: { 'alliance': { 'id': 5514808, 'name': 'Authorities of EVE'}, 'corp': { 'id': 224588600, 'name': 'Inkblot Squad'}, 'damage': 446, 'faction': { 'id': 0, 'name': ''}, 'final_blow': True, 'id': 935091361, 'name': 'ICU123', 'sec_status': -0.441287532452161, 'ship_type_id': 17932, 'weapon_type_id': 2881}}, 'items': [ {'destroyed': 0, 'dropped': 1, 'flag': 0, 'id': 5531}, {'destroyed': 750, 'dropped': 0, 'flag': 5, 'id': 16273}, {'destroyed': 1, 'dropped': 0, 'flag': 0, 'id': 21096}, {'destroyed': 1, 'dropped': 0, 'flag': 0, 'id': 2605}], 'id': 15640545, 'moon_id': 0, 'system_id': 30001160, 'time': 1290612480, 'victim': { 'alliance': { 'id': 1254074, 'name': 'EVE Gurus'}, 'corp': { 'id': 1254875843, 'name': 'Starbase Anchoring Corp'}, 'damage': 446, 'faction': { 'id': 0, 'name': ''}, 'id': 150080271, 'name': 'Pilot 333', 'ship_type_id': 670}}, 15640551: { 'attackers': { 935091361: { 'alliance': { 'id': 5514808, 'name': 'Authorities of EVE'}, 'corp': { 'id': 224588600, 'name': 'Inkblot Squad'}, 'damage': 446, 'faction': { 'id': 0, 'name': ''}, 'final_blow': True, 'id': 935091361, 'name': 'ICU123', 'sec_status': -0.441287532452161, 'ship_type_id': 17932, 'weapon_type_id': 2881}}, 'items': [ {'destroyed': 1, 'dropped': 0, 'flag': 14, 'id': 1319}, {'destroyed': 1, 'dropped': 0, 'flag': 28, 'id': 11370}, {'destroyed': 1, 'dropped': 0, 'flag': 93, 'id': 31119}, {'destroyed': 1, 'dropped': 0, 'flag': 5, 'id': 3467}, {'destroyed': 1, 'dropped': 0, 'flag': 0, 'id': 819}, {'destroyed': 2, 'dropped': 0, 'flag': 0, 'id': 4394}, {'destroyed': 0, 'dropped': 1, 'flag': 5, 'id': 11489}, {'destroyed': 0, 'dropped': 7, 'flag': 0, 'id': 9213}, {'destroyed': 0, 'dropped': 1, 'flag': 0, 'id': 4260}, {'destroyed': 0, 'dropped': 1, 'flag': 0, 'id': 9141}], 'id': 15640551, 'moon_id': 0, 'system_id': 30001160, 'time': 1290612540, 'victim': { 'alliance': { 'id': 1254074, 'name': 'EVE Gurus'}, 'corp': { 'id': 1254875843, 'name': 'Starbase Anchoring Corp'}, 'damage': 446, 'faction': { 'id': 0, 'name': ''}, 'id': 150080271, 'name': 'Pilot 333', 'ship_type_id': 670}} })
def test_parse_industry_jobs(self): api_result, _, _ = make_api_result("char/industry_jobs.xml") result = evelink_ij.parse_industry_jobs(api_result) self.assertEqual( result, { 19962573: { 'activity_id': 4, 'begin_ts': 1205793300, 'delivered': False, 'completed': False, 'status': 'in-progress', 'finished': False, 'successful': False, 'container_id': 61000139, 'container_type_id': 21644, 'end_ts': 1208073300, 'input': { 'id': 178470781, 'blueprint_type': 'original', 'item_flag': 4, 'location_id': 61000139, 'mat_level': 0, 'prod_level': 0, 'quantity': 1, 'runs_left': -1, 'type_id': 27309 }, 'install_ts': 1205423400, 'system_id': 30002903, 'installer_id': 975676271, 'line_id': 100502936, 'multipliers': { 'char_material': 1.25, 'char_time': 0.949999988079071, 'material': 1.0, 'time': 1.0 }, 'output': { 'bpc_runs': 0, 'container_location_id': 30002903, 'flag': 0, 'location_id': 61000139, 'type_id': 27309 }, 'runs': 20, 'pause_ts': None }, 37051255: { 'activity_id': 1, 'begin_ts': 1233500820, 'delivered': True, 'completed': True, 'status': 'failed', 'finished': False, 'successful': False, 'container_id': 61000211, 'container_type_id': 21644, 'end_ts': 1233511140, 'input': { 'id': 664432163, 'blueprint_type': 'original', 'item_flag': 4, 'location_id': 61000211, 'mat_level': 90, 'prod_level': 11, 'quantity': 1, 'runs_left': -1, 'type_id': 894 }, 'install_ts': 1233500820, 'system_id': 30001233, 'installer_id': 975676271, 'line_id': 101335750, 'multipliers': { 'char_material': 1.25, 'char_time': 0.800000011920929, 'material': 1.0, 'time': 0.699999988079071 }, 'output': { 'bpc_runs': 0, 'container_location_id': 30001233, 'flag': 4, 'location_id': 61000211, 'type_id': 193 }, 'runs': 75, 'pause_ts': None } })
def test_parse_planetary_pins(self): api_result, _, _ = make_api_result("char/planetary_pins.xml") result = evelink_pi.parse_planetary_pins(api_result) self.assertEqual(result, { 1014990260630: {'id': 1014990260630, 'type': {'id': 2534, 'name': 'Gas Command Center'}, 'schematic': 0, 'last_launch_ts': None, 'cycle_time': 0, 'quantity_per_cycle': 0, 'install_ts': None, 'expiry_ts': None, 'content': {'type': 0, 'name': '', 'quantity': 0}, 'loc': {'long': -0.484603382949165, 'lat': -0.484603382949165}, }, 1014990361645: {'id': 1014990361645, 'type': {'id': 3060, 'name': 'Gas Extractor Control Unit', }, 'schematic': 0, 'last_launch_ts': 1402305835, 'cycle_time': 15, 'quantity_per_cycle': 251, 'install_ts': 1402305835, 'expiry_ts': 1402392235, 'content': {'type': 0, 'name': '', 'quantity': 0}, 'loc': {'long': -0.461767301597, 'lat': -0.461767301597}, }, 1014990361650: {'id': 1014990361650, 'type': {'id': 2494, 'name': 'Gas Advanced Industry Facility', }, 'schematic': 69, 'last_launch_ts': 1402305835, 'cycle_time': 0, 'quantity_per_cycle': 0, 'install_ts': None, 'expiry_ts': None, 'content': {'type': 0, 'name': '', 'quantity': 0}, 'loc': {'long': -0.518403815307, 'lat': -0.518403815307}, }, 1014990361651: {'id': 1014990361651, 'type': {'id': 2543, 'name': 'Gas Launchpad'}, 'schematic': 0, 'last_launch_ts': None, 'cycle_time': 0, 'quantity_per_cycle': 0, 'install_ts': None, 'expiry_ts': None, 'content': {'type': 0, 'name': '', 'quantity': 0}, 'loc': {'long': -0.544793681671, 'lat': -0.544793681671}, }, 1014990361652: {'id': 1014990361652, 'type': {'id': 2536, 'name': 'Gas Storage Facility'}, 'schematic': 0, 'last_launch_ts': None, 'cycle_time': 0, 'quantity_per_cycle': 0, 'install_ts': None, 'expiry_ts': None, 'content': {'type': 0, 'name': '', 'quantity': 0}, 'loc': {'long': -0.470709152144, 'lat': -0.470709152144}, }, })
def test_parse_planetary_pins(self): api_result, _, _ = make_api_result("char/planetary_pins.xml") result = evelink_pi.parse_planetary_pins(api_result) self.assertEqual(result, { 1018352222277: {'contents': {}, 'content': {'type': 0, 'name': '', 'quantity': 0, 'deprecated': 'Use the "contents" field instead'}, 'cycle_time': 0, 'expiry_ts': None, 'id': 1018352222277, 'install_ts': None, 'last_launch_ts': None, 'loc': {'lat': 2.30568628105134, 'long': -6.0348096042028}, 'quantity_per_cycle': 0, 'schematic': 0, 'type': {'id': 2254, 'name': 'Temperate Command Center'}}, 1018352251143: {'contents': {}, 'content': {'type': 0, 'name': '', 'quantity': 0, 'deprecated': 'Use the "contents" field instead'}, 'cycle_time': 30, 'expiry_ts': 1433483274, 'id': 1018352251143, 'install_ts': 1433305074, 'last_launch_ts': 1433308674, 'loc': {'lat': 2.27884848837, 'long': -5.97671090064}, 'quantity_per_cycle': 6065, 'schematic': 0, 'type': {'id': 3068, 'name': 'Temperate Extractor Control Unit'}}, 1018352251145: {'contents': {2268: {'name': 'Aqueous Liquids', 'quantity': 3000, 'type': 2268}}, 'content': {'name': 'Aqueous Liquids', 'quantity': 3000, 'type': 2268, 'deprecated': 'Use the "contents" field instead'}, 'cycle_time': 0, 'expiry_ts': None, 'id': 1018352251145, 'install_ts': None, 'last_launch_ts': 1433307646, 'loc': {'lat': 2.21945171231, 'long': -6.05437394311}, 'quantity_per_cycle': 0, 'schematic': 121, 'type': {'id': 2481, 'name': 'Temperate Basic Industry Facility'}}, 1018352251149: {'contents': {2397: {'name': 'Industrial Fibers', 'quantity': 40, 'type': 2397}}, 'content': {'name': 'Industrial Fibers', 'quantity': 40, 'type': 2397, 'deprecated': 'Use the "contents" field instead'}, 'cycle_time': 0, 'expiry_ts': None, 'id': 1018352251149, 'install_ts': None, 'last_launch_ts': 1433308866, 'loc': {'lat': 2.23960260135, 'long': -6.0353691422}, 'quantity_per_cycle': 0, 'schematic': 80, 'type': {'id': 2480, 'name': 'Temperate Advanced Industry Facility'}}, 1018352251151: {'contents': {2305: {'name': 'Autotrophs', 'quantity': 160192, 'type': 2305}, 9828: {'name': 'Silicon', 'quantity': 2760, 'type': 9828}}, 'content': {'name': 'Autotrophs', 'quantity': 160192, 'type': 2305, 'deprecated': 'Use the "contents" field instead'}, 'cycle_time': 0, 'expiry_ts': None, 'id': 1018352251151, 'install_ts': None, 'last_launch_ts': None, 'loc': {'lat': 2.2437423448, 'long': -6.02030550651}, 'quantity_per_cycle': 0, 'schematic': 0, 'type': {'id': 2256, 'name': 'Temperate Launchpad'}}, 1018352251153: {'contents': {2268: {'name': 'Aqueous Liquids', 'quantity': 388209, 'type': 2268}, 2397: {'name': 'Industrial Fibers', 'quantity': 2600, 'type': 2397}}, 'content': {'name': 'Aqueous Liquids', 'quantity': 388209, 'type': 2268, 'deprecated': 'Use the "contents" field instead'}, 'cycle_time': 0, 'expiry_ts': None, 'id': 1018352251153, 'install_ts': None, 'last_launch_ts': 1433308016, 'loc': {'lat': 2.25213553747, 'long': -6.03170333208}, 'quantity_per_cycle': 0, 'schematic': 0, 'type': {'id': 2562, 'name': 'Temperate Storage Facility'}} })
def test_parse_industry_jobs(self): api_result, _, _ = make_api_result("char/industry_jobs.xml") result = evelink_ij.parse_industry_jobs(api_result) self.assertEqual(result, { 19962573: { 'activity_id': 4, 'begin_ts': 1205793300, 'delivered': False, 'completed': False, 'status': 'in-progress', 'finished': False, 'successful': False, 'container_id': 61000139, 'container_type_id': 21644, 'end_ts': 1208073300, 'input': { 'id': 178470781, 'blueprint_type': 'original', 'item_flag': 4, 'location_id': 61000139, 'mat_level': 0, 'prod_level': 0, 'quantity': 1, 'runs_left': -1, 'type_id': 27309}, 'install_ts': 1205423400, 'system_id': 30002903, 'installer_id': 975676271, 'line_id': 100502936, 'multipliers': { 'char_material': 1.25, 'char_time': 0.949999988079071, 'material': 1.0, 'time': 1.0}, 'output': { 'bpc_runs': 0, 'container_location_id': 30002903, 'flag': 0, 'location_id': 61000139, 'type_id': 27309}, 'runs': 20, 'pause_ts': None}, 37051255: { 'activity_id': 1, 'begin_ts': 1233500820, 'delivered': True, 'completed': True, 'status': 'failed', 'finished': False, 'successful': False, 'container_id': 61000211, 'container_type_id': 21644, 'end_ts': 1233511140, 'input': { 'id': 664432163, 'blueprint_type': 'original', 'item_flag': 4, 'location_id': 61000211, 'mat_level': 90, 'prod_level': 11, 'quantity': 1, 'runs_left': -1, 'type_id': 894}, 'install_ts': 1233500820, 'system_id': 30001233, 'installer_id': 975676271, 'line_id': 101335750, 'multipliers': { 'char_material': 1.25, 'char_time': 0.800000011920929, 'material': 1.0, 'time': 0.699999988079071}, 'output': { 'bpc_runs': 0, 'container_location_id': 30001233, 'flag': 4, 'location_id': 61000211, 'type_id': 193}, 'runs': 75, 'pause_ts': None} } )