Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
nzeager committed Oct 12, 2023
2 parents 553e0a7 + e205527 commit 49c198a
Show file tree
Hide file tree
Showing 6 changed files with 119 additions and 17 deletions.
49 changes: 34 additions & 15 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions team_production_system/migrations/0011_mentor_team_number.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.5 on 2023-10-07 20:11

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('team_production_system', '0010_alter_mentor_skills'),
]

operations = [
migrations.AddField(
model_name='mentor',
name='team_number',
field=models.IntegerField(default=0),
),
]
1 change: 1 addition & 0 deletions team_production_system/models/mentor.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class Mentor(models.Model):
user = models.OneToOneField(
CustomUser, on_delete=models.CASCADE, primary_key=True)
about_me = models.TextField(max_length=1000, default='')
team_number = models.IntegerField(default=0)
skills = MultiSelectField(choices=SKILLS_CHOICES,
max_choices=19, max_length=157, default='HTML')

Expand Down
10 changes: 9 additions & 1 deletion team_production_system/serializers/mentor_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ class MentorListSerializer(serializers.ModelSerializer):
about_me = serializers.SerializerMethodField('get_about_me')
skills = serializers.SerializerMethodField('get_skills')
availabilities = serializers.SerializerMethodField('get_availabilities')
team_number = serializers.SerializerMethodField('get_team_number')

class Meta:
model = CustomUser
fields = ('pk', 'username', 'first_name',
'last_name', 'profile_photo', 'is_mentor', 'about_me',
'skills', 'availabilities')
'skills', 'availabilities', 'team_number')

def get_about_me(self, obj):
try:
Expand All @@ -44,3 +45,10 @@ def get_availabilities(self, obj):
return serializer.data
except Mentor.DoesNotExist:
return None

def get_team_number(self, obj):
try:
mentor = Mentor.objects.get(user=obj.pk)
return mentor.team_number
except Mentor.DoesNotExist:
return None
3 changes: 2 additions & 1 deletion team_production_system/serializers/mentor_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ class MentorProfileSerializer(serializers.ModelSerializer):
availabilities = AvailabilitySerializer(
many=True, read_only=True, source='mentor_availability')
skills = fields.MultipleChoiceField(choices=Mentor.SKILLS_CHOICES)
team_number = serializers.IntegerField(required=False)

class Meta:
model = Mentor
fields = ('pk', 'about_me', 'skills', 'availabilities')
fields = ('pk', 'about_me', 'skills', 'availabilities', 'team_number')
read_only_fields = ('pk',)

def create(self, validated_data):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
from django.test import TestCase
from ....models import Mentor, CustomUser


class MentorModelTest(TestCase):

def setUp(self):
# Assuming CustomUser has a username and password
self.user = CustomUser.objects.create(username='testuser',
password='password123')

def test_mentor_creation(self):
mentor = Mentor.objects.create(
user=self.user,
about_me='This is a test about me.',
team_number=5,
skills=['HTML', 'CSS', 'Django']
)

# Assert that the mentor object was saved and has the correct
# attributes
self.assertEqual(mentor.about_me, 'This is a test about me.')
self.assertEqual(mentor.team_number, 5)
self.assertListEqual(list(mentor.skills), ['HTML', 'CSS', 'Django'])

def test_str_representation(self):
mentor = Mentor.objects.create(
user=self.user,
about_me='This is a test about me.',
team_number=5,
skills=['HTML']
)

# Assert that the __str__ method returns the correct representation
self.assertEqual(str(mentor), 'testuser')

def test_default_about_me(self):
# Create a Mentor object without specifying an 'about_me'
mentor = Mentor.objects.create(
user=self.user,
skills=['HTML']
)

# Assert that the default value for 'about_me' is set
self.assertEqual(mentor.about_me, '')

def test_default_team_number(self):
# Create a Mentor object without specifying a 'team_number'
mentor = Mentor.objects.create(
user=self.user,
skills=['HTML']
)

# Assert that the default value for 'team_number' is set
self.assertEqual(mentor.team_number, 0)

0 comments on commit 49c198a

Please sign in to comment.