test: add frappe.db.add_index

This commit is contained in:
Your Name 2021-09-07 17:40:55 +05:30
parent 07c5d0a28c
commit 74d6ed32d6
3 changed files with 38 additions and 8 deletions

View file

@ -256,11 +256,11 @@ class MariaDBDatabase(Database):
index_name=index_name
))
def add_index(self, doctype, fields, index_name=None):
def add_index(self, doctype: str, fields: List, index_name: str = None):
"""Creates an index with given fields if not already created.
Index name will be `fieldname1_fieldname2_index`"""
index_name = index_name or self.get_index_name(fields)
table_name = 'tab' + doctype
table_name = get_table_name(doctype)
if not self.has_index(table_name, index_name):
self.commit()
self.sql("""ALTER TABLE `%s`

View file

@ -258,7 +258,7 @@ class PostgresDatabase(Database):
return self.sql("""SELECT 1 FROM pg_indexes WHERE tablename='{table_name}'
and indexname='{index_name}' limit 1""".format(table_name=table_name, index_name=index_name))
def add_index(self, doctype, fields, index_name=None):
def add_index(self, doctype: str, fields: List, index_name: str = None):
"""Creates an index with given fields if not already created.
Index name will be `fieldname1_fieldname2_index`"""
table_name = get_table_name(doctype)

View file

@ -75,7 +75,7 @@ class TestDB(unittest.TestCase):
frappe.db.set_value("Print Settings", "Print Settings", fieldname, inp["value"])
self.assertEqual(frappe.db.get_single_value("Print Settings", fieldname), inp["value"])
#teardown
#teardown
clear_custom_fields("Print Settings")
def test_log_touched_tables(self):
@ -192,6 +192,7 @@ class TestDB(unittest.TestCase):
frappe.delete_doc(test_doctype, doc)
clear_custom_fields(test_doctype)
@run_only_if(db_type_is.MARIADB)
class TestDDLCommandsMaria(unittest.TestCase):
test_table_name = "TestNotes"
@ -200,7 +201,7 @@ class TestDDLCommandsMaria(unittest.TestCase):
frappe.db.commit()
frappe.db.sql(
f"""
CREATE TABLE `tab{self.test_table_name}` (`id` INT NULL,PRIMARY KEY (`id`));
CREATE TABLE `tab{self.test_table_name}` (`id` INT NULL, content TEXT, PRIMARY KEY (`id`));
"""
)
@ -225,7 +226,10 @@ class TestDDLCommandsMaria(unittest.TestCase):
def test_describe(self) -> None:
self.assertEqual(
(("id", "int(11)", "NO", "PRI", None, ""),),
(
("id", "int(11)", "NO", "PRI", None, ""),
("content", "text", "YES", "", None, ""),
),
frappe.db.describe(self.test_table_name),
)
@ -235,6 +239,17 @@ class TestDDLCommandsMaria(unittest.TestCase):
self.assertGreater(len(test_table_description), 0)
self.assertIn("varchar(255)", test_table_description[0])
def test_add_index(self) -> None:
index_name = "test_index"
frappe.db.add_index(self.test_table_name, ["id", "content(50)"], index_name)
indexs_in_table = frappe.db.sql(
f"""
SHOW INDEX FROM tab{self.test_table_name}
WHERE Key_name = '{index_name}';
"""
)
self.assertEquals(len(indexs_in_table), 2)
@run_only_if(db_type_is.POSTGRES)
class TestDDLCommandsPost(unittest.TestCase):
@ -243,7 +258,7 @@ class TestDDLCommandsPost(unittest.TestCase):
def setUp(self) -> None:
frappe.db.sql(
f"""
CREATE TABLE "tab{self.test_table_name}" ("id" INT NULL,PRIMARY KEY ("id"))
CREATE TABLE "tab{self.test_table_name}" ("id" INT NULL, content text, PRIMARY KEY ("id"))
"""
)
@ -268,7 +283,9 @@ class TestDDLCommandsPost(unittest.TestCase):
self.test_table_name = new_table_name
def test_describe(self) -> None:
self.assertEqual([("id",)], frappe.db.describe(self.test_table_name))
self.assertEqual(
[("id",), ("content",)], frappe.db.describe(self.test_table_name)
)
def test_change_type(self) -> None:
frappe.db.change_column_type(self.test_table_name, "id", "varchar(255)")
@ -286,3 +303,16 @@ class TestDDLCommandsPost(unittest.TestCase):
)
self.assertGreater(len(check_change), 0)
self.assertIn("character varying", check_change[0])
def test_add_index(self) -> None:
index_name = "test_index"
frappe.db.add_index(self.test_table_name, ["id", "content(50)"], index_name)
indexs_in_table = frappe.db.sql(
f"""
SELECT indexname
FROM pg_indexes
WHERE tablename = 'tab{self.test_table_name}'
AND indexname = '{index_name}' ;
""",
)
self.assertEquals(len(indexs_in_table), 1)