def test_achievement_attend_lecture_same_day(self): u""" 同じ日に2つのattend_lecture実績は付与されない """ # 準備 今日の00:00 にattend_lecture実績を獲得した状況を作る # 注意: テストを実行中に日付をまたぐという特殊ケースは考慮していない testuser = User.objects.get(pk=1) a = Achievement.objects.create(name='attend_lecture', point=3, achieved_by=testuser) # created_atはauto_now_add=Trueなのでcreateで設定できない today_start = datetime.date.today() a.created_at = today_start a.save() # 実績は付与されない sc.access_timeline_get_view(self.client, lecture_id=1) j_after = get_achevements_from_db() self.assertListEqual([a['name'] for a in j_after], [u'attend_lecture'])
def test_achievement_attend_lecture_yesterday(self): u""" 日付が変わっていたら実績attend_lectureが付与される """ # 準備 ちょうど24時間前にattend_lecture実績を獲得した状況を作る # 注意: サーバーへの問い合わせの関係で実際には24時間より長く経過 testuser = User.objects.get(pk=1) a = Achievement.objects.create(name='attend_lecture', point=3, achieved_by=testuser) # created_atはauto_now_add=Trueなのでcreateで設定できない yesterday = datetime.datetime.now() - datetime.timedelta(1) a.created_at = yesterday a.save() # 別の日付なので実績がつく sc.access_timeline_get_view(self.client, lecture_id=1) j_after = get_achevements_from_db() self.assertListEqual([a['name'] for a in j_after], [u'attend_lecture', u'attend_lecture'])
def test_get_invalid_lecture_id(self): # 整数値でなければBad Request j_invalid_lecture_id_get = sc.access_timeline_get_view( self.client, lecture_id='invalid lecture_id') self.assertEqual(j_invalid_lecture_id_get['status'], 'Bad Request') j_invalid_lecture_id_post = sc.access_timeline_post_view( self.client, lecture_id='invalid lecture_id', body=u'投稿できないよ!') self.assertEqual(j_invalid_lecture_id_post['status'], 'Bad Request')
def test_achievement_attend_lecture(self): sc.access_timeline_get_view(self.client, lecture_id=1) j_after = get_achevements_from_db() self.assertDictEqual({a['name']: a['point'] for a in j_after}, {'attend_lecture': 3})
def test_timeline_get_without_auth(self): # 認証しないで timeline get/post したら Forbidden j_get_fbd = sc.access_timeline_get_view(self.client, lecture_id=1) self.assertEqual(j_get_fbd['status'], 'Forbidden')
def test_get_invalid_since_id(self): # 整数値でなければBad Request j_invalid_since_id = sc.access_timeline_get_view( self.client, lecture_id=1, since_id='invalid since_id') self.assertEqual(j_invalid_since_id['status'], 'Bad Request')
def test_timeline_get__not_found(self): # 存在しない授業にget/postしようとすると Not Found j_get_not = sc.access_timeline_get_view(self.client, lecture_id=42) self.assertEqual(j_get_not['status'], 'Not Found')
def test_timeine_get_view_sicne_empty(self): # since_id=2の場合 # pk>2を満たすポストが存在しないので長さ0のタイムラインが返ってくる j_since2 = sc.access_timeline_get_view( self.client, lecture_id=1, since_id=2) self.assertEqual(len(j_since2['posts']), 0)
def test_timeline_get_view_since1(self): # since_id=1の場合 # pk>1を満たすポストを含む長さ1のタイムラインが返ってくる j_since1 = sc.access_timeline_get_view( self.client, lecture_id=1, since_id=1) self.assertEqual(len(j_since1['posts']), 1)
def test_timeline_get_view_since_full(self): # since_id=0の場合、since_idを指定しない(全取得)と等しい j_all = sc.access_timeline_get_view(self.client, lecture_id=1) j_since0 = sc.access_timeline_get_view( self.client, lecture_id=1, since_id=0) self.assertEqual(j_all, j_since0)
def test_timeline_get_view(self): # GETに成功すれば、長さ2のタイムラインが返ってくる j_get = sc.access_timeline_get_view(self.client, lecture_id=1) self.assertEqual(len(j_get['posts']), 2)