o serviço era contraditório por si, ele recebia um user e devolvia um username -.-
O que está mal é essa linha que devia estar

    if username
        Services::GenerateUsername.new(username: username).generate
    else
         "#{first_name}#{last_name}"
    end

pelo menos a mim parece-me que este serviço fica mais correcto. O que o serviço estava a fazer era limpar um username, o facto de ele fazer uma sugestão é outra responsabilidade, supostamente isto foi criado para tirar os espaços e acentos não foi?