47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| import pytest
 | |
| from django.urls import reverse
 | |
| 
 | |
| 
 | |
| def test_can_list_settings_via_api(preferences, api_client):
 | |
|     url = reverse("api:v1:instance:settings")
 | |
|     all_preferences = preferences.model.objects.all()
 | |
|     expected_preferences = {
 | |
|         p.preference.identifier(): p
 | |
|         for p in all_preferences
 | |
|         if getattr(p.preference, "show_in_api", False)
 | |
|     }
 | |
| 
 | |
|     assert len(expected_preferences) > 0
 | |
| 
 | |
|     response = api_client.get(url)
 | |
|     assert response.status_code == 200
 | |
|     assert len(response.data) == len(expected_preferences)
 | |
| 
 | |
|     for p in response.data:
 | |
|         i = "__".join([p["section"], p["name"]])
 | |
|         assert i in expected_preferences
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "pref,value",
 | |
|     [
 | |
|         ("instance__name", "My instance"),
 | |
|         ("instance__short_description", "For music lovers"),
 | |
|         ("instance__long_description", "For real music lovers"),
 | |
|     ],
 | |
| )
 | |
| def test_instance_settings(pref, value, preferences):
 | |
|     preferences[pref] = value
 | |
| 
 | |
|     assert preferences[pref] == value
 | |
| 
 | |
| 
 | |
| def test_instance_banner_assign_file_properly(preferences, avatar):
 | |
|     preferences["instance__banner"] = avatar
 | |
| 
 | |
|     avatar.seek(0)
 | |
|     banner = preferences["instance__banner"].read()
 | |
| 
 | |
|     assert len(banner) > 0
 | |
|     assert banner == avatar.read()
 |