Exemplo n.º 1
0
 def test_type_is_defined_with_first_value(self):
   tables = import_json.dumps([{'a': 'some text'}, {'a': 3}], '')
   self.assertIsNotNone(tables['tables'])
   self.assertIsNotNone(tables['tables'][0])
   self.assertIsNotNone(tables['tables'][0]['column_metadata'])
   self.assertIsNotNone(tables['tables'][0]['column_metadata'][0])
   self.assertEqual(tables['tables'][0]['column_metadata'][0]['type'], 'Text')
Exemplo n.º 2
0
 def test_json_dict(self):
   self.assertEqual(
     import_json.dumps({
       'foo': [{'a': 1, 'b': 'santa'}, {'a': 4, 'b': 'cats'}],
       'bar': [{'c': 2, 'd': 'ducks'}, {'c': 5, 'd': 'dogs'}],
       'status': {'success': True, 'time': '5s'}
     }, 'Hello')['tables'], [{
         'table_name': 'Hello',
         'column_metadata': [{'id': 'status', 'type': 'Ref:Hello_status'}],
         'table_data': [[1]]
       }, {
         'table_name': 'Hello_bar',
         'column_metadata': [
           {'id': 'c', 'type': 'Int'},
           {'id': 'd', 'type': 'Text'},
           {'id': 'Hello', 'type': 'Ref:Hello'}
         ],
         'table_data': [[2, 5], ['ducks', 'dogs'], [1, 1]]
       }, {
         'table_name': 'Hello_foo',
         'column_metadata': [
           {'id': 'a', 'type': 'Int'},
           {'id': 'b', 'type': 'Text'},
           {'id': 'Hello', 'type': 'Ref:Hello'}],
         'table_data': [[1, 4], ['santa', 'cats'], [1, 1]]
       }, {
         'table_name': 'Hello_status',
         'column_metadata': [
           {'id': 'success', 'type': 'Bool'},
           {'id': 'time', 'type': 'Text'}
         ],
         'table_data': [[True], ['5s']]
       }])
Exemplo n.º 3
0
 def test_simple_json_array(self):
   grist_tables = import_json.dumps([{'a': 1, 'b': 'baba'}, {'a': 4, 'b': 'abab'}], '')
   self.assertEqual(grist_tables['tables'], [{
     'column_metadata': [
       {'id': 'a', 'type': 'Int'}, {'id': 'b', 'type': 'Text'}],
     'table_data': [[1, 4],  ['baba', 'abab']],
     'table_name': ''
   }])
Exemplo n.º 4
0
 def test_missing_data(self):
   grist_tables = import_json.dumps([{'a': 1}, {'b': 'abab'}, {'a': 4}])
   self.assertEqual(grist_tables['tables'], [{
     'column_metadata': [
       {'id': 'a', 'type': 'Int'}, {'id': 'b', 'type': 'Text'}],
     'table_data': [[1, None, 4],  [None, 'abab', None]],
     'table_name': ''
   }])
Exemplo n.º 5
0
 def test_even_more_simple_array(self):
   self.assertEqual(
     import_json.dumps(['apple', 'pear', 'banana'], '')['tables'],
     [{
       'column_metadata': [
         {'id': '', 'type': 'Text'}],
       'table_data': [['apple', 'pear', 'banana']],
       'table_name': ''
       }])
Exemplo n.º 6
0
def dump_tables(options):
  data = {
    "foos": [
      {'foo': 1, 'link': [1, 2]},
      {'foo': 2, 'link': [1, 2]}
    ],
    "bar": {'hi': 'santa'}
  }
  return [t for t in import_json.dumps(data, 'FooBar', options)['tables']]
Exemplo n.º 7
0
 def test_mixing_simple_and_even_more_simple(self):
   self.assertEqual(
     import_json.dumps(['apple', 'pear', {'a': 'some cucumbers'}, 'banana'], '')['tables'],
     [{
       'column_metadata': [
         {'id': '', 'type': 'Text'},
         {'id': 'a', 'type': 'Text'}],
       'table_data': [['apple', 'pear', None, 'banana'], [None, None, 'some cucumbers', None]],
       'table_name': ''
       }])
Exemplo n.º 8
0
 def test_array_with_list(self):
   self.assertEqual(
     import_json.dumps([{'a': ['ES', 'FR', 'US']}, {'a': ['FR']}], 'Hello')['tables'],
     [{
       'column_metadata': [],
       'table_data': [],
       'table_name': 'Hello'
       }, {
         'column_metadata': [{'id': '', 'type': 'Text'}, {'id': 'Hello', 'type': 'Ref:Hello'}],
         'table_data': [['ES', 'FR', 'US', 'FR'], [1, 1, 1, 2]],
         'table_name': 'Hello_a'
       }])
Exemplo n.º 9
0
 def test_array_of_array(self):
   self.assertEqual(
     import_json.dumps([['FR', 'US'], ['ES', 'CH']], 'Hello')['tables'],
     [{
         'column_metadata': [],
         'table_data': [],
         'table_name': 'Hello'
       }, {
         'column_metadata': [{'id': '', 'type': 'Text'}, {'id': 'Hello', 'type': 'Ref:Hello'}],
         'table_data': [['FR', 'US', 'ES', 'CH'], [1, 1, 2, 2]],
         'table_name': 'Hello_'
       }, ])
Exemplo n.º 10
0
 def test_array_with_list_of_dict(self):
   self.assertEqual(
     import_json.dumps([{'a': [{'b': 1}, {'b': 4}]}, {'c': 2}], 'Hello')['tables'],
     [ {
         'column_metadata': [{'id': 'c', 'type': 'Int'}],
         'table_data': [[None, 2]],
         'table_name': 'Hello'
       }, {
         'column_metadata': [
           {'id': 'b', 'type': 'Int'},
           {'id': 'Hello', 'type': 'Ref:Hello'}
         ],
         'table_data': [[1, 4], [1, 1]],
         'table_name': 'Hello_a'
       }])
Exemplo n.º 11
0
 def test_array_with_reference(self):
   # todo: reference should follow Grist's format
   self.assertEqual(
     import_json.dumps([{'a': {'b': 2}, 'c': 'foo'}], 'Hello')['tables'],
     [{
         'column_metadata': [
           {'id': 'a', 'type': 'Ref:Hello_a'}, {'id': 'c', 'type': 'Text'}
         ],
         'table_data': [[1],  ['foo']],
         'table_name': 'Hello'
       }, {
         'column_metadata': [
           {'id': 'b', 'type': 'Int'}
         ],
         'table_data': [[2]],
         'table_name': 'Hello_a'
       }])
Exemplo n.º 12
0
 def test_json_types(self):
   self.assertEqual(import_json.dumps({
     'a': 3, 'b': 3.14, 'c': True, 'd': 'name', 'e': -4, 'f': '3.14', 'g': None
   }, 'Hello')['tables'],
     [{
       'table_name': 'Hello',
       'column_metadata': [
         {'id': 'a', 'type': 'Int'},
         {'id': 'b', 'type': 'Numeric'},
         {'id': 'c', 'type': 'Bool'},
         {'id': 'd', 'type': 'Text'},
         {'id': 'e', 'type': 'Int'},
         {'id': 'f', 'type': 'Text'},
         {'id': 'g', 'type': 'Text'}
       ],
     'table_data': [[3], [3.14], [True], ['name'], [-4], ['3.14'], [None]]
     }])
Exemplo n.º 13
0
 def test_nested_nested_object(self):
   self.assertEqual(
     import_json.dumps([{'a': {'b': 2, 'd': {'a': 'sugar'}}, 'c': 'foo'}], 'Hello')['tables'],
     [{
         'column_metadata': [
           {'id': 'a', 'type': 'Ref:Hello_a'}, {'id': 'c', 'type': 'Text'}
         ],
         'table_data': [[1],  ['foo']],
         'table_name': 'Hello'
       }, {
         'column_metadata': [
           {'id': 'b', 'type': 'Int'}, {'id': 'd', 'type': 'Ref:Hello_a_d'}
         ],
         'table_data': [[2], [1]],
         'table_name': 'Hello_a'
       }, {
         'column_metadata': [
           {'id': 'a', 'type': 'Text'}
         ],
         'table_data': [['sugar']],
         'table_name': 'Hello_a_d'
       }])