Esempio n. 1
0
    def test1(self):
        """ 必要データを作成し、集計情報をプロパティに持ったオブジェクトが格納されたリストが
            返ってくるか。(1人の顧客に対して)
        """
        LessonFactory(genre=self.genre_dict["英語"])

        target_date = date(2019, 8, 1)
        lesson_log_list = Lesson.objects.filter(
            attending_date__year=target_date.year,
            attending_date__month=target_date.month)

        aggregator = Aggregator()
        actual = aggregator.get_monthly_billings(Account.objects.all(),
                                                 lesson_log_list,
                                                 self.genre_dict)

        self.assertEqual(len(actual), 1)
        # クラス確認
        billing = actual[0]

        # プロパティ確認
        self.assertEqual(billing.account_id, 1)
        self.assertEqual(billing.account_name, "太宰治")
        self.assertEqual(billing.genre_name_set, {"英語"})
        self.assertEqual(billing.genre_names, "")
        self.assertEqual(billing.genre_num, 1)
        self.assertEqual(billing.attend_num, 1)
Esempio n. 2
0
 def test1(self):
     """ getで通常のアクセスが出来るかどうか"""
     lesson = LessonFactory()
     response = self.client.get(reverse("lesson:update",
                                        args=(lesson.id, )))
     self.assertEqual(200, response.status_code)
     self.assertTemplateUsed(response, "lesson/lesson_update.html")
Esempio n. 3
0
    def setUp2(genre_dict):

        for gender in 1, 2:
            account_list = []
            # 世代毎に顧客を生成(男女別)
            for age in range(10, 90, 10):
                account_list.append(AccountFactory(gender=gender, age=age))

            for genre in ["ファイナンス", "プログラミング", "英語"]:
                for account in account_list:
                    LessonFactory(genre=genre_dict[genre], account=account)
Esempio n. 4
0
    def test2(self):
        """ 指定日付の時請求一覧が表示されるかのテスト"""
        attending_date = date(2019, 8, 1)
        english_lesson = GenreFactory(name="英語")
        LessonFactory(genre=english_lesson, attending_date=attending_date)
        GenreFactory(name="ファイナンス")
        GenreFactory(name="プログラミング")

        response = self.client.get(reverse("billing:index"),
                                   data={"billing_yyyymm": "2019/08"})

        self.assertContains(response, "太宰治")
        self.assertContains(response, "1レッスン")
Esempio n. 5
0
    def test2(self):
        """ データ更新後、リダイレクト出来るかの確認
            そのデータに基づく値が返ってくるか
        """
        account = AccountFactory()
        genre = GenreFactory(id=1)
        lesson_log = LessonFactory()
        response = self.client.post(reverse("lesson:update",
                                            args=(lesson_log.id, )),
                                    data={
                                        "account": account.id,
                                        "genre": genre.id,
                                        "attending_date":
                                        datetime.date(2019, 5, 1),
                                        "attending_hour": 4
                                    })

        self.assertRedirects(response, reverse("lesson:index"))
        lesson_log.refresh_from_db()
        self.assertEqual(lesson_log.account.id, 1)
        self.assertEqual(lesson_log.genre.id, 1)
        self.assertEqual(lesson_log.attending_date, datetime.date(2019, 5, 1))
        self.assertEqual(lesson_log.attending_hour, 4)
Esempio n. 6
0
 def test1(self):
     """ 英語: 受講者が英語のレッスンを受講した時の計算"""
     # 受講履歴を1つ登録
     target_date = date(2019, 8, 1)
     LessonFactory(genre=self.genre_dict["英語"],
                   attending_hour=10,
                   target_date=target_date)
     lesson_log_list = Lesson.objects.filter(
         attending_date__year=target_date.year,
         attending_date__month=target_date.month)
     account_id = 1
     actual = calculate_account_billing(account_id, lesson_log_list,
                                        self.genre_dict)
     self.assertEqual(actual, 40000)
Esempio n. 7
0
 def test3(self):
     """ バリデーションが通らなかった場合"""
     lesson_log = LessonFactory()
     genre = GenreFactory()
     response = self.client.post(reverse("lesson:update",
                                         args=(lesson_log.id, )),
                                 data={
                                     "account": "",
                                     "genre": genre.id,
                                     "attending_date":
                                     datetime.date(2019, 5, 1),
                                     "attending_hour": 4
                                 })
     self.assertEqual(400, response.status_code)
     self.assertTemplateUsed(response, "lesson/lesson_update.html")
     self.assertFalse(response.context['form'].is_valid())
Esempio n. 8
0
    def test1(self):
        """ ジャンルと性別別に、選択年月のレッスン数・受講者数・売り上げ金額を表示するか確認
        """
        target_date = date(2019, 8, 1)
        billing_year = target_date.year
        billing_month = target_date.month
        target_queryset_dict = create_target_queryset_dict(
            billing_year, billing_month)

        # 男性顧客で各科目の受講を登録
        LessonFactory(genre=self.genre_dict["英語"], attending_date=target_date)
        LessonFactory(genre=self.genre_dict["ファイナンス"],
                      attending_date=target_date)
        LessonFactory(genre=self.genre_dict["プログラミング"],
                      attending_date=target_date)

        # 女性顧客で各科目の受講を登録
        account = AccountFactory(name="与謝野晶子", gender=2)
        LessonFactory(genre=self.genre_dict["英語"],
                      account=account,
                      attending_date=target_date)
        LessonFactory(genre=self.genre_dict["ファイナンス"],
                      account=account,
                      attending_date=target_date)
        LessonFactory(genre=self.genre_dict["プログラミング"],
                      account=account,
                      attending_date=target_date)

        aggregator = ReportAggregator()
        actual = aggregator.analye_genre_gender_trend(target_queryset_dict,
                                                      self.genre_dict)

        self.assertEqual(len(actual), 6)

        report = actual[0]
        self.assertEqual(report.genre_name, "ファイナンス")

        report = actual[1]
        self.assertEqual(report.genre_name, "ファイナンス")

        report = actual[2]
        self.assertEqual(report.genre_name, "プログラミング")

        report = actual[3]
        self.assertEqual(report.genre_name, "プログラミング")

        report = actual[4]
        self.assertEqual(report.genre_name, "英語")

        report = actual[5]
        self.assertEqual(report.genre_name, "英語")
Esempio n. 9
0
 def test1(self):
     """ 英語 : 4時間受講した場合 """
     genre = GenreFactory(name="英語", basic_rate=5000)
     lesson_log = LessonFactory(genre=genre, attending_hour=4)
     actual = lesson_log.payment()
     self.assertEqual(actual, 19000)
Esempio n. 10
0
 def test3_ptn4(self):
     """ プログラミング : 55時間受講した場合"""
     genre = GenreFactory(name="プログラミング", basic_rate=20000)
     lesson_log = LessonFactory(genre=genre, attending_hour=55)
     actual = lesson_log.payment()
     self.assertEqual(actual, 164500)
Esempio n. 11
0
 def test2_ptn3(self):
     """ ファイナンス : 55時間受講した場合"""
     genre = GenreFactory(name="ファイナンス", basic_rate=0)
     lesson_log = LessonFactory(genre=genre, attending_hour=55)
     actual = lesson_log.payment()
     self.assertEqual(actual, 153500)