2005/12/18

Passi di UnitTest

Allora. Oggi ho deciso di mettere un po' di test al WorklistController.py che ahime' ne ha molti meno di quelli che dovrebbe avere. Sono partito dal codice di questo metodo, il primo che ho trovato che non veniva esplicitamente testato.


def actionShowDocument(self, instance_id, index, REQUEST):
""" """
instance = self.getOpenflow().getInstance(instance_id)
registration_id = self.getCore().getRegistrationId(instance)
if registration_id:
registration = self.getRegistrations().findLatestVersionById(registration_id)
else:
registration = self.getRegistrations().getInstanceRegistration(instance)
document = registration.getDocuments()[index]
return document.download(REQUEST)


Naturalmente, questo vuol dire dover creare un bel po' di mock per far funzionare il tutto.
La cosa che mi ha colpito è stato il fatto che dovessi chedere a Core di prendere il registration_id da una istanza: perché l'istanza non doveva saperlo? Sono quindi andato nel codice di Core.py, nella classe Core, ed ecco il codice del metodo in questione:


def getRegistrationId(self, instance):
if instance.begin_process_id in ('ModifyIncomingRegistrationProcess',
'ModifyOutgoingRegistrationProcess'):
return instance.getProtocolData().originalRegistrationId()
else:
return instance.getRegistrationId()


E' evidente che questo è un refactoring rimasto a mezzo. Infatti, dovrei:
  1. rinominare questo metodo
  2. spostarlo nella gerarchia dei RegistrationInstance
  3. implementarlo nelle sottoclassi

Visto che mi sembra giusto farlo, lo faccio subito! Dopo questo commit, andrò a riprendere il test della classe in questione.

1 commento:

waltergibson45722409 ha detto...
Questo commento è stato eliminato da un amministratore del blog.