Skip to content
This repository has been archived by the owner on Apr 6, 2021. It is now read-only.

Commit

Permalink
Merge pull request #17 from TailorDev/fix-map
Browse files Browse the repository at this point in the history
Fix Abstract Human map method
  • Loading branch information
jmaupetit committed Jun 9, 2017
2 parents 2a22546 + dc34479 commit 283cfb0
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 35 deletions.
11 changes: 5 additions & 6 deletions td_biblio/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ def __str__(self):
return self.get_formatted_name()

def save(self, *args, **kwargs):
"""Set initials and try to map django users before saving"""
"""Set initials and try to set django user before saving"""

self._set_first_initial()
self.map()
self._set_user()
super(AbstractHuman, self).save(*args, **kwargs)

def _set_first_initial(self, force=False):
Expand All @@ -45,8 +45,8 @@ def get_formatted_name(self):

return '%s %s' % (self.last_name, self.first_initial)

def map(self):
"""Map with django users based on their full names and initials"""
def _set_user(self):
"""Look for local django user based on human name"""

User = get_user_model()
try:
Expand All @@ -56,8 +56,7 @@ def map(self):
models.Q(first_name__istartswith=self.first_initial[0])
)
except:
# Fail silently
return None
pass


class Author(AbstractHuman):
Expand Down
58 changes: 29 additions & 29 deletions td_biblio/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,86 +73,86 @@ def test_set_first_initial(self):
"""
Test the _set_first_initial method
"""
human = self.factory(first_name="John", last_name="McClane")
self.assertEqual(human.first_initial, "J")
human = self.factory(first_name='John', last_name='McClane')
self.assertEqual(human.first_initial, 'J')

human = self.factory(first_name="John Jack Junior",
last_name="McClane")
self.assertEqual(human.first_initial, "J J J")
human = self.factory(first_name='John Jack Junior',
last_name='McClane')
self.assertEqual(human.first_initial, 'J J J')

human.first_name = "Jumping Jack Flash"
human.first_name = 'Jumping Jack Flash'
human._set_first_initial()
self.assertEqual(human.first_initial, "J J J")
self.assertEqual(human.first_initial, 'J J J')

human.first_name = "Jumping Jack Flash"
human.first_name = 'Jumping Jack Flash'
human._set_first_initial(force=True)
self.assertEqual(human.first_initial, "J J F")
self.assertEqual(human.first_initial, 'J J F')

def test_get_formatted_name(self):
"""
Test the get_formatted_name method
"""
human = self.factory(first_name="John", last_name="McClane")
human = self.factory(first_name='John', last_name='McClane')
formatted_name = human.get_formatted_name()
expected = "McClane J"
expected = 'McClane J'
self.assertEqual(formatted_name, expected)

def test_user_linking(self):
"""
Test linking the AbstractHuman object with a django user
"""
user = get_user_model().objects.create(username='johnmcclane')
human = self.factory(first_name="John",
last_name="McClane",
human = self.factory(first_name='John',
last_name='McClane',
user=user)
self.assertEqual(human.user, user)

def test_map(self):
def test_set_user(self):
"""
Test the map method
Test the set_user method
"""
# Simple case: everything match perfectly
user = get_user_model().objects.create(
username='johnmcclane',
first_name="John",
last_name="McClane",
first_name='John',
last_name='McClane',
)
human = self.factory(first_name="John", last_name="McClane")
human = self.factory(first_name='John', last_name='McClane')
self.assertEqual(human.user, user)

# We only have the first initial
user = get_user_model().objects.create(
username='hollygennero',
first_name="Holly",
last_name="Gennero",
first_name='Holly',
last_name='Gennero',
)
human = self.factory(first_name="H", last_name="Gennero")
human = self.factory(first_name='H', last_name='Gennero')
self.assertEqual(human.user, user)

# We have 2 possible matches
user = get_user_model().objects.create(
username='johnjuniormcclane',
first_name="John Junior",
last_name="McClane",
first_name='John Junior',
last_name='McClane',
)
human = self.factory(first_name="J", last_name="McClane")
human = self.factory(first_name='J', last_name='McClane')
self.assertIsNone(human.user)

# We have 2 possible matches
user = get_user_model().objects.create(
username='johnjuniormcclane2',
first_name="John Junior",
last_name="McClane",
first_name='John Junior',
last_name='McClane',
)
human = self.factory(first_name="John", last_name="McClane")
human = self.factory(first_name='John', last_name='McClane')
self.assertIsNone(human.user)

def test_saving_and_retrieving_items(self):
"""
Test saving and retrieving two different objects
"""
saved1 = self.factory(first_name="Master", last_name="Zu")
saved2 = self.factory(first_name="Mister", last_name="Hide")
saved1 = self.factory(first_name='Master', last_name='Zu')
saved2 = self.factory(first_name='Mister', last_name='Hide')

qs = self.model.objects.all()
self.assertEqual(qs.count(), 2)
Expand Down

0 comments on commit 283cfb0

Please sign in to comment.