68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| from funkwhale_api.moderation import mrf
 | |
| 
 | |
| 
 | |
| def test_mrf_inbox_registry_apply_empty(mrf_inbox_registry, mocker):
 | |
|     payload = {"hello": "world"}
 | |
|     new_payload, updated = mrf_inbox_registry.apply(payload)
 | |
| 
 | |
|     assert new_payload == payload
 | |
|     assert updated is False
 | |
| 
 | |
| 
 | |
| def test_mrf_inbox_registry_apply_simple(mrf_inbox_registry, mocker):
 | |
|     rule = mocker.Mock(return_value="test")
 | |
|     payload = {"hello": "world"}
 | |
|     mrf_inbox_registry.register(rule, name="rule")
 | |
| 
 | |
|     new_payload, updated = mrf_inbox_registry.apply(payload)
 | |
| 
 | |
|     assert new_payload == "test"
 | |
|     assert updated is True
 | |
| 
 | |
| 
 | |
| def test_mrf_inbox_registry_apply_skipped(mrf_inbox_registry, mocker):
 | |
|     rule = mocker.Mock(side_effect=mrf.Skip())
 | |
|     payload = {"hello": "world"}
 | |
|     mrf_inbox_registry.register(rule, name="rule")
 | |
| 
 | |
|     new_payload, updated = mrf_inbox_registry.apply(payload)
 | |
| 
 | |
|     assert new_payload == payload
 | |
|     assert updated is False
 | |
| 
 | |
| 
 | |
| def test_mrf_inbox_registry_apply_discard(mrf_inbox_registry, mocker):
 | |
|     rule1 = mocker.Mock(return_value=None)
 | |
|     rule2 = mocker.Mock(side_effect=mrf.Discard())
 | |
| 
 | |
|     mrf_inbox_registry.register(rule1, name="rule1")
 | |
|     mrf_inbox_registry.register(rule2, name="rule2")
 | |
| 
 | |
|     payload = {"hello": "world"}
 | |
|     assert mrf_inbox_registry.apply(payload, arg1="value1") == (None, False)
 | |
| 
 | |
|     rule1.assert_called_once_with(payload, arg1="value1")
 | |
|     rule2.assert_called_once_with(payload, arg1="value1")
 | |
| 
 | |
| 
 | |
| def test_mrf_inbox_registry_use_returned_payload(mrf_inbox_registry, mocker):
 | |
|     rule1 = mocker.Mock(return_value="payload1")
 | |
|     rule2 = mocker.Mock(return_value="payload2")
 | |
| 
 | |
|     mrf_inbox_registry.register(rule1, name="rule1")
 | |
|     mrf_inbox_registry.register(rule2, name="rule2")
 | |
| 
 | |
|     payload = {"hello": "world"}
 | |
| 
 | |
|     assert mrf_inbox_registry.apply(payload) == ("payload2", True)
 | |
|     rule1.assert_called_once_with(payload)
 | |
|     rule2.assert_called_once_with("payload1")
 | |
| 
 | |
| 
 | |
| def test_mrf_inbox_registry_skip_errors(mrf_inbox_registry, mocker):
 | |
|     rule1 = mocker.Mock(side_effect=Exception())
 | |
| 
 | |
|     mrf_inbox_registry.register(rule1, name="rule1")
 | |
| 
 | |
|     assert mrf_inbox_registry.apply("payload") == ("payload", False)
 |