From a02280438171f4f087a0a0a06918fee0f09f4f99 Mon Sep 17 00:00:00 2001 From: pateljannat Date: Wed, 28 Apr 2021 22:04:42 +0530 Subject: [PATCH] test: users with same name, username validations, users without username --- .../community_member/community_member.py | 3 + .../community_member/test_community_member.py | 84 +++++++++++++++++-- .../lms/doctype/lms_course/test_lms_course.py | 5 +- 3 files changed, 85 insertions(+), 7 deletions(-) diff --git a/community/community/doctype/community_member/community_member.py b/community/community/doctype/community_member/community_member.py index 51ec1095..0f022828 100644 --- a/community/community/doctype/community_member/community_member.py +++ b/community/community/doctype/community_member/community_member.py @@ -33,10 +33,13 @@ class CommunityMember(Document): def create_member_from_user(doc, method): username = doc.username + if ( doc.username and username_exists(doc.username)) or not doc.username: username = create_username_from_email(doc.email) + elif len(doc.username) < 4: username = adjust_username(doc.username) + if username_exists(username): username = username + str(random.randint(0,9)) diff --git a/community/community/doctype/community_member/test_community_member.py b/community/community/doctype/community_member/test_community_member.py index f3c109d6..4cde095c 100644 --- a/community/community/doctype/community_member/test_community_member.py +++ b/community/community/doctype/community_member/test_community_member.py @@ -7,14 +7,86 @@ import frappe import unittest class TestCommunityMember(unittest.TestCase): - + + @classmethod + def setUpClass(self): + users = ["test_user@example.com","test_user1@example.com"] + + for user in users: + if not frappe.db.exists("User", user): + new_user("Test User", user) + def test_member_created_from_user(self): - user = new_user("Test User", "test_user@example.com") - self.assertTrue(frappe.db.exists("Community Member", dict(username=user.username))) - member = frappe.get_doc("Community Member", {"email": "test_user@example.com"}) + user = frappe.db.get_value("User","test_user@example.com", ["full_name", "email", "username"], as_dict=True) + self.assertTrue(frappe.db.exists("Community Member", {"username":user.username})) + + member = frappe.db.get_value("Community Member", + filters={"email": user.email}, + fieldname=["full_name", "email", "owner", "username", "route"], + as_dict=True + ) + self.assertEqual(user.full_name, member.full_name) self.assertEqual(member.owner, user.email) self.assertEqual(user.username, member.username) self.assertEqual(member.username, member.route) - frappe.delete_doc("User", user.name) - \ No newline at end of file + + def test_members_with_same_name(self): + user1 = frappe.db.get_value("User","test_user@example.com", ["email"], as_dict=True) + user2 = frappe.get_doc("User","test_user1@example.com", ["email"], as_dict=True) + + self.assertTrue(frappe.db.exists("Community Member", {"email": user1.email} )) + self.assertTrue(frappe.db.exists("Community Member", {"email": user2.email })) + + member1 = frappe.db.get_value("Community Member", + filters={"email": user1.email}, + fieldname=["full_name", "email", "owner", "username", "route"], + as_dict=True + ) + member2 = frappe.db.get_value("Community Member", + filters={"email": user2.email}, + fieldname=["full_name", "email", "owner", "username", "route"], + as_dict=True + ) + + self.assertEqual(member1.full_name, member2.full_name) + self.assertEqual(member1.email, user1.email) + self.assertEqual(member2.email, user2.email) + self.assertNotEqual(member1.username, member2.username) + + def test_username_validations(self): + user = new_user("Tst", "tst@example.com") + self.assertTrue(frappe.db.exists("Community Member", {"email":user.email} )) + + member = frappe.db.get_value("Community Member", + filters={"email": user.email}, + fieldname=["username"], + as_dict=True + ) + + self.assertEqual(len(member.username), 4) + frappe.delete_doc("User", user.email) + + def test_user_without_username(self): + user = new_user("Test User", "test_user2@example.com") + self.assertTrue(frappe.db.exists("Community Member", {"email":user.email} )) + + member = frappe.db.get_value("Community Member", + filters={"email": user.email}, + fieldname=["username"], + as_dict=True + ) + + self.assertTrue(member.username) + frappe.delete_doc("User", user.email) + + @classmethod + def tearDownClass(self): + users = ["test_user@example.com","test_user1@example.com"] + + for user in users: + if frappe.db.exists("User", user): + frappe.delete_doc("User", user) + + if frappe.db.exists("Community Member", {"email": user}): + frappe.delete_doc("Community Member", {"email": user}) \ No newline at end of file diff --git a/community/lms/doctype/lms_course/test_lms_course.py b/community/lms/doctype/lms_course/test_lms_course.py index fe0c209d..2f50829b 100644 --- a/community/lms/doctype/lms_course/test_lms_course.py +++ b/community/lms/doctype/lms_course/test_lms_course.py @@ -36,7 +36,10 @@ class TestLMSCourse(unittest.TestCase): mentors = course.get_mentors() mentors_data = [dict(email=mentor.email, batch_count=mentor.batch_count) for mentor in mentors] assert mentors_data == [{"email": "tester@example.com", "batch_count": 0}] - frappe.delete_doc("User", user.name) + + def tearDown(self): + if frappe.db.exists("User", "tester@example.com"): + frappe.delete_doc("User", "tester@example.com") def new_user(name, email): doc = frappe.get_doc(dict(