예제 #1
0
    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'])
예제 #2
0
    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'])
예제 #3
0
    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')
예제 #4
0
 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})
예제 #5
0
 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')
예제 #6
0
 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')
예제 #7
0
 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')
예제 #8
0
 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)
예제 #9
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)
예제 #10
0
 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)
예제 #11
0
 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)