""" 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