questi startDragDrop e spyOnUser sono generiche funzioni che si suppone tu abbia definito altrove

function startDragDrop(){...}
function spyOnUser(){...}

tu invece al click fai eseguire una funzione anonima, quel
function () {this.className="test2"}
ed e' ugualmente corretto

non ha ragione di presentarsi il problema di dover cliccare due volte
quindi prova a postare un esempio piu' articolato per individuare cosa determini il malfunzionamento