-
Notifications
You must be signed in to change notification settings - Fork 358
Expand file tree
/
Copy pathtest_metric_mixin.py
More file actions
35 lines (29 loc) · 1.03 KB
/
test_metric_mixin.py
File metadata and controls
35 lines (29 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from unittest import mock
import pytest
import elasticsearch_metrics.imps.elastic6 as metrics
from osf.metrics.metric_mixin import MetricMixin
from osf.models import OSFUser
from osf_tests.factories import UserFactory
class DummyMetric(MetricMixin, metrics.Metric):
count = metrics.Integer(doc_values=True, index=True, required=True)
user_id = metrics.Keyword(index=True, doc_values=True, required=False)
class Meta:
app_label = 'osf'
@pytest.mark.django_db
@mock.patch.object(DummyMetric, '_get_id_to_count')
def test_get_top_by_count(mock_get_id_to_count):
user1, user2 = UserFactory(), UserFactory()
mock_get_id_to_count.return_value = {
user1._id: 41,
user2._id: 42,
}
metric_qs = DummyMetric.get_top_by_count(
qs=OSFUser.objects.all(),
model_field='guids___id',
metric_field='user_id',
annotation='dummies',
size=None,
)
annotated_user = metric_qs.first()
assert annotated_user._id == user2._id
assert annotated_user.dummies == 42