code: def setUp(self):
      self.df = pd.DataFrame(range(0, 21), columns=["id"])
      self.df["y"] = self.df["id"].apply(lambda x: 1 if x < 10 else 0)
      self.df["x1"] = np.random.randint(1, 123, self.df.shape[0])
      self.df["x2"] = np.random.randint(1, 3, self.df.shape[0])
      self.df = self.df.set_index("id")
      self.clf = cb.CatBoostClassifier(n_estimators=1).fit(
          self.df[["x1", "x2"]], self.df["y"]
      )
      self.xpl = SmartExplainer(model=self.clf)
      self.xpl.compile(x=self.df[["x1", "x2"]])
      self.report1 = ProjectReport(
          explainer=self.xpl,
          project_info_file=os.path.join(
              current_path, "../../data/metadata.yaml"
          ),
      )
      self.report2 = ProjectReport(
          explainer=self.xpl,
          project_info_file=os.path.join(
              current_path, "../../data/metadata.yaml"
          ),
          x_train=self.df[["x1", "x2"]],
      )
  
imports: import unittest
  from unittest.mock import patch
  import os
  import numpy
  import pandas
  import catboost
  from category_encoders import OrdinalEncoder
  from shapash import SmartExplainer
  from shapash.report.project_report import ProjectReport
label_desc: Use image node_id 1 for calling the TestProjectReport obj's underlying member method code with example usage: obj.setUp() without return types