# File lib/abingo.rb, line 209
  def human!
    Abingo.cache.fetch("Abingo::is_human(#{self.identity})",  {:expires_in => self.expires_in(true)}) do
      #Now that we know the user is human, score participation for all their tests.  (Further participation will *not* be lazy evaluated.)

      #Score all tests which have been deferred.
      participating_tests = Abingo.cache.read("Abingo::participating_tests::#{self.identity}") || []

      #Refresh cache expiry for this user to match that of known humans.
      if (@@options[:expires_in_for_bots] && !participating_tests.blank?)
        Abingo.cache.write("Abingo::participating_tests::#{self.identity}", participating_tests, {:expires_in => self.expires_in(true)})
      end

      participating_tests.each do |test_name|
        viewed_alternative = find_alternative_for_user(test_name,
          Abingo::Experiment.alternatives_for_test(test_name))
        Alternative.score_participation(test_name, viewed_alternative)
        if conversions = Abingo.cache.read("Abingo::conversions(#{self.identity},#{test_name}")
          conversions.times { Alternative.score_conversion(test_name, viewed_alternative) }
        end
      end
      true #Marks this user as human in the cache.
    end
  end