input: Write a function to generate a Python class for an online store item that includes fields for ID, name, price, and description. The class should have an initialization method to set these fields, a string representation method, and a method to convert the object to a dictionary. Include test cases for an instance of the class with assert statements.
  
  class StoreItem:
      def __init__(self, item_id, name, price, description):
          self.item_id = item_id
          self.name = name
          self.price = price
          self.description = description
  
      def __str__(self):
          return f'{self.name}, ${self.price}'
  
      def to_dict(self):
          return {
              'item_id': self.item_id,
              'name': self.name,
              'price': self.price,
              'description': self.description
          }
  
  assert str(StoreItem(1, 'Laptop', 1200, 'High-performance laptop')) == 'Laptop, $1200'
  assert StoreItem(1, 'Laptop', 1200, 'High-performance laptop').to_dict() == {
      'item_id': 1,
      'name': 'Laptop',
      'price': 1200,
      'description': 'High-performance laptop'
  }
  assert str(StoreItem(2, 'Phone', 800, 'Smartphone with advanced features')) == 'Phone, $800'
  assert StoreItem(2, 'Phone', 800, 'Smartphone with advanced features').to_dict() == {
      'item_id': 2,
      'name': 'Phone',
      'price': 800,
      'description': 'Smartphone with advanced features'
  }
output: 
  class StoreItem:
      def __init__(self, item_id, name, price, description):
          self.item_id = item_id
          self.name = name
          self.price = price
          self.description = description
  
      def __str__(self):
          return f'{self.name}, ${self.price}'
  
      def to_dict(self):
          return {
              'item_id': self.item_id,
              'name': self.name,
              'price': self.price,
              'description': self.description
          }
  