A urinalysis is plenty effective. You run the risk of, someone that has cleaned themselves up, not getting a job because a mistake of their recent past. In addition, people should not be penalized for things they do on their time. Their use of anything outside of work is none of anyone's concern if it does not directly effect their work. Someone who had a fight with their spouse is more of a danger, because they are distracted, than someone who smoked cannabis before bed.