Move change_state to admin controller and rewrite tests