Merge pull request 'FIX(promotions): resolve user UUID before saving application events' (#3) from feature/debug-v2 into master
Reviewed-on: #3
This commit is contained in:
commit
079c795065
2 changed files with 43 additions and 6 deletions
|
|
@ -720,6 +720,46 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
print(response.json())
|
print(response.json())
|
||||||
self.assertEqual(response.status_code, 404)
|
self.assertEqual(response.status_code, 404)
|
||||||
|
|
||||||
|
def test_application_event_viewset_create_success(self):
|
||||||
|
EventSaver.objects.get_or_create(
|
||||||
|
title=self.first_ad_view_reward_label,
|
||||||
|
event_label=self.first_ad_view_reward_label,
|
||||||
|
save_once=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
auth = self._create_authorization_header(self.application_access_token.token)
|
||||||
|
event_create_data = {
|
||||||
|
'label': self.first_ad_view_reward_label,
|
||||||
|
'data': {'foo': 'bar'},
|
||||||
|
}
|
||||||
|
|
||||||
|
url = reverse('promotions-application:event-list', kwargs={'user_uuid': str(self.user_1_uuid)})
|
||||||
|
response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 201)
|
||||||
|
event = Event.objects.get(label=self.first_ad_view_reward_label)
|
||||||
|
self.assertEqual(event.user, self.user_1_uuid)
|
||||||
|
|
||||||
|
def test_application_event_viewset_create_duplicate_returns_unprocessable_entity(self):
|
||||||
|
EventSaver.objects.get_or_create(
|
||||||
|
title=self.first_ad_view_reward_label,
|
||||||
|
event_label=self.first_ad_view_reward_label,
|
||||||
|
save_once=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
auth = self._create_authorization_header(self.application_access_token.token)
|
||||||
|
event_create_data = {
|
||||||
|
'label': self.first_ad_view_reward_label,
|
||||||
|
'data': {'foo': 'bar'},
|
||||||
|
}
|
||||||
|
|
||||||
|
url = reverse('promotions-application:event-list', kwargs={'user_uuid': str(self.user_1_uuid)})
|
||||||
|
first_response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
self.assertEqual(first_response.status_code, 201)
|
||||||
|
|
||||||
|
second_response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
self.assertEqual(second_response.status_code, 422)
|
||||||
|
|
||||||
def _create_first_ad_create_plan(self):
|
def _create_first_ad_create_plan(self):
|
||||||
event_label = 'ads::first-ad-create'
|
event_label = 'ads::first-ad-create'
|
||||||
plan_title = 'first-ad-create'
|
plan_title = 'first-ad-create'
|
||||||
|
|
|
||||||
|
|
@ -145,18 +145,15 @@ class ApplicationEventViewSet(
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
def perform_create(self, serializer: EventSerializer):
|
def perform_create(self, serializer: EventSerializer):
|
||||||
if hasattr(self.request, 'user'):
|
user = self._resolve_user()
|
||||||
user = self.request.user
|
|
||||||
else:
|
|
||||||
user = None
|
|
||||||
|
|
||||||
application = get_application(self.request)
|
application = get_application(self.request)
|
||||||
# EventSaver.objects.first(event_label=serializer.validated_data['event_label'], valid_application__contains=application.uuid)
|
# EventSaver.objects.first(event_label=serializer.validated_data['event_label'], valid_application__contains=application.uuid)
|
||||||
event_saver: EventSaver = EventSaver.objects.filter(event_label=serializer.validated_data['label']).first()
|
event_saver: EventSaver = EventSaver.objects.filter(event_label=serializer.validated_data['label']).first()
|
||||||
try:
|
try:
|
||||||
event = event_saver.save_event(user=user, application=application, **serializer.validated_data)
|
event = event_saver.save_event(user=user.uuid, application=application, **serializer.validated_data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise exceptions.ValidationError(str(e))
|
raise UnprocessableEntity(str(e))
|
||||||
|
|
||||||
analyze_event_task.delay(event.uuid)
|
analyze_event_task.delay(event.uuid)
|
||||||
serializer.instance = event
|
serializer.instance = event
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue