Skip to content

Commit 183eee4

Browse files
authored
test(service_feedback): adding tests for oncall service feedback (Netflix#5386)
1 parent f2a1493 commit 183eee4

File tree

4 files changed

+141
-0
lines changed

4 files changed

+141
-0
lines changed

tests/conftest.py

+6
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
ReportFactory,
6363
SearchFilterFactory,
6464
ServiceFactory,
65+
ServiceFeedbackFactory,
6566
SignalFactory,
6667
SignalFilterFactory,
6768
SignalInstanceFactory,
@@ -669,3 +670,8 @@ def cost_model(session):
669670
@pytest.fixture
670671
def cost_model_activity(session):
671672
return CostModelActivityFactory()
673+
674+
675+
@pytest.fixture
676+
def service_feedback(session):
677+
return ServiceFeedbackFactory()

tests/factories.py

+33
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353
from dispatch.route.models import Recommendation, RecommendationMatch
5454
from dispatch.search_filter.models import SearchFilter
5555
from dispatch.service.models import Service
56+
from dispatch.feedback.service.models import ServiceFeedback
57+
from dispatch.feedback.service.enums import ServiceFeedbackRating
5658
from dispatch.signal.models import Signal, SignalFilter, SignalInstance
5759
from dispatch.storage.models import Storage
5860
from dispatch.tag.models import Tag
@@ -1450,3 +1452,34 @@ def creator(self, create, extracted, **kwargs):
14501452

14511453
if extracted:
14521454
self.creator_id = extracted.id
1455+
1456+
1457+
class ServiceFeedbackFactory(BaseFactory):
1458+
"""Service Feedback Factory."""
1459+
1460+
rating = FuzzyChoice(
1461+
[
1462+
ServiceFeedbackRating.no_effort,
1463+
ServiceFeedbackRating.little_effort,
1464+
ServiceFeedbackRating.moderate_effort,
1465+
ServiceFeedbackRating.lots_of_effort,
1466+
ServiceFeedbackRating.very_high_effort,
1467+
ServiceFeedbackRating.extreme_effort,
1468+
]
1469+
)
1470+
feedback = FuzzyText()
1471+
hours = FuzzyInteger(low=0, high=100)
1472+
project = SubFactory(ProjectFactory)
1473+
1474+
class Meta:
1475+
"""Factory Configuration."""
1476+
1477+
model = ServiceFeedback
1478+
1479+
@post_generation
1480+
def individual(self, create, extracted, **kwargs):
1481+
if not create:
1482+
return
1483+
1484+
if extracted:
1485+
self.individual_id = extracted.id

tests/feedback/test_feedback_cases.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
def test_create(session, case, case_type, case_priority):
2+
from dispatch.feedback.incident.service import create
3+
from dispatch.feedback.incident.models import FeedbackCreate
4+
5+
case.incident_type = case_type
6+
case.incident_priority = case_priority
7+
rating = "Neither satisfied nor dissatisfied"
8+
feedback = "The incident commander did an excellent job"
9+
10+
feedback_in = FeedbackCreate(rating=rating, feedback=feedback, case=case)
11+
feedback = create(db_session=session, feedback_in=feedback_in)
12+
assert feedback
13+
14+
15+
def test_get(session, feedback):
16+
from dispatch.feedback.incident.service import get
17+
18+
t_feedback = get(db_session=session, feedback_id=feedback.id)
19+
assert t_feedback.id == feedback.id
20+
21+
22+
def test_get_all(session, feedbacks):
23+
from dispatch.feedback.incident.service import get_all
24+
25+
t_feedbacks = get_all(db_session=session).all()
26+
assert t_feedbacks
27+
28+
29+
def test_update(session, feedback):
30+
from dispatch.feedback.incident.service import update
31+
from dispatch.feedback.incident.models import FeedbackUpdate
32+
33+
rating = "Very satisfied"
34+
feedback_text = "The incident commander did an excellent job"
35+
36+
feedback_in = FeedbackUpdate(rating=rating, feedback=feedback_text)
37+
feedback = update(db_session=session, feedback=feedback, feedback_in=feedback_in)
38+
39+
assert feedback.rating == rating
40+
assert feedback.feedback == feedback_text
41+
42+
43+
def test_delete(session, feedback):
44+
from dispatch.feedback.incident.service import delete, get
45+
46+
delete(db_session=session, feedback_id=feedback.id)
47+
assert not get(db_session=session, feedback_id=feedback.id)
+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
""" Tests oncall service feedback """
2+
3+
4+
def test_create(session, participant, project):
5+
from dispatch.feedback.service.service import create
6+
from dispatch.feedback.service.models import ServiceFeedbackCreate
7+
8+
feedback = "Not a difficult shift"
9+
hours = 5
10+
rating = "No effort"
11+
12+
feedback_in = ServiceFeedbackCreate(
13+
individual=participant.individual,
14+
rating=rating,
15+
feedback=feedback,
16+
hours=hours,
17+
project=project,
18+
)
19+
feedback = create(db_session=session, service_feedback_in=feedback_in)
20+
assert feedback
21+
22+
23+
def test_get(session, service_feedback):
24+
from dispatch.feedback.service.service import get
25+
26+
t_feedback = get(db_session=session, service_feedback_id=service_feedback.id)
27+
assert t_feedback.id == service_feedback.id
28+
29+
30+
def test_get_all(session):
31+
from dispatch.feedback.service.service import get_all
32+
33+
t_feedbacks = get_all(db_session=session).all()
34+
assert t_feedbacks
35+
36+
37+
def test_update(session, service_feedback):
38+
from dispatch.feedback.service.service import update
39+
from dispatch.feedback.service.models import ServiceFeedbackUpdate
40+
41+
feedback_text = "Changed my mind. The shift was difficult"
42+
43+
feedback_in = ServiceFeedbackUpdate(id=service_feedback.id, feedback=feedback_text)
44+
feedback = update(
45+
db_session=session, service_feedback=service_feedback, service_feedback_in=feedback_in
46+
)
47+
48+
assert feedback.feedback == feedback_text
49+
50+
51+
def test_delete(session, service_feedback):
52+
from dispatch.feedback.service.service import delete, get
53+
54+
delete(db_session=session, service_feedback_id=service_feedback.id)
55+
assert not get(db_session=session, service_feedback_id=service_feedback.id)

0 commit comments

Comments
 (0)