application views
This commit is contained in:
parent
83582f25aa
commit
a7964ce0ab
3 changed files with 124 additions and 35 deletions
|
|
@ -58,8 +58,10 @@ class TokenMatchesViewSetActions(BasePermission):
|
||||||
if hasattr(token, "scope"): # OAuth 2
|
if hasattr(token, "scope"): # OAuth 2
|
||||||
required_action_scopes = self.get_required_action_scopes(request, view)
|
required_action_scopes = self.get_required_action_scopes(request, view)
|
||||||
|
|
||||||
# m = request.method.upper()
|
# TODO: use action map instead to analyze method
|
||||||
|
action_map = view.action_map
|
||||||
a = view.action
|
a = view.action
|
||||||
|
|
||||||
if a in required_action_scopes:
|
if a in required_action_scopes:
|
||||||
logger.debug(
|
logger.debug(
|
||||||
"Required scopes alternatives to access resource: {0}".format(
|
"Required scopes alternatives to access resource: {0}".format(
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,8 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
'promotions.user.self-plans:list-retrieve',
|
'promotions.user.self-plans:list-retrieve',
|
||||||
'promotions.application.user-promotions:promote',
|
'promotions.application.user-promotions:promote',
|
||||||
'promotions.application.user-promotions:list-retrieve',
|
'promotions.application.user-promotions:list-retrieve',
|
||||||
|
'promotions.application.user-plan:promote',
|
||||||
|
'promotions.application.user-plan:list-retrieve'
|
||||||
]
|
]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
@ -166,18 +168,24 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
'base_amount': 800
|
'base_amount': 800
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response = self.client.get(reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
|
response = self.client.get(
|
||||||
|
reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}),
|
||||||
|
event_create_data, HTTP_AUTHORIZATION=auth,
|
||||||
format='json')
|
format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
print(response.status_code)
|
print(response.status_code)
|
||||||
# response = self.client.post(reverse('promotions:user-promote', kwargs={"pk":self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
# response = self.client.post(reverse('promotions:user-promote', kwargs={"pk":self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}),
|
||||||
|
event_create_data, HTTP_AUTHORIZATION=auth,
|
||||||
format='json')
|
format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
self.first_ad_view_reward_plan.refresh_from_db()
|
self.first_ad_view_reward_plan.refresh_from_db()
|
||||||
self.assertEqual(self.first_ad_view_reward_plan.balance, 10000 - 800)
|
self.assertEqual(self.first_ad_view_reward_plan.balance, 10000 - 800)
|
||||||
|
|
||||||
response = self.client.get(reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
|
response = self.client.get(
|
||||||
|
reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}),
|
||||||
|
event_create_data, HTTP_AUTHORIZATION=auth,
|
||||||
format='json')
|
format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
|
|
||||||
|
|
@ -216,7 +224,9 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
'referral': self.user_2_uuid
|
'referral': self.user_2_uuid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.referral_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={"plan": self.referral_reward_plan.uuid}), event_create_data,
|
||||||
|
HTTP_AUTHORIZATION=auth,
|
||||||
format='json')
|
format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
self.referral_reward_plan.refresh_from_db()
|
self.referral_reward_plan.refresh_from_db()
|
||||||
|
|
@ -271,16 +281,21 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.assertEqual(Event.objects.count(), 0)
|
self.assertEqual(Event.objects.count(), 0)
|
||||||
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data,
|
||||||
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
self.settlement_reward_plan.refresh_from_db()
|
self.settlement_reward_plan.refresh_from_db()
|
||||||
self.assertEqual(self.settlement_reward_plan.balance, 100000)
|
self.assertEqual(self.settlement_reward_plan.balance, 100000)
|
||||||
self.assertEqual(Event.objects.count(), 1)
|
self.assertEqual(Event.objects.count(), 1)
|
||||||
|
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
|
||||||
|
submit_settlement_create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
|
||||||
|
submit_settlement_create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
|
|
||||||
|
|
@ -333,16 +348,21 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.assertEqual(Event.objects.count(), 0)
|
self.assertEqual(Event.objects.count(), 0)
|
||||||
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
response = self.client.post(reverse('promotions:event-create'), submit_referral_create_data,
|
||||||
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
self.settlement_reward_plan.refresh_from_db()
|
self.settlement_reward_plan.refresh_from_db()
|
||||||
self.assertEqual(self.settlement_reward_plan.balance, 100000)
|
self.assertEqual(self.settlement_reward_plan.balance, 100000)
|
||||||
self.assertEqual(Event.objects.count(), 1)
|
self.assertEqual(Event.objects.count(), 1)
|
||||||
|
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
|
||||||
|
submit_settlement_create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}), submit_settlement_create_data,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={'plan': str(self.settlement_reward_plan.uuid)}),
|
||||||
|
submit_settlement_create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
|
|
||||||
|
|
@ -438,10 +458,14 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
|
|
||||||
self.assertEqual(Event.objects.count(), 0)
|
self.assertEqual(Event.objects.count(), 0)
|
||||||
|
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}), serial_ad_1_event_create_data,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}),
|
||||||
|
serial_ad_1_event_create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}), serial_ad_2_event_create_data,
|
response = self.client.post(
|
||||||
|
reverse('promotions:promotion-create', kwargs={"plan": str(self.serial_promotion_plan.pk)}),
|
||||||
|
serial_ad_2_event_create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
|
||||||
# response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
# response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
|
@ -450,11 +474,14 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
response = self.client.post(reverse('promotions:event-create'), serial_ad_1_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
response = self.client.post(reverse('promotions:event-create'), serial_ad_1_event_create_data,
|
||||||
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
event_1 = Event.objects.first()
|
event_1 = Event.objects.first()
|
||||||
response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
response = self.client.post(reverse('promotions:event-create'), serial_ad_2_event_create_data,
|
||||||
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
event_2 = Event.objects.first()
|
event_2 = Event.objects.first()
|
||||||
response = self.client.post(reverse('promotions:event-create'), serial_ad_3_event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
response = self.client.post(reverse('promotions:event-create'), serial_ad_3_event_create_data,
|
||||||
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
event_3 = Event.objects.first()
|
event_3 = Event.objects.first()
|
||||||
|
|
||||||
analyze_event_task(event_1.uuid)
|
analyze_event_task(event_1.uuid)
|
||||||
|
|
@ -477,12 +504,12 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
base_promotion, _created = Promotion.objects.get_or_create(
|
base_promotion, _created = Promotion.objects.get_or_create(
|
||||||
user_uuid = self.user_1_uuid,
|
user_uuid=self.user_1_uuid,
|
||||||
application = self.application,
|
application=self.application,
|
||||||
plan = base_plan,
|
plan=base_plan,
|
||||||
state = PaymentStateChoices.SUCCESS,
|
state=PaymentStateChoices.SUCCESS,
|
||||||
base_amount = 10000,
|
base_amount=10000,
|
||||||
promotion_amount = 10000
|
promotion_amount=10000
|
||||||
)
|
)
|
||||||
|
|
||||||
promotion_event_saver, _created = EventSaver.objects.get_or_create(
|
promotion_event_saver, _created = EventSaver.objects.get_or_create(
|
||||||
|
|
@ -529,6 +556,65 @@ class ApplicationApiFlowsTests(APITestCase):
|
||||||
self.assertEqual(base_promotion.promotion_amount, 9000)
|
self.assertEqual(base_promotion.promotion_amount, 9000)
|
||||||
self.assertEqual(Event.objects.count(), 1)
|
self.assertEqual(Event.objects.count(), 1)
|
||||||
|
|
||||||
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(promotion_plan.uuid)}), create_data,
|
response = self.client.post(reverse('promotions:promotion-create', kwargs={'plan': str(promotion_plan.uuid)}),
|
||||||
|
create_data,
|
||||||
HTTP_AUTHORIZATION=auth, format='json')
|
HTTP_AUTHORIZATION=auth, format='json')
|
||||||
print(response.json())
|
print(response.json())
|
||||||
|
|
||||||
|
def test_application_promote_user_success(self):
|
||||||
|
self.first_ad_view_reward_event_saver, _created = EventSaver.objects.get_or_create(
|
||||||
|
title=self.first_ad_view_reward_label,
|
||||||
|
event_label=self.first_ad_view_reward_label,
|
||||||
|
save_once=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.first_ad_view_reward_plan, _created = Plan.objects.get_or_create(
|
||||||
|
title=self.first_ad_view_reward_label,
|
||||||
|
balance=10000,
|
||||||
|
user=self.user_1,
|
||||||
|
application=self.application,
|
||||||
|
event_list=[self.first_ad_view_reward_label]
|
||||||
|
)
|
||||||
|
|
||||||
|
self.first_ad_view_reward_recipient, _created = Recipient.objects.get_or_create(
|
||||||
|
label=self.first_ad_view_reward_label,
|
||||||
|
plan=self.first_ad_view_reward_plan,
|
||||||
|
wallet_uuid=self.user_1_uuid,
|
||||||
|
recipient_uuid_field="->event:user",
|
||||||
|
base_amount_field="event:base_amount",
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
auth = self._create_authorization_header(self.application_access_token.token)
|
||||||
|
event_create_data = {
|
||||||
|
'label': self.first_ad_view_reward_label,
|
||||||
|
"data": {
|
||||||
|
'user': self.user_1_uuid,
|
||||||
|
'base_amount': 800
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
url = reverse('promotions-application:plan-promote',
|
||||||
|
kwargs={"pk": self.first_ad_view_reward_plan.uuid, "user_uuid": self.user_1_uuid})
|
||||||
|
# url = reverse('promotions-application:plan-test', kwargs={"pk": self.first_ad_view_reward_plan.uuid, "user_uuid":self.user_1_uuid})
|
||||||
|
# response = self.client.get(url, event_create_data, HTTP_AUTHORIZATION=auth,
|
||||||
|
# format='json')
|
||||||
|
# print(response.json())
|
||||||
|
# print(response.status_code)
|
||||||
|
# response = self.client.post(reverse('promotions:user-promote', kwargs={"pk":self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
print(response.json())
|
||||||
|
|
||||||
|
response = self.client.post(url, event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
print(response.json())
|
||||||
|
|
||||||
|
self.first_ad_view_reward_plan.refresh_from_db()
|
||||||
|
self.assertEqual(self.first_ad_view_reward_plan.balance, 10000 - 800)
|
||||||
|
|
||||||
|
|
||||||
|
# response = self.client.get(reverse('promotions:promotion-list', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth,
|
||||||
|
# format='json')
|
||||||
|
# print(response.json())
|
||||||
|
|
||||||
|
# response = self.client.post(reverse('promotions:promotion-create', kwargs={"plan": self.first_ad_view_reward_plan.uuid}), event_create_data, HTTP_AUTHORIZATION=auth, format='json')
|
||||||
|
# print(response.json())
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,8 @@ class ApplicationPlanViewSet(
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
application = get_application(self.request)
|
application = get_application(self.request)
|
||||||
return Promotion.objects.filter(application=application)
|
# return Promotion.objects.filter(application=application)
|
||||||
|
return Plan.objects.all()
|
||||||
|
|
||||||
# def perform_create(self, serializer):
|
# def perform_create(self, serializer):
|
||||||
# user = self.get_user()
|
# user = self.get_user()
|
||||||
|
|
@ -48,7 +49,7 @@ class ApplicationPlanViewSet(
|
||||||
# promotion.promote(**promotion_args)
|
# promotion.promote(**promotion_args)
|
||||||
|
|
||||||
@action(detail=True, methods=['POST'], serializer_class=PromoteSerializer)
|
@action(detail=True, methods=['POST'], serializer_class=PromoteSerializer)
|
||||||
def promote(self, request, pk=None):
|
def promote(self, request, *args, pk=None, **kwargs):
|
||||||
plan = self.get_object()
|
plan = self.get_object()
|
||||||
application = get_application(self.request)
|
application = get_application(self.request)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue