def test_converts_shapefile_column(self): spec = Mock() spec.start_line = 0 spec.header_lines = [] fstor = Mock(DelayedOpen) source = ShapefileSource(spec, fstor) expected_column = {'name': 'name1', 'type': 'int'} self.assertEqual(source._convert_column((u('name1'), 'int:3')), expected_column)
def test_converts_shapefile_column(self): spec = Mock() spec.start_line = 0 spec.header_lines = [] fstor = Mock(DelayedOpen) source = ShapefileSource(spec, fstor) expected_column = {'name': 'name1', 'type': 'int'} self.assertEqual( source._convert_column((u('name1'), 'int:3')), expected_column)
def test_reads_layer_specified_by_segment(self, fake_open, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection spec = SourceSpec('http://example.com', segment=5) fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) next(source._get_row_gen()) self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual(fake_open.call_args_list[0][1]['layer'], 5, 'open function was called with wrong layer.')
def test_populates_columns_of_the_spec(self, fake_open, fake_get, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection fake_get.return_value = [{'name': 'col1', 'type': 'int'}] spec = SourceSpec('http://example.com') fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) next(source._get_row_gen()) self.assertEqual(len(source.spec.columns), 1) self.assertEqual(source.spec.columns[0].name, 'col1') self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual(len(fake_get.mock_calls), 2)
def test_reads_layer_specified_by_segment(self, fake_open, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection spec = SourceSpec('http://example.com', segment=5) fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) next(source._get_row_gen()) self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual( fake_open.call_args_list[0][1]['layer'], 5, 'open function was called with wrong layer.')
def test_converts_given_columns(self): spec = Mock() spec.start_line = 0 spec.header_lines = [] fstor = Mock(spec=DelayedOpen) source = ShapefileSource(spec, fstor) column1 = ('name1', 'int:10') column2 = ('name2', 'str:10') converted_column1 = {'name': 'name1', 'type': 'int'} converted_column2 = {'name': 'name2', 'type': 'str'} shapefile_columns = OrderedDict([column1, column2]) ret = source._get_columns(shapefile_columns) self.assertIn(converted_column1, ret) self.assertIn(converted_column2, ret)
def test_extends_with_id_and_geometry(self): spec = Mock() spec.start_line = 0 spec.header_lines = [] fstor = Mock(spec=DelayedOpen) source = ShapefileSource(spec, fstor) shapefile_columns = OrderedDict() ret = source._get_columns(shapefile_columns) self.assertEqual(len(ret), 2) names = [x['name'] for x in ret] self.assertIn('id', names) self.assertIn('geometry', names) types = [x['type'] for x in ret] self.assertIn('geometry_type', types)
def test_last_element_in_the_row_is_wkt(self, fake_open, fake_get, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection fake_shape.expects_call().is_a_stub() fake_dumps.return_value = 'I AM FAKE WKT' fake_get.return_value = [{'name': 'col1', 'type': 'int'}] spec = SourceSpec('http://example.com') fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) row_gen = source._get_row_gen() first_row = next(row_gen) self.assertEqual(first_row[-1], 'I AM FAKE WKT') self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual(len(fake_get.mock_calls), 2)
def test_saves_header(self, fake_open, fake_get, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection fake_get.return_value = [ {'name': 'id', 'type': 'int'}, {'name': 'col1', 'type': 'int'}, {'name': 'geometry', 'type': 'geometry_type'}] spec = SourceSpec('http://example.com') fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) next(source._get_row_gen()) self.assertEqual(source._headers, ['id', 'col1', 'geometry']) self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual(len(fake_get.mock_calls), 2)
def test_converts_row_id_to_integer(self, fake_open, fake_get, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection fake_shape.expects_call().is_a_stub() fake_dumps.expects_call().is_a_stub() fake_get.return_value = [{'name': 'col1', 'type': 'int'}] spec = SourceSpec('http://example.com') fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) row_gen = source._get_row_gen() first_row = next(row_gen) self.assertEqual(first_row[0], 0) self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual(len(fake_get.mock_calls), 2)
def test_saves_header(self, fake_open, fake_get, fake_shape, fake_dumps): fake_collection = self._get_fake_collection() fake_open.return_value = fake_collection fake_get.return_value = [{ 'name': 'id', 'type': 'int' }, { 'name': 'col1', 'type': 'int' }, { 'name': 'geometry', 'type': 'geometry_type' }] spec = SourceSpec('http://example.com') fstor = Mock(spec=DelayedOpen) fstor._fs = Mock() source = ShapefileSource(spec, fstor) next(source._get_row_gen()) self.assertEqual(source._headers, ['id', 'col1', 'geometry']) self.assertEqual(len(fake_open.mock_calls), 1) self.assertEqual(len(fake_get.mock_calls), 2)