def test_create_market(self): oracle = CentralizedOracleFactory() event = CategoricalEventFactory(oracle=oracle) market = MarketFactory() block = { 'number': market.creation_block, 'timestamp': mktime(market.creation_date_time.timetuple()) } market_dict = { 'address': market.factory, 'params': [{ 'name': 'creator', 'value': market.creator }, { 'name': 'centralizedOracle', 'value': oracle.address, }, { 'name': 'marketMaker', 'value': market.market_maker }, { 'name': 'fee', 'value': market.fee }, { 'name': 'market', 'value': market.address }] } market.delete() s = MarketSerializer(data=market_dict, block=block) self.assertFalse(s.is_valid(), s.errors) market_dict.get('params').append({ 'name': 'eventContract', 'value': market.address }) market_dict.get('params').append({'name': 'fee', 'value': market.fee}) s = MarketSerializer(data=market_dict, block=block) self.assertFalse(s.is_valid(), s.errors) market_dict.get('params')[-2]['value'] = event.address s = MarketSerializer(data=market_dict, block=block) self.assertFalse(s.is_valid(), s.errors) marketMaker = [ x for x in market_dict.get('params') if x.get('name') == 'marketMaker' ][0] marketMaker.update({'value': settings.LMSR_MARKET_MAKER}) s = MarketSerializer(data=market_dict, block=block) self.assertTrue(s.is_valid(), s.errors) instance = s.save() self.assertIsNotNone(instance)
def test_market_receiver(self): oracle = CentralizedOracleFactory() oracle.event_description.outcomes = ['1', '2', '3'] oracle.event_description.save() event = CategoricalEventFactory(oracle=oracle) market = MarketFactory() event_address = event.address block = { 'number': market.creation_block, 'timestamp': self.to_timestamp(market.creation_date_time) } market_dict = { 'name': 'StandardMarketCreation', 'address': market.factory, 'params': [{ 'name': 'creator', 'value': market.creator }, { 'name': 'centralizedOracle', 'value': oracle.address, }, { 'name': 'marketMaker', 'value': market.market_maker }, { 'name': 'fee', 'value': market.fee }, { 'name': 'eventContract', 'value': event_address }, { 'name': 'fee', 'value': market.fee }, { 'name': 'market', 'value': market.address }] } market.delete() MarketFactoryReceiver().save(market_dict, block) with self.assertRaises(Market.DoesNotExist): Market.objects.get(event=event_address) market_dict.get('params')[2].update( {'value': settings.LMSR_MARKET_MAKER}) MarketFactoryReceiver().save(market_dict, block) saved_market = Market.objects.get(event=event_address) self.assertIsNotNone(saved_market.pk) self.assertEquals(len(market.net_outcome_tokens_sold), 2) self.assertEquals(len(saved_market.net_outcome_tokens_sold), 3)
def test_market_factory_rollback(self): oracle = CentralizedOracleFactory() event = CategoricalEventFactory(oracle=oracle) market = MarketFactory() block = { 'number': oracle.creation_block, 'timestamp': self.to_timestamp(oracle.creation_date_time) } market_creation_event = { 'name': 'StandardMarketCreation', 'address': market.factory, 'params': [ { 'name': 'creator', 'value': market.creator }, { 'name': 'centralizedOracle', 'value': oracle.address, }, { 'name': 'marketMaker', 'value': settings.LMSR_MARKET_MAKER }, { 'name': 'fee', 'value': market.fee }, { 'name': 'eventContract', 'value': event.address }, { 'name': 'market', 'value': market.address } ] } market.delete() MarketFactoryReceiver().save(market_creation_event, block) market_without_rollback = Market.objects.get(event=event.address) self.assertIsNotNone(market_without_rollback.pk) # Rollback MarketFactoryReceiver().rollback(market_creation_event, block) with self.assertRaises(Market.DoesNotExist): Market.objects.get(event=event.address)