mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 10:05:21 +00:00
408 lines
22 KiB
Python
408 lines
22 KiB
Python
"""
|
|
web_admin test set up file
|
|
"""
|
|
# django imports
|
|
from django.test import TestCase
|
|
from django.contrib.auth import get_user_model
|
|
from django.conf import settings
|
|
from rest_framework.test import APITestCase
|
|
from rest_framework.test import APIClient
|
|
|
|
# local imports
|
|
from guardian.models import Guardian, JuniorTask
|
|
from junior.models import Junior, JuniorPoints
|
|
from web_admin.models import Article, ArticleCard, ArticleSurvey, SurveyOption
|
|
|
|
# user model
|
|
User = get_user_model()
|
|
|
|
# image data in base 64 string
|
|
base64_image = ("data:image/jpeg;base64,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")
|
|
|
|
# export excel path and
|
|
# export excel url
|
|
export_excel_path = 'analytics/ZOD_Bank_Analytics.xlsx'
|
|
export_excel_url = f"https://{settings.ALIYUN_OSS_BUCKET_NAME}.{settings.ALIYUN_OSS_ENDPOINT}/{export_excel_path}"
|
|
|
|
|
|
class BaseSetUp(APITestCase):
|
|
"""
|
|
basic setup
|
|
"""
|
|
|
|
def setUp(self) -> None:
|
|
"""
|
|
user data
|
|
:return:
|
|
"""
|
|
# user and admin email
|
|
self.user_email = 'user@example.com'
|
|
self.admin_email = 'admin@example.com'
|
|
self.client = APIClient()
|
|
|
|
# create user
|
|
self.user = User.objects.create_user(username=self.user_email, email=self.user_email)
|
|
self.user.set_password('user@1234')
|
|
self.user.save()
|
|
|
|
# create admin
|
|
self.admin_user = User.objects.create_user(username=self.admin_email, email=self.admin_email,
|
|
is_staff=True, is_superuser=True)
|
|
self.admin_user.set_password('admin@1234')
|
|
self.admin_user.save()
|
|
|
|
|
|
class ArticleTestSetUp(BaseSetUp):
|
|
"""
|
|
test cases data set up
|
|
for article create, update, list, retrieve and
|
|
remove card, survey and add test card, list test card and
|
|
default image upload and list
|
|
"""
|
|
|
|
def setUp(self):
|
|
"""
|
|
set up data for test
|
|
create user and admin
|
|
create article, article card and article survey and survey options
|
|
:return:
|
|
"""
|
|
super(ArticleTestSetUp, self).setUp()
|
|
|
|
# create article
|
|
self.article = Article.objects.create(title="Existing Article", description="Existing Description",
|
|
is_published=True)
|
|
# create article card
|
|
self.article_card = ArticleCard.objects.create(article=self.article, title="Existing Card 1",
|
|
description="Existing Card 1 Description")
|
|
# create article survey
|
|
self.article_survey = ArticleSurvey.objects.create(article=self.article, points=5,
|
|
question="Existing Survey Question 1")
|
|
# create article survey options
|
|
SurveyOption.objects.create(survey=self.article_survey, option="Existing Option 1", is_answer=True)
|
|
SurveyOption.objects.create(survey=self.article_survey, option="Existing Option 2", is_answer=False)
|
|
|
|
# article api url used for get api
|
|
self.article_list_url = 'web_admin:article-list'
|
|
|
|
# article api url used for post api
|
|
self.article_detail_url = 'web_admin:article-detail'
|
|
|
|
# article card data with default card image
|
|
self.article_card_data_with_default_card_image = {
|
|
"title": "Card 1",
|
|
"description": "Card 1 Description",
|
|
"image_name": "card1.jpg",
|
|
"image_url": "https://example.com/card1.jpg"
|
|
}
|
|
|
|
# article card data with base64 image
|
|
self.article_card_data_with_base64_image = {
|
|
"title": "Card base64",
|
|
"description": "Card base64 Description",
|
|
"image_name": "base64_image.jpg",
|
|
"image_url": base64_image
|
|
}
|
|
|
|
# article survey option data
|
|
self.article_survey_option_data = [
|
|
{"option": "Option 1", "is_answer": True},
|
|
{"option": "Option 2", "is_answer": False}
|
|
]
|
|
|
|
# article survey data
|
|
self.article_survey_data = [
|
|
{
|
|
"question": "Survey Question 1",
|
|
"options": self.article_survey_option_data
|
|
},
|
|
{
|
|
"question": "Survey Question 2",
|
|
"options": self.article_survey_option_data
|
|
},
|
|
{
|
|
"question": "Survey Question 3",
|
|
"options": self.article_survey_option_data
|
|
},
|
|
{
|
|
"question": "Survey Question 4",
|
|
"options": self.article_survey_option_data
|
|
},
|
|
{
|
|
"question": "Survey Question 5",
|
|
"options": self.article_survey_option_data
|
|
},
|
|
]
|
|
|
|
# article data with default card image
|
|
self.article_data_with_default_card_image = {
|
|
"title": "Test Article",
|
|
"description": "Test Description",
|
|
"article_cards": [
|
|
self.article_card_data_with_default_card_image
|
|
],
|
|
# minimum 5 article survey needed
|
|
"article_survey": self.article_survey_data
|
|
}
|
|
|
|
# article data with base64 card image
|
|
self.article_data_with_base64_card_image = {
|
|
"title": "Test Article",
|
|
"description": "Test Description",
|
|
"article_cards": [
|
|
self.article_card_data_with_base64_image
|
|
],
|
|
# minimum 5 article survey needed
|
|
"article_survey": self.article_survey_data
|
|
}
|
|
|
|
# article update data
|
|
self.article_update_data = {
|
|
"title": "Updated Article",
|
|
"description": "Updated Description",
|
|
|
|
# updated article card
|
|
"article_cards": [
|
|
{
|
|
"id": self.article_card.id,
|
|
"title": "Updated Card 1",
|
|
"description": "Updated Card 1 Description",
|
|
"image_name": "updated_card1.jpg",
|
|
"image_url": "https://example.com/updated_card1.jpg"
|
|
}
|
|
],
|
|
# updated article survey
|
|
"article_survey": [
|
|
# updated article survey
|
|
{
|
|
"id": self.article_survey.id,
|
|
"question": "Updated Survey Question 1",
|
|
"options": [
|
|
{"id": self.article_survey.options.first().id,
|
|
"option": "Updated Option 1", "is_answer": False},
|
|
# New option
|
|
{"option": "New Option 3", "is_answer": True}
|
|
]
|
|
# added new articles
|
|
}] + self.article_survey_data
|
|
}
|
|
|
|
|
|
class UserManagementSetUp(BaseSetUp):
|
|
"""
|
|
test cases for user management
|
|
users count, new sign-ups,
|
|
"""
|
|
def setUp(self) -> None:
|
|
"""
|
|
data setup
|
|
create new guardian and junior
|
|
:return:
|
|
"""
|
|
super(UserManagementSetUp, self).setUp()
|
|
# guardian codes
|
|
self.guardian_code_1 = 'GRD123'
|
|
self.guardian_code_2 = 'GRD456'
|
|
|
|
# guardian 1
|
|
self.guardian = Guardian.objects.create(user=self.user, country_code=91, phone='8765876565',
|
|
country_name='India', gender=2, is_verified=True,
|
|
guardian_code=self.guardian_code_1)
|
|
|
|
# user 2 email
|
|
self.user_email_2 = 'user2@yopmail.com'
|
|
# create user 2
|
|
self.user_2 = User.objects.create_user(username=self.user_email_2, email=self.user_email_2)
|
|
self.user_2.set_password('user2@1234')
|
|
self.user_2.save()
|
|
|
|
# guardian 2
|
|
self.guardian_2 = Guardian.objects.create(user=self.user_2, country_code=92, phone='8765876575',
|
|
country_name='India', gender=1, is_verified=True,
|
|
guardian_code=self.guardian_code_2)
|
|
|
|
# user 3 email
|
|
self.user_email_3 = 'user3@yopmail.com'
|
|
# create user 3
|
|
self.user_3 = User.objects.create_user(username=self.user_email_3, email=self.user_email_3)
|
|
self.user_3.set_password('user3@1234')
|
|
self.user_3.save()
|
|
|
|
# junior 1
|
|
self.junior = Junior.objects.create(auth=self.user_3, country_name='India', gender=2,
|
|
is_verified=True, guardian_code=[self.guardian_code_1])
|
|
|
|
# user 4 email
|
|
self.user_email_4 = 'user4@yopmail.com'
|
|
# create user 4
|
|
self.user_4 = User.objects.create_user(username=self.user_email_4, email=self.user_email_4)
|
|
self.user_4.set_password('user4@1234')
|
|
self.user_4.save()
|
|
|
|
# junior 2
|
|
self.junior_2 = Junior.objects.create(auth=self.user_4, country_code=92, phone='8768763443',
|
|
country_name='India', gender=1, is_verified=True,
|
|
guardian_code=[self.guardian_code_2])
|
|
|
|
|
|
class AnalyticsSetUp(UserManagementSetUp):
|
|
"""
|
|
test analytics
|
|
task assign report, junior leaderboard
|
|
"""
|
|
def setUp(self) -> None:
|
|
"""
|
|
test data set up
|
|
create task and assigned to junior
|
|
create junior points data
|
|
:return:
|
|
"""
|
|
super(AnalyticsSetUp, self).setUp()
|
|
|
|
# pending tasks 1
|
|
self.pending_task_1 = JuniorTask.objects.create(guardian=self.guardian, junior=self.junior,
|
|
task_name='Pending Task 1', task_status=1,
|
|
due_date='2023-09-12')
|
|
# pending tasks 2
|
|
self.pending_task_2 = JuniorTask.objects.create(guardian=self.guardian_2, junior=self.junior_2,
|
|
task_name='Pending Task 2', task_status=1,
|
|
due_date='2023-09-12')
|
|
|
|
# in progress tasks 1
|
|
self.in_progress_task_1 = JuniorTask.objects.create(guardian=self.guardian, junior=self.junior,
|
|
task_name='In progress Task 1', task_status=2,
|
|
due_date='2023-09-12')
|
|
# in progress tasks 2
|
|
self.in_progress_task_2 = JuniorTask.objects.create(guardian=self.guardian_2, junior=self.junior_2,
|
|
task_name='In progress Task 2', task_status=2,
|
|
due_date='2023-09-12')
|
|
|
|
# rejected tasks 1
|
|
self.rejected_task_1 = JuniorTask.objects.create(guardian=self.guardian, junior=self.junior,
|
|
task_name='Rejected Task 1', task_status=3,
|
|
due_date='2023-09-12')
|
|
# rejected tasks 2
|
|
self.rejected_task_2 = JuniorTask.objects.create(guardian=self.guardian_2, junior=self.junior_2,
|
|
task_name='Rejected Task 2', task_status=3,
|
|
due_date='2023-09-12')
|
|
|
|
# requested task 1
|
|
self.requested_task_1 = JuniorTask.objects.create(guardian=self.guardian, junior=self.junior,
|
|
task_name='Requested Task 1', task_status=4,
|
|
due_date='2023-09-12')
|
|
# requested task 2
|
|
self.requested_task_2 = JuniorTask.objects.create(guardian=self.guardian_2, junior=self.junior_2,
|
|
task_name='Requested Task 2', task_status=4,
|
|
due_date='2023-09-12')
|
|
|
|
# completed task 1
|
|
self.completed_task_1 = JuniorTask.objects.create(guardian=self.guardian, junior=self.junior,
|
|
task_name='Completed Task 1', task_status=5,
|
|
due_date='2023-09-12')
|
|
# completed task 2
|
|
self.completed_task_2 = JuniorTask.objects.create(guardian=self.guardian_2, junior=self.junior_2,
|
|
task_name='Completed Task 2', task_status=5,
|
|
due_date='2023-09-12')
|
|
|
|
# expired task 1
|
|
self.expired_task_1 = JuniorTask.objects.create(guardian=self.guardian, junior=self.junior,
|
|
task_name='Expired Task 1', task_status=6,
|
|
due_date='2023-09-11')
|
|
# expired task 2
|
|
self.expired_task_2 = JuniorTask.objects.create(guardian=self.guardian_2, junior=self.junior_2,
|
|
task_name='Expired Task 2', task_status=6,
|
|
due_date='2023-09-11')
|
|
|
|
# junior point table data
|
|
JuniorPoints.objects.create(junior=self.junior_2, total_points=50)
|
|
JuniorPoints.objects.create(junior=self.junior, total_points=40)
|
|
|
|
# export excel url
|
|
self.export_excel_url = export_excel_url
|