Exemple #1
0
    def test_handle_wanikani_level_down_correctly_deletes_invalid_reviews(
            self):
        self.user.profile.level = 5
        self.user.profile.save()
        self.user.profile.unlocked_levels.get_or_create(level=5)

        #Create a review at current levelwait,
        vocab = create_vocab("ANY WORD")
        create_reading(vocab, "some reading", "some char",
                       self.user.profile.level)
        create_userspecific(vocab, self.user)

        self.user.profile.handle_wanikani_level_change(
            self.user.profile.level - 1)

        reviews = UserSpecific.objects.filter(user=self.user)

        self.assertTrue(reviews.count() == 1)
Exemple #2
0
 def setUp(self):
     self.client = Client()
     self.user = create_user("Tadgh")
     self.user.set_password("password")
     create_profile(self.user, "any key", 1)
     self.user.save()
     self.vocabulary = create_vocab("cat")
     self.review = create_userspecific(self.vocabulary, self.user)
     self.review.meaningsynonym_set.get_or_create(text="minou")
Exemple #3
0
    def test_get_all_readings_returns_original_and_added_readings(self):
        self.vocabulary.readings.create(kana="what", character="ars", level=5)
        review = create_userspecific(self.vocabulary, self.user)
        review.answer_synonyms.create(kana="shwoop", character="fwoop")

        expected = list(
            chain(self.vocabulary.readings.all(),
                  review.answer_synonyms.all()))

        self.assertListEqual(expected, review.get_all_readings())
    def setUp(self):
        self.user = create_user("user1")
        self.user.set_password("password")
        self.user.save()
        create_profile(self.user, "some_key", 5)
        # create a piece of vocab with one reading.
        self.vocabulary = create_vocab("cat")
        self.cat_reading = create_reading(self.vocabulary, "kana", "kanji", 5)

        self.review = create_userspecific(self.vocabulary, self.user)
        self.factory = RequestFactory()
Exemple #5
0
    def test_review_page_shows_all_items_when_burnt_setting_is_disabled(self):
        word = create_vocab("phlange")
        self.user.profile.only_review_burned = False
        self.user.profile.save()
        another_review = create_userspecific(word, self.user)
        another_review.wanikani_burned = True
        another_review.save()

        response = self.client.get(reverse("kw:review"))

        self.assertContains(response, "radioactive bat")
        self.assertContains(response, "phlange")
Exemple #6
0
    def test_returning_review_count_that_is_time_delimited_functions_correctly(self):
        new_review = create_userspecific(create_vocab("arbitrary word"), self.user)
        new_review.needs_review = False
        more_than_24_hours_from_now = timezone.now() + timedelta(hours=25)
        new_review.next_review_date = more_than_24_hours_from_now
        new_review.save()
        self.review.next_review_date = timezone.now()
        self.review.needs_review = False
        self.review.save()

        future_reviews = get_users_future_reviews(self.user, time_limit=timedelta(hours=24))

        self.assertEqual(future_reviews.count(), 1)
Exemple #7
0
    def test_recording_answer_works_on_correct_answer(self):
        us = create_userspecific(self.vocabulary, self.user)

        self.client.post(
            reverse("kw:record_answer"), {
                'user_correct': "true",
                'user_specific_id': us.id,
                'wrong_before': 'false'
            })

        us.refresh_from_db()

        recorded_properly = us.correct == 1 and us.streak == 1 and us.needs_review is False
        self.assertTrue(recorded_properly)
Exemple #8
0
    def setUp(self):
        self.user = create_user("user1")
        self.user.set_password("password")
        self.user.save()
        create_profile(self.user, "some_key", 5)
        # create a piece of vocab with one reading.
        self.vocabulary = create_vocab("radioactive bat")
        self.cat_reading = create_reading(self.vocabulary, "kana", "kanji", 5)

        # setup a review with two synonyms
        self.review = create_userspecific(self.vocabulary, self.user)

        self.client = Client()
        self.client.login(username="******", password="******")
Exemple #9
0
    def test_burnt_items_arent_included_when_getting_next_review_date(self):
        current_time = timezone.now()
        self.review.next_review_date = current_time
        self.review.needs_review = False
        self.review.save()
        older_burnt_review = create_userspecific(create_vocab("test"),
                                                 self.user)
        older_burnt_review.burned = True
        older_burnt_review.needs_review = False
        an_hour_ago = current_time - timedelta(hours=1)
        older_burnt_review.next_review_date = an_hour_ago
        older_burnt_review.save()

        response = self.client.get("/kw/")

        self.assertEqual(response.context['next_review_date'], current_time)
Exemple #10
0
    def test_wrong_answer_records_failure(self):
        vocab = create_vocab("dog")
        us = create_userspecific(vocab, self.user)

        self.client.post(
            reverse("kw:record_answer"), {
                'user_correct': "false",
                'user_specific_id': us.id,
                'wrong_before': 'false'
            })

        us.refresh_from_db()
        recorded_properly = (us.incorrect == 1 and us.streak == 0
                             and us.needs_review is True)

        self.assertTrue(recorded_properly)
Exemple #11
0
    def test_synonym_adding(self):
        review = create_userspecific(self.vocabulary, self.user)

        review.meaningsynonym_set.get_or_create(text="kitty")

        self.assertIn("kitty", review.synonyms_string())
Exemple #12
0
    def test_default_review_times_are_not_rounded(self):
        rounded_time = self.review.next_review_date
        new_vocab = create_userspecific(create_vocab("fresh"), self.user)

        self.assertNotEqual(rounded_time, new_vocab.next_review_date)
Exemple #13
0
 def setUp(self):
     self.user = create_user("Tadgh")
     create_profile(self.user, "any_key", 5)
     self.vocabulary = create_vocab("radioactive bat")
     self.reading = create_reading(self.vocabulary, "ねこ", "猫", 2)
     self.review = create_userspecific(self.vocabulary, self.user)