text: """Tests for the kraken integration."""
  from unittest.mock import patch
  
  from pykrakenapi.pykrakenapi import CallRateLimitError, KrakenAPIError
  
  from homeassistant.components.kraken.const import DOMAIN
  
  from .const import TICKER_INFORMATION_RESPONSE, TRADEABLE_ASSET_PAIR_RESPONSE
  
  from tests.common import MockConfigEntry
  
  
  async def test_unload_entry(hass):
      """Test unload for Kraken."""
      with patch(
          "pykrakenapi.KrakenAPI.get_tradable_asset_pairs",
          return_value=TRADEABLE_ASSET_PAIR_RESPONSE,
      ), patch(
          "pykrakenapi.KrakenAPI.get_ticker_information",
          return_value=TICKER_INFORMATION_RESPONSE,
      ):
          entry = MockConfigEntry(domain=DOMAIN)
          entry.add_to_hass(hass)
  
          await hass.config_entries.async_setup(entry.entry_id)
          await hass.async_block_till_done()
          assert await hass.config_entries.async_unload(entry.entry_id)
          assert DOMAIN not in hass.data
  
  
  async def test_unknown_error(hass, caplog):
      """Test unload for Kraken."""
      with patch(
          "pykrakenapi.KrakenAPI.get_tradable_asset_pairs",
          return_value=TRADEABLE_ASSET_PAIR_RESPONSE,
      ), patch(
          "pykrakenapi.KrakenAPI.get_ticker_information",
          side_effect=KrakenAPIError("EQuery: Error"),
      ):
          entry = MockConfigEntry(domain=DOMAIN)
          entry.add_to_hass(hass)
  
          await hass.config_entries.async_setup(entry.entry_id)
          await hass.async_block_till_done()
          assert "Unable to fetch data from Kraken.com:" in caplog.text
  
  
  async def test_callrate_limit(hass, caplog):
      """Test unload for Kraken."""
      with patch(
          "pykrakenapi.KrakenAPI.get_tradable_asset_pairs",
          return_value=TRADEABLE_ASSET_PAIR_RESPONSE,
      ), patch(
          "pykrakenapi.KrakenAPI.get_ticker_information",
          side_effect=CallRateLimitError(),
      ):
          entry = MockConfigEntry(domain=DOMAIN)
          entry.add_to_hass(hass)
  
          await hass.config_entries.async_setup(entry.entry_id)
          await hass.async_block_till_done()
          assert (
              "Exceeded the Kraken.com call rate limit. Increase the update interval to prevent this error"
              in caplog.text
          )
  