def test_contributors_limit(self): """ Checks if proper count of user is returned. """ TranslationFactory.create_batch(110) top_contributors = User.translators.with_translation_counts() assert_equal(top_contributors.count(), 100)
def test_contributors_limit(self): """ Checks if proper count of user is returned. """ TranslationFactory.create_batch(110) top_contributors = User.translators.with_translation_counts() assert_equal(top_contributors.count(), 100)
def setUp(self): """ We setup a sample contributor with random set of translations. """ super(ContributorTimelineViewTests, self).setUp() self.project = ProjectFactory.create() self.translations = OrderedDict() for i in range(26): date = make_aware(datetime(2016, 12, 1) - timedelta(days=i)) translations_count = randint(1, 3) self.translations.setdefault((date, translations_count), []).append( sorted( TranslationFactory.create_batch( translations_count, date=date, user=self.user, entity__resource__project=self.project, ), key=lambda t: t.pk, reverse=True, ) ) mock_render = patch('pontoon.contributors.views.render', return_value=HttpResponse('')) self.mock_render = mock_render.start() self.addCleanup(mock_render.stop)
def setUp(self): """ We setup a sample contributor with random set of translations. """ super(ContributorTimelineViewTests, self).setUp() self.project = ProjectFactory.create() self.translations = OrderedDict() for i in range(26): date = make_aware(datetime(2016, 12, 1) - timedelta(days=i)) translations_count = randint(1, 3) self.translations.setdefault( (date, translations_count), []).append( sorted( TranslationFactory.create_batch( translations_count, date=date, user=self.user, entity__resource__project=self.project, ), key=lambda t: t.pk, reverse=True, )) mock_render = patch('pontoon.contributors.views.render', return_value=HttpResponse('')) self.mock_render = mock_render.start() self.addCleanup(mock_render.stop)
def test_period_filters(self): """ Total counts should be filtered by given date. Test creates 2 contributors with different activity periods and checks if they are filtered properly. """ first_contributor = self.create_contributor_with_translation_counts(approved=12, unapproved=1, needs_work=2, date=aware_datetime(2015, 3, 2)) # Second contributor self.create_contributor_with_translation_counts(approved=2, unapproved=11, needs_work=2, date=aware_datetime(2015, 6, 1)) TranslationFactory.create_batch(5, approved=True, user=first_contributor, date=aware_datetime(2015, 7, 2)) top_contributors = User.translators.with_translation_counts(aware_datetime(2015, 6, 10)) assert_equal(top_contributors.count(), 1) assert_attributes_equal(top_contributors[0], translations_count=5, translations_approved_count=5, translations_unapproved_count=0, translations_needs_work_count=0) top_contributors = User.translators.with_translation_counts(aware_datetime(2015, 5, 10)) assert_equal(top_contributors.count(), 2) assert_attributes_equal(top_contributors[0], translations_count=15, translations_approved_count=2, translations_unapproved_count=11, translations_needs_work_count=2) assert_attributes_equal(top_contributors[1], translations_count=5, translations_approved_count=5, translations_unapproved_count=0, translations_needs_work_count=0) top_contributors = User.translators.with_translation_counts(aware_datetime(2015, 1, 10)) assert_equal(top_contributors.count(), 2) assert_attributes_equal(top_contributors[0], translations_count=20, translations_approved_count=17, translations_unapproved_count=1, translations_needs_work_count=2) assert_attributes_equal(top_contributors[1], translations_count=15, translations_approved_count=2, translations_unapproved_count=11, translations_needs_work_count=2)
def create_contributor_with_translation_counts(self, approved=0, unapproved=0, needs_work=0, **kwargs): """ Helper method, creates contributor with given translations counts. """ contributor = UserFactory.create() TranslationFactory.create_batch(approved, user=contributor, approved=True, **kwargs) TranslationFactory.create_batch(unapproved, user=contributor, approved=False, fuzzy=False, **kwargs) TranslationFactory.create_batch(needs_work, user=contributor, fuzzy=True, **kwargs) return contributor
def test_bulk_check_valid_translations(self): translation1, translation2 = TranslationFactory.create_batch( 2, locale=self.translated_locale, entity=self.main_db_entity, approved=True, date=aware_datetime(2015, 1, 1)) self.mock_changed_translations.return_value = [ translation1, translation2, ] assert_equal(self.changeset.bulk_check_translations(), { translation1.pk, translation2.pk, }) assert_equal(Error.objects.count(), 0) assert_equal(Warning.objects.count(), 0)
def test_bulk_check_invalid_translations(self): """ Test scenario: * check if errors are detected * check if only valid translation will land in the Translate Memory """ invalid_translation, valid_translation = TranslationFactory.create_batch( 2, locale=self.translated_locale, entity=self.main_db_entity, approved=True, date=aware_datetime(2015, 1, 1), ) invalid_translation.string = "a\nb" invalid_translation.save() # Clear TM entries for those translations invalid_translation.memory_entries.all().delete() valid_translation.memory_entries.all().delete() self.mock_changed_translations.return_value = [ invalid_translation, valid_translation, ] valid_translations = self.changeset.bulk_check_translations() assert valid_translations == {valid_translation.pk} (error, ) = Error.objects.all() assert error.library == FailedCheck.Library.PONTOON assert error.message == "Newline characters are not allowed" assert error.translation == invalid_translation self.changeset.translations_to_update = { valid_translation.pk: valid_translation } self.changeset.bulk_create_translation_memory_entries( valid_translations) assert not invalid_translation.memory_entries.exists() assert valid_translation.memory_entries.count() == 1
def test_bulk_check_invalid_translations(self): """ Test scenario: * check if errors are detected * check if only valid translation will land in the Translate Memory """ invalid_translation, valid_translation = TranslationFactory.create_batch( 2, locale=self.translated_locale, entity=self.main_db_entity, approved=True, date=aware_datetime(2015, 1, 1) ) invalid_translation.string = 'a\nb' invalid_translation.save() # Clear TM entries for those translations invalid_translation.memory_entries.all().delete() valid_translation.memory_entries.all().delete() self.mock_changed_translations.return_value = [ invalid_translation, valid_translation, ] valid_translations = self.changeset.bulk_check_translations() assert_equal(valid_translations, {valid_translation.pk}) error, = Error.objects.all() assert_equal(error.library, 'p') assert_equal(error.message, 'Newline characters are not allowed') assert_equal(error.translation, invalid_translation) self.changeset.translations_to_update = { valid_translation.pk: valid_translation } self.changeset.bulk_create_translation_memory_entries(valid_translations) assert_equal(invalid_translation.memory_entries.count(), 0) assert_equal(valid_translation.memory_entries.count(), 1)
def test_bulk_check_invalid_translations(self): """ Test scenario: * check if errors are detected * check if only valid translation will land in the Translate Memory """ invalid_translation, valid_translation = TranslationFactory.create_batch( 2, locale=self.translated_locale, entity=self.main_db_entity, approved=True, date=aware_datetime(2015, 1, 1) ) invalid_translation.string = 'a\nb' invalid_translation.save() # Clear TM entries for those translations invalid_translation.memory_entries.all().delete() valid_translation.memory_entries.all().delete() self.mock_changed_translations.return_value = [ invalid_translation, valid_translation, ] valid_translations = self.changeset.bulk_check_translations() assert_equal(valid_translations, {valid_translation.pk}) error, = Error.objects.all() assert_equal(error.library, 'p') assert_equal(error.message, 'Newline characters are not allowed') assert_equal(error.translation, invalid_translation) self.changeset.translations_to_update = { valid_translation.pk: valid_translation } self.changeset.bulk_create_translation_memory_entries(valid_translations) assert_equal(invalid_translation.memory_entries.count(), 0) assert_equal(valid_translation.memory_entries.count(), 1)
def contributor_translations(settings, user_a, project_a): """ Setup a sample contributor with random set of translations. """ translations = OrderedDict() for i in range(6): date = make_aware(datetime(2016, 12, 1) - timedelta(days=i)) translations_count = 2 translations.setdefault((date, translations_count), []).append( sorted( TranslationFactory.create_batch( translations_count, date=date, user=user_a, entity__resource__project=project_a, ), key=lambda t: t.pk, reverse=True, )) settings.CONTRIBUTORS_TIMELINE_EVENTS_PER_PAGE = 2 yield translations
def test_bulk_check_valid_translations(self): translation1, translation2 = TranslationFactory.create_batch( 2, locale=self.translated_locale, entity=self.main_db_entity, approved=True, date=aware_datetime(2015, 1, 1) ) self.mock_changed_translations.return_value = [ translation1, translation2, ] assert_equal( self.changeset.bulk_check_translations(), { translation1.pk, translation2.pk, } ) assert_equal(Error.objects.count(), 0) assert_equal(Warning.objects.count(), 0)
def create_contributor_with_translation_counts(self, approved=0, unapproved=0, needs_work=0, **kwargs): """ Helper method, creates contributor with given translations counts. """ contributor = UserFactory.create() TranslationFactory.create_batch(approved, user=contributor, approved=True, **kwargs) TranslationFactory.create_batch(unapproved, user=contributor, approved=False, fuzzy=False, **kwargs) TranslationFactory.create_batch(needs_work, user=contributor, fuzzy=True, **kwargs) return contributor
def test_period_filters(self): """ Total counts should be filtered by given date. Test creates 2 contributors with different activity periods and checks if they are filtered properly. """ first_contributor = self.create_contributor_with_translation_counts( approved=12, unapproved=1, needs_work=2, date=aware_datetime(2015, 3, 2)) # Second contributor self.create_contributor_with_translation_counts(approved=2, unapproved=11, needs_work=2, date=aware_datetime( 2015, 6, 1)) TranslationFactory.create_batch(5, approved=True, user=first_contributor, date=aware_datetime(2015, 7, 2)) top_contributors = User.translators.with_translation_counts( aware_datetime(2015, 6, 10)) assert_equal(top_contributors.count(), 1) assert_attributes_equal(top_contributors[0], translations_count=5, translations_approved_count=5, translations_unapproved_count=0, translations_needs_work_count=0) top_contributors = User.translators.with_translation_counts( aware_datetime(2015, 5, 10)) assert_equal(top_contributors.count(), 2) assert_attributes_equal(top_contributors[0], translations_count=15, translations_approved_count=2, translations_unapproved_count=11, translations_needs_work_count=2) assert_attributes_equal(top_contributors[1], translations_count=5, translations_approved_count=5, translations_unapproved_count=0, translations_needs_work_count=0) top_contributors = User.translators.with_translation_counts( aware_datetime(2015, 1, 10)) assert_equal(top_contributors.count(), 2) assert_attributes_equal(top_contributors[0], translations_count=20, translations_approved_count=17, translations_unapproved_count=1, translations_needs_work_count=2) assert_attributes_equal(top_contributors[1], translations_count=15, translations_approved_count=2, translations_unapproved_count=11, translations_needs_work_count=2)