def test__get_data(self, RecordDictionaryTool_mock):
        edres = ExternalDataset(name='test_ed_res', dataset_description=DatasetDescription(), update_description=UpdateDescription(), contact=ContactInformation())
        edres.dataset_description.parameters['dataset_path'] = 'test_data/usgs.nc'
        edres.dataset_description.parameters['temporal_dimension'] = 'time'
        edres.dataset_description.parameters['zonal_dimension'] = 'lat'
        edres.dataset_description.parameters['meridional_dimension'] = 'lon'
        edres.dataset_description.parameters['vertical_dimension'] = 'z'
        edres.dataset_description.parameters['variables'] = ['water_temperature']
        config = {'external_dataset_res': edres,
                  'dataset_object': Dataset(edres.dataset_description.parameters['dataset_path']),
                  'constraints': {'count': 6},
                  'max_records': 4,
                  'data_producer_id': sentinel.dprod_id,
                  'param_dictionary': sentinel.pdict,
                  'stream_def': sentinel.stream_def_id}

        my_dict = {}

        def setitem(name, val):
            my_dict[name] = val

        retval = MagicMock(spec=RecordDictionaryTool)
        retval.__setitem__ = Mock(side_effect=setitem)
        retval.to_granule.return_value = MagicMock(spec=Granule)
        RecordDictionaryTool_mock.return_value = retval

        for x in NetcdfDataHandler._get_data(config):
            self.assertTrue(isinstance(x, Granule))
            retval.to_granule.assert_any_call()
    def test__get_data(self, RecordDictionaryTool_mock):
        edres = ExternalDataset(name='test_ed_res',
                                dataset_description=DatasetDescription(),
                                update_description=UpdateDescription(),
                                contact=ContactInformation())
        edres.dataset_description.parameters[
            'dataset_path'] = 'test_data/usgs.nc'
        edres.dataset_description.parameters['temporal_dimension'] = 'time'
        edres.dataset_description.parameters['zonal_dimension'] = 'lat'
        edres.dataset_description.parameters['meridional_dimension'] = 'lon'
        edres.dataset_description.parameters['vertical_dimension'] = 'z'
        edres.dataset_description.parameters['variables'] = [
            'water_temperature'
        ]
        config = {
            'external_dataset_res':
            edres,
            'dataset_object':
            Dataset(edres.dataset_description.parameters['dataset_path']),
            'constraints': {
                'count': 6
            },
            'max_records':
            4,
            'data_producer_id':
            sentinel.dprod_id,
            'param_dictionary':
            sentinel.pdict,
            'stream_def':
            sentinel.stream_def_id
        }

        my_dict = {}

        def setitem(name, val):
            my_dict[name] = val

        retval = MagicMock(spec=RecordDictionaryTool)
        retval.__setitem__ = Mock(side_effect=setitem)
        retval.to_granule.return_value = MagicMock(spec=Granule)
        RecordDictionaryTool_mock.return_value = retval

        for x in NetcdfDataHandler._get_data(config):
            self.assertTrue(isinstance(x, Granule))
            retval.to_granule.assert_any_call()