test_generate.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from unittest import TestCase
  2. import MySQLdb as mysql
  3. from config import TEST_DB
  4. from generate import Model, php_value, php_assoc, flatten, read_tables, \
  5. read_fields
  6. class GenerateTest(TestCase):
  7. # TEST_DB = 'localhost', 'root', 'mysql12#$', 'modelgen_test'
  8. conn = mysql.connect(*TEST_DB)
  9. def setUp(self):
  10. self.model = Model('payments', {})
  11. def test_php_value_dict(self):
  12. self.assertEqual(php_value({}), 'array()')
  13. self.assertEqual(php_value({'foo': 1}), "array(\n\t'foo' => 1\n)")
  14. self.assertEqual(php_value({'foo': 1, 'bar': 'baz'}), """array(
  15. \t'foo' => 1,
  16. \t'bar' => 'baz'
  17. )""")
  18. self.assertEqual(php_value({'foo': tuple(range(3))}), """array(
  19. \t'foo' => array(0, 1, 2)
  20. )""")
  21. self.assertMultiLineEqual(php_value({'foo': set(range(2))}), """array(
  22. \t'foo' => array(
  23. \t\t0,
  24. \t\t1
  25. \t)
  26. )""")
  27. def test_php_value_tuple(self):
  28. self.assertEqual(php_value(()), 'array()')
  29. self.assertEqual(php_value((1,)), 'array(1)')
  30. self.assertEqual(php_value((1, 'foo')), "array(1, 'foo')")
  31. def test_php_value_set(self):
  32. self.assertEqual(php_value(set()), 'array()')
  33. self.assertEqual(php_value(set([1])), 'array(\n\t1\n)')
  34. self.assertEqual(php_value(set([1, 2])), 'array(\n\t1,\n\t2\n)')
  35. def test_php_value_non_iterable(self):
  36. self.assertEqual(php_value('foo'), "'foo'")
  37. self.assertEqual(php_value("foo's"), "'foo\\'s'")
  38. self.assertEqual(php_value(1), '1')
  39. def test_php_assoc(self):
  40. self.assertEqual(php_assoc(('users', {'through': 'payments'})),
  41. "array('users', 'through' => 'payments')")
  42. def test_flatten(self):
  43. self.assertEqual(flatten([['a'], ['b']]), ['a', 'b'])
  44. self.assertEqual(flatten([['a'], ['b'], ('c', 'd')]), list('abcd'))
  45. def test_read_tables(self):
  46. self.assertEqual(read_tables(self.conn),
  47. ['orders', 'payments', 'receipts', 'users'])
  48. def test_read_fields(self):
  49. fields = read_fields(self.conn, 'payments')
  50. self.assertEqual([field['Field'] for field in fields],
  51. ['id', 'amount', 'user_id', 'order_id'])
  52. def test_model_read_attributes(self):
  53. self.model.read_attributes(self.conn)
  54. self.assertEqual(self.model.accessible_attr, ['amount'])