def test_pendingevent_set_get_value(self): """ Test that setting and retrieving a context value through a Pending Event works """ pe = PendingEvent( event=self.e, kingdom=self.k, ) pe.save() f = Folk( kingdom=self.k, first_name="Theon", last_name="Greyjoy" ) f.save() pe.set_value("peon", f) self.assertEqual(f, pe.get_value("peon")) pe.set_value("Narnia", self.k) self.assertEqual(self.k, pe.get_value("Narnia")) pe.set_value("nompourri", "Kevin") self.assertEqual(pe.get_value("nompourri"), "Kevin") pe.set_value("beastnum", 666) self.assertEqual(pe.get_value("beastnum"), 666) pe.set_value("void", None) self.assertEqual(pe.get_value("void"), None)
def test_pendingevent_future_created(self): """ Test the cron launches PendingEvent in the future """ self.e.on_fire = "param.set_value('has_been_called', True)" self.e.save() pe = PendingEvent( event=self.e, kingdom=self.k, started=datetime.now()+timedelta(milliseconds=5) ) pe.save() # Sanity check : not started yet self.assertFalse(pe.is_started) self.assertFalse(pe.has_value('has_been_called')) # Wait until completion time.sleep(0.005) cron_minute.send(self, counter=1000) # PE has been executed self.assertTrue(pe.get_value('has_been_called')) self.assertTrue(PendingEvent.objects.get(pk=pe.id).is_started)
def test_pendingevent_savecontext(self): """ Test the saving context mechanism in post_save signal on PendingEvent """ self.e.on_fire = "param.set_value('beastnum', 666)" pe = PendingEvent( event=self.e, kingdom=self.k, ) pe.save() self.assertEqual(pe.get_value("beastnum"), 666)
def test_freeze_advanced(self): """ Test advanced freeze mechanism : pending_event_variable are restored (this is "second level restoration" since this Variable has nothing to do with the kingdom) """ from event.models import Event, PendingEvent e = Event( name="Event 1", slug="event_1", category=None, text="Event 1", on_fire="" ) e.save() pe = PendingEvent( event=e, kingdom=self.k ) pe.save() pe.set_value('foo', 'bar') pe.set_value('folk', self.f) freezed_pe_pk = pe.pk freeze = Freeze(kingdom=self.k) freeze.save() # Terminate PendingEvent pe.delete() # Unfreeze freeze.restore() # Check variable has been restored pe = PendingEvent.objects.get(pk=freezed_pe_pk) self.assertEqual(pe.get_value('foo'), 'bar') self.assertEqual(pe.get_value('folk'), self.f)