code: def test_evaluate_in_batches_logger(
      implicit_model,
      test_implicit_interactions,
      test_implicit_predicted_scores,
  ):
      class LightningLoggerFixture:
          """A simple logger base class with a method ``log_metrics``."""
  
          def __init__(self):
              pass
  
          def log_metrics(self, metrics, step):
              """Save ``metrics`` and ``step`` as class-level attributes for testing."""
              self.metrics = metrics
              self.step = step
  
      logger = LightningLoggerFixture()
      model = copy.deepcopy(implicit_model)
  
      mapk_score, mrr_score, auc_score = evaluate_in_batches(
          metric_list=[mapk, mrr, auc],
          test_interactions=test_implicit_interactions,
          model=model,
          k=4,
          logger=logger,
      )
  
      assert mapk_score == logger.metrics["mapk"]
      assert mrr_score == logger.metrics["mrr"]
      assert auc_score == logger.metrics["auc"]
  
      assert logger.step == model.hparams.num_epochs_completed
  
imports: import copy
  from functools import partial
  import re
  from unittest import mock
  import numpy
  import pytest
  from sklearn.metrics import roc_auc_score
  import torch
  import torchmetrics
  from collie.metrics import _get_evaluate_in_batches_device, _get_labels, _get_user_item_pairs, auc, evaluate_in_batches, explicit_evaluate_in_batches, get_preds, mapk, mrr
label_desc: Use image node_id 15 for calling a global function with example usage: test_evaluate_in_batches_logger(implicit_model, test_implicit_interactions, test_implicit_predicted_scores) without return types