def test_non_utf8(self): validator = cell_validators.StringValidator('string_cell', self.logger, required=False, repeated=False) with six.assertRaisesRegex( self, error.CellValidationFailure, r'Cell "string_cell" contains invalid value'): validator.validate_value(NON_UTF8_DATA, 80, 'filename.tsv', 10)
def test_get_cell_object(self): cell_validator = cell_validators.StringValidator('ServiceDescription', False, False) cell = cell_pb2.Cell() cell.name = 'ServiceDescription' cell.cell_type = cell_pb2.STRING cell.string_value.append('yt') parser = self._get_file_parser() self.assertEqual(parser.get_cell_object(cell_validator, 'yt'), cell)
def test_non_utf8(self): validator = cell_validators.StringValidator( 'string_cell', self.logger, required=False, repeated=False) self.assertRaisesRegexp( error.BadUnicodeError, r'Cell "string_cell" contained a non-utf8 string: "\'\\xc3\\xc3\'". ' r'Error detail: "\'utf8\' codec can\'t decode byte 0xc3 in position 0:' r' invalid continuation byte". \[Block: 10, Row: 80, ' r'file=filename.tsv\].', validator.validate_value, NON_UTF8_DATA, 80, 'filename.tsv', 10)
def test_get_row_object_invalid(self): file_row = ['FFOO', '123a'] row_validators = { 'FFOO': [ cell_validators.StringValidator('RecordType', self.logger, False), cell_validators.IntegerValidator( 'NumberOfLines', self.logger, False)]} parser = self._get_file_parser(row_validators) with six.assertRaisesRegex( self, error.CellValidationFailure, r'Cell "NumberOfLines" contains invalid value "123a". Value was ' r'expected to be an integer. \[Block: 1, Row: 8, file=filename\]'): parser.get_row_object(file_row, 'FFOO', 8, 1)
def test_parse_xsd_file_valid_row_types_in_a_specific_row(self): """Tests the expected cells in a specific row.""" rows_validators = self.dsrf_schema_parser.parse_xsd_file(self.logger) expected_su02_validators = [ cell_validators.FixedStringValidator({}, 'RecordType', self.logger, True, False), cell_validators.StringValidator('BlockId', self.logger, True, False), cell_validators.StringValidator('SalesTransactionId', self.logger, True, False), cell_validators.StringValidator('TransactedReleaseOrResource', self.logger, True, False), cell_validators.StringValidator('CommercialModelType', self.logger, True, False), cell_validators.FixedStringValidator({}, 'UseType', self.logger, True, False), cell_validators.StringValidator('Territory', self.logger, True, False), cell_validators.StringValidator('ServiceDescription', self.logger, False, False), cell_validators.BooleanValidator('IsRoyaltyBearing', self.logger, True, False), cell_validators.IntegerValidator('NumberOfStreams', self.logger, True, False), cell_validators.StringValidator('Currency', self.logger, False, False), cell_validators.DecimalValidator('PriceConsumerPaidExcSalesTax', self.logger, False, False), cell_validators.StringValidator('PromotionalActivity', self.logger, False, False), cell_validators.BooleanValidator('PreviewAvailable', self.logger, False, False), ] for actual_cell, expected_cell in zip(rows_validators['SU02'], expected_su02_validators): self.assertIsInstance(actual_cell, expected_cell.__class__) self.assertEquals(actual_cell.cell_name, expected_cell.cell_name, self.logger) self.assertEquals(actual_cell.required, expected_cell.required) self.assertEquals(actual_cell.repeated, expected_cell.repeated)
def get_validator(self): return cell_validators.StringValidator('string_cell', self.logger)
def setUp(self): self.maxDiff = None # Allow self.assertMultiLineEqual to show all diffs. self.logger = dsrf_logger.DSRFLogger(__name__, '/tmp/example.log', True) self.row_validators_list = { 'FHEA': [ cell_validators.StringValidator('RecordType', self.logger, False), cell_validators.StringValidator('MessageId', self.logger, False), cell_validators.IntegerValidator('FileNumber', self.logger, False), cell_validators.IntegerValidator('NumberOfFiles', False, False)], 'SY03': [ cell_validators.StringValidator('RecordType', self.logger, False), cell_validators.StringValidator( 'CommercialModelType', self.logger, False), cell_validators.StringValidator('UseType', self.logger, False), cell_validators.StringValidator('Territory', self.logger, False), cell_validators.StringValidator( 'ServiceDescription', self.logger, False), cell_validators.IntegerValidator( 'NumberOfUsages', self.logger, False)], 'RE01': [ cell_validators.StringValidator('RecordType', self.logger, False), cell_validators.StringValidator('BlockId', self.logger, False), cell_validators.StringValidator( 'ReleaseReference', self.logger, False), cell_validators.StringValidator( 'DspReleaseId', self.logger, False)], 'AS02': [ cell_validators.StringValidator('RecordType', self.logger, False), cell_validators.StringValidator('BlockId', self.logger, False), cell_validators.StringValidator( 'ResourceReference', self.logger, False), cell_validators.StringValidator( 'DspResourceId', self.logger, False), cell_validators.StringValidator('ISRC', self.logger, False), cell_validators.StringValidator('Title', self.logger, False)], 'FFOO': [ cell_validators.StringValidator('RecordType', self.logger, False), cell_validators.IntegerValidator( 'NumberOfLines', self.logger, False)] } self.expected_blocks = [ self.block_from_ascii(HEAD_BLOCK), self.block_from_ascii(BODY_BLOCK), self.block_from_ascii(FOOT_BLOCK)]