(self)
| 1399 | "" in F("name") |
| 1400 | |
| 1401 | def test_replace_expressions_transform(self): |
| 1402 | replacements = {F("timestamp"): Value(None)} |
| 1403 | transform_ref = F("timestamp__date") |
| 1404 | self.assertIs(transform_ref.replace_expressions(replacements), transform_ref) |
| 1405 | invalid_transform_ref = F("timestamp__invalid") |
| 1406 | self.assertIs( |
| 1407 | invalid_transform_ref.replace_expressions(replacements), |
| 1408 | invalid_transform_ref, |
| 1409 | ) |
| 1410 | replacements = {F("timestamp"): Value(datetime.datetime(2025, 3, 1, 14, 10))} |
| 1411 | self.assertEqual( |
| 1412 | F("timestamp__date").replace_expressions(replacements), |
| 1413 | TruncDate(Value(datetime.datetime(2025, 3, 1, 14, 10))), |
| 1414 | ) |
| 1415 | self.assertEqual( |
| 1416 | F("timestamp__date__day").replace_expressions(replacements), |
| 1417 | ExtractDay(TruncDate(Value(datetime.datetime(2025, 3, 1, 14, 10)))), |
| 1418 | ) |
| 1419 | invalid_nested_transform_ref = F("timestamp__date__invalid") |
| 1420 | self.assertIs( |
| 1421 | invalid_nested_transform_ref.replace_expressions(replacements), |
| 1422 | invalid_nested_transform_ref, |
| 1423 | ) |
| 1424 | # `replacements` is not unnecessarily looked up a second time for |
| 1425 | # transform-less field references as it's the case the vast majority of |
| 1426 | # the time. |
| 1427 | mock_replacements = mock.Mock() |
| 1428 | mock_replacements.get.return_value = None |
| 1429 | field_ref = F("name") |
| 1430 | self.assertIs(field_ref.replace_expressions(mock_replacements), field_ref) |
| 1431 | mock_replacements.get.assert_called_once_with(field_ref) |
| 1432 | |
| 1433 | |
| 1434 | class ExpressionsTests(TestCase): |
nothing calls this directly
no test coverage detected