50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
| import pytest
 | |
| from django.db import connection
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "factory_name,fields",
 | |
|     [
 | |
|         ("music.Artist", ["name"]),
 | |
|         ("music.Album", ["title"]),
 | |
|         ("music.Track", ["title"]),
 | |
|     ],
 | |
| )
 | |
| def test_body_text_trigger_creation(factory_name, fields, factories):
 | |
|     obj = factories[factory_name]()
 | |
|     obj.refresh_from_db()
 | |
|     cursor = connection.cursor()
 | |
|     sql = """
 | |
|         SELECT to_tsvector('english_nostop', '{indexed_text}')
 | |
|     """.format(
 | |
|         indexed_text=" ".join([getattr(obj, f) for f in fields if getattr(obj, f)]),
 | |
|     )
 | |
|     cursor.execute(sql)
 | |
| 
 | |
|     assert cursor.fetchone()[0] == obj.body_text
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "factory_name,fields",
 | |
|     [
 | |
|         ("music.Artist", ["name"]),
 | |
|         ("music.Album", ["title"]),
 | |
|         ("music.Track", ["title"]),
 | |
|     ],
 | |
| )
 | |
| def test_body_text_trigger_updaten(factory_name, fields, factories, faker):
 | |
|     obj = factories[factory_name]()
 | |
|     for field in fields:
 | |
|         setattr(obj, field, faker.sentence())
 | |
|     obj.save()
 | |
|     obj.refresh_from_db()
 | |
|     cursor = connection.cursor()
 | |
|     sql = """
 | |
|         SELECT to_tsvector('english_nostop', '{indexed_text}')
 | |
|     """.format(
 | |
|         indexed_text=" ".join([getattr(obj, f) for f in fields if getattr(obj, f)]),
 | |
|     )
 | |
|     cursor.execute(sql)
 | |
| 
 | |
|     assert cursor.fetchone()[0] == obj.body_text
 |