code: def test_minutely_fetcher(self):
      self.responses.add(
          self.responses.GET,
          "https://fake.urls.com/aapl_minute_csv_data.csv",
          body=AAPL_MINUTE_CSV_DATA,
          content_type="text/csv",
      )
  
      sim_params = factory.create_simulation_parameters(
          start=pd.Timestamp("2006-01-03", tz="UTC"),
          end=pd.Timestamp("2006-01-10", tz="UTC"),
          emission_rate="minute",
          data_frequency="minute",
      )
  
      test_algo = self.make_algo(
          script="""
  from zipline.api import fetch_csv, record, sid
  
  def initialize(context):
      fetch_csv('https://fake.urls.com/aapl_minute_csv_data.csv')
  
  def handle_data(context, data):
      record(aapl_signal=data.current(sid(24), "signal"))
  """,
          sim_params=sim_params,
      )
  
      # manually getting generator because we need the minutely emission
      # packets here. TradingAlgorithm.run() only returns daily packets.
      gen = test_algo.get_generator()
      perf_packets = list(gen)
  
      signal = [
          result["minute_perf"]["recorded_vars"]["aapl_signal"]
          for result in perf_packets
          if "minute_perf" in result
      ]
  
      self.assertEqual(6 * 390, len(signal))
  
      # csv data is:
      # symbol,date,signal
      # aapl,1/4/06 5:31AM, 1
      # aapl,1/4/06 11:30AM, 2
      # aapl,1/5/06 5:31AM, 1
      # aapl,1/5/06 11:30AM, 3
      # aapl,1/9/06 5:31AM, 1
      # aapl,1/9/06 11:30AM, 4 for dates 1/3 to 1/10
  
      # 2 signals per day, only last signal is taken. So we expect
      # 390 bars of signal NaN on 1/3
      # 390 bars of signal 2 on 1/4
      # 390 bars of signal 3 on 1/5
      # 390 bars of signal 3 on 1/6 (forward filled)
      # 390 bars of signal 4 on 1/9
      # 390 bars of signal 4 on 1/9 (forward filled)
  
      np.testing.assert_array_equal([np.NaN] * 390, signal[0:390])
      np.testing.assert_array_equal([2] * 390, signal[390:780])
      np.testing.assert_array_equal([3] * 780, signal[780:1560])
      np.testing.assert_array_equal([4] * 780, signal[1560:])
  
imports: from nose_parameterized import parameterized
  import pandas
  import numpy
  from mock import patch
  from zipline.errors import UnsupportedOrderParameters
  from zipline.sources.requests_csv import mask_requests_args
  from zipline.utils import factory
  from zipline.testing import FetcherDataPortal
  from zipline.testing.fixtures import WithResponses, WithMakeAlgo, ZiplineTestCase
  from .resources.fetcher_inputs.fetcher_test_data import AAPL_CSV_DATA, AAPL_IBM_CSV_DATA, AAPL_MINUTE_CSV_DATA, CPIAUCSL_DATA, FETCHER_ALTERNATE_COLUMN_HEADER, FETCHER_UNIVERSE_DATA, FETCHER_UNIVERSE_DATA_TICKER_COLUMN, MULTI_SIGNAL_CSV_DATA, NON_ASSET_FETCHER_UNIVERSE_DATA, PALLADIUM_DATA, NFLX_DATA
label_desc: Use image node_id 4 for calling the FetcherTestCase obj's underlying member method code with example usage: obj.test_minutely_fetcher() without return types