45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| from datetime import datetime, timedelta
 | |
| import unittest
 | |
| from app import app, db
 | |
| from app.models import User, Post
 | |
| 
 | |
| class UserModelCase(unittest.TestCase):
 | |
|     def setUp(self):
 | |
|         app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
 | |
|         db.create_all()
 | |
| 
 | |
|     def tearDown(self):
 | |
|         db.session.remove()
 | |
|         db.drop_all()
 | |
| 
 | |
|     def test_password_hashing(self):
 | |
|         u = User(username='susan')
 | |
|         u.set_password('cat')
 | |
|         self.assertFalse(u.check_password('dog'))
 | |
|         self.assertTrue(u.check_password('cat'))
 | |
| 
 | |
|     def test_follow(self):
 | |
|         u1 = User(username='john', email='john@example.com')
 | |
|         u2 = User(username='Snowden', realUser=False)
 | |
|         db.session.add(u1)
 | |
|         db.session.add(u2)
 | |
|         db.session.commit()
 | |
|         self.assertEqual(u1.followed.all(), [])
 | |
|         self.assertEqual(u1.followers.all(), [])
 | |
| 
 | |
|         u1.follow(u2)
 | |
|         db.session.commit()
 | |
|         self.assertTrue(u1.is_following(u2))
 | |
|         self.assertEqual(u1.followed.count(), 1)
 | |
|         self.assertEqual(u1.followed.first().username, 'Snowden')
 | |
|         self.assertEqual(u2.followers.count(), 1)
 | |
|         self.assertEqual(u2.followers.first().username, 'john')
 | |
| 
 | |
|         u1.unfollow(u2)
 | |
|         db.session.commit()
 | |
|         self.assertFalse(u1.is_following(u2))
 | |
|         self.assertEqual(u1.followed.count(), 0)
 | |
|         self.assertEqual(u2.followers.count(), 0)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     unittest.main(verbosity=2) |