Princeton-CDH / mep-django

Compare a24ca99 ... +5 ... 6a6831d

Coverage Reach
mep/people/tests/test_views.py mep/people/tests/test_models.py mep/people/tests/test_people_signals.py mep/people/tests/test_admin.py mep/people/tests/test_forms.py mep/people/tests/test_geonames.py mep/people/tests/test_sitemaps.py mep/people/tests/test_people_commands.py mep/people/tests/test_people_migrations.py mep/people/views.py mep/people/models.py mep/people/migrations/0016_generate_person_slugs.py mep/people/migrations/0005_people_address_to_account_address.py mep/people/migrations/0007_location_unique_constraints.py mep/people/migrations/0004_rename_address_to_location.py mep/people/migrations/0003_infer_sex_from_title.py mep/people/migrations/0014_library_location.py mep/people/migrations/0001_initial.py mep/people/migrations/0019_pastpersonslug.py mep/people/migrations/0013_rename_sex_to_gender.py mep/people/migrations/0015_add_person_optional_slug.py mep/people/migrations/0002_add_subtype_choices.py mep/people/migrations/0018_on_delete.py mep/people/migrations/0009_allow_negative_years.py mep/people/migrations/0010_merge_20180621_1810.py mep/people/migrations/0006_update_person_locations.py mep/people/migrations/0008_person_is_organization.py mep/people/migrations/0017_person_require_unique_slugs.py mep/people/migrations/0009_person_updated_at.py mep/people/migrations/0011_person_verified.py mep/people/migrations/0012_add_public_notes.py mep/people/admin.py mep/people/management/commands/export_members.py mep/people/geonames.py mep/people/sitemaps.py mep/people/forms.py mep/people/queryset.py mep/people/apps.py mep/people/urls.py mep/people/__init__.py mep/accounts/tests/test_accounts_models.py mep/accounts/tests/test_accounts_commands.py mep/accounts/tests/test_twitterbot_100years.py mep/accounts/tests/test_partial_date.py mep/accounts/tests/test_accounts_migrations.py mep/accounts/tests/test_accounts_admin.py mep/accounts/tests/test_accounts_views.py mep/accounts/tests/test_account_templatetags.py mep/accounts/management/commands/twitterbot_100years.py mep/accounts/management/commands/import_figgy_cards.py mep/accounts/management/commands/report_timegaps.py mep/accounts/management/commands/export_events.py mep/accounts/migrations/0025_subevent_item_to_generic.py mep/accounts/migrations/0028_generic_event_partial_dates.py mep/accounts/migrations/0008_flag_duplicate_events.py mep/accounts/migrations/0033_subscription_purchase_date_adjustments.py mep/accounts/migrations/0004_subtype_choices_to_subscription_type_foreignkey.py mep/accounts/migrations/0015_fix_subscription_durations.py mep/accounts/migrations/0012_recalculate_durations.py mep/accounts/migrations/0010_set_reimbursement_end_date_from_start.py mep/accounts/migrations/0001_initial.py mep/accounts/migrations/0022_add_partial_date_purchase.py mep/accounts/migrations/0019_allow_null_precision.py mep/accounts/migrations/0015_borrow_event_rel_item.py mep/accounts/migrations/0021_account_card.py mep/accounts/migrations/0027_address_partial_dates.py mep/accounts/migrations/0029_event_item_to_work.py mep/accounts/migrations/0014_add_address_rel_to_person.py mep/accounts/migrations/0030_event_edition.py mep/accounts/migrations/0003_new_subscription_type_model_foreignkey.py mep/accounts/migrations/0024_event_generic_item.py mep/accounts/migrations/0016_add_borrow_date_precision.py mep/accounts/migrations/0002_field_adjustments_logbook_import.py mep/accounts/migrations/0009_event_ordering_reimbursement_price_to_refund.py mep/accounts/migrations/0011_subscription_duration_to_days.py mep/accounts/migrations/0006_rename_subscribe_and_modification.py mep/accounts/migrations/0032_subscription_add_purchase_date.py mep/accounts/migrations/0018_merge_20180418_1607.py mep/accounts/migrations/0023_optional_price.py mep/accounts/migrations/0007_currency_default_to_franc.py mep/accounts/migrations/0026_rm_subevent_item_rename_generic_item.py mep/accounts/migrations/0017_revise_purchase_from_borrow.py mep/accounts/migrations/0020_convert_bought_to_item_status.py mep/accounts/migrations/0005_remove_subscribe_sub_type.py mep/accounts/migrations/0013_rename_accountaddress_to_address.py mep/accounts/migrations/0031_on_delete.py mep/accounts/models.py mep/accounts/admin.py mep/accounts/partial_date.py mep/accounts/event_set.py mep/accounts/views.py mep/accounts/templatetags/account_tags.py mep/accounts/templatetags/mep_100years_tags.py mep/accounts/apps.py mep/accounts/urls.py mep/accounts/__init__.py mep/books/tests/test_books_models.py mep/books/tests/test_books_views.py mep/books/tests/test_books_commands.py mep/books/tests/test_oclc.py mep/books/tests/test_books_migrations.py mep/books/tests/test_books_admin.py mep/books/tests/test_books_signals.py mep/books/tests/test_books_utils.py mep/books/tests/test_books_forms.py mep/books/tests/test_books_queryset.py mep/books/models.py mep/books/migrations/0022_generate_work_slugs.py mep/books/migrations/0018_edition_date_to_partial.py mep/books/migrations/0021_creator_type_order.py mep/books/migrations/0016_group_works_by_uri.py mep/books/migrations/0025_populate_sort_title.py mep/books/migrations/0010_add_initial_formats.py mep/books/migrations/0003_initial_creator_types.py mep/books/migrations/0001_initial.py mep/books/migrations/0002_refactor_item_creators.py mep/books/migrations/0015_split_work_edition.py mep/books/migrations/0017_edition_details.py mep/books/migrations/0009_item_format.py mep/books/migrations/0011_item_multiple_genres.py mep/books/migrations/0014_item_to_work.py mep/books/migrations/0008_add_oclc_item_fields.py mep/books/migrations/0013_item_ebook_url.py mep/books/migrations/0019_edition_remove_year.py mep/books/migrations/0007_item_updated_at.py mep/books/migrations/0006_item_creators.py mep/books/migrations/0020_format_on_delete.py mep/books/migrations/0005_item_mepid_allow_null.py mep/books/migrations/0004_viaf_to_uri.py mep/books/migrations/0026_add_past_work_slug.py mep/books/migrations/0012_add_public_notes.py mep/books/migrations/0023_merge_20200406_1206.py mep/books/migrations/0024_add_work_sort_title.py mep/books/migrations/0021_work_slug_creator_order.py mep/books/views.py mep/books/management/commands/reconcile_oclc.py mep/books/management/commands/export_books.py mep/books/admin.py mep/books/oclc.py mep/books/migration_group_work_utils.py mep/books/utils.py mep/books/forms.py mep/books/sitemaps.py mep/books/queryset.py mep/books/apps.py mep/books/urls.py mep/books/__init__.py mep/common/tests.py mep/common/migrations/0002_update_content_editor_perms_subscriptiontype.py mep/common/migrations/0006_update_content_editor_perms_works_and_djiffy.py mep/common/migrations/0001_content_editor_group.py mep/common/migrations/0007_add_data_viewer_group.py mep/common/migrations/0004_update_content_editor_perms_creatortype.py mep/common/migrations/0003_content_editor_perms_location.py mep/common/migrations/0005_create_script_user.py mep/common/templatetags/mep_tags.py mep/common/views.py mep/common/forms.py mep/common/models.py mep/common/management/export.py mep/common/utils.py mep/common/admin.py mep/common/solr.py mep/common/apps.py mep/common/validators.py mep/common/__init__.py mep/footnotes/tests/test_footnotes_signals.py mep/footnotes/tests/test_footnote_models.py mep/footnotes/tests/test_footnote_views.py mep/footnotes/models.py mep/footnotes/views.py mep/footnotes/admin.py mep/footnotes/migrations/0005_consolidate_event_footnotes.py mep/footnotes/migrations/0001_initial.py mep/footnotes/migrations/0003_add_bibliography_manifest_and_footnote_canvas.py mep/footnotes/migrations/0004_on_delete.py mep/footnotes/migrations/0002_footnote_is_agree_default_true.py mep/footnotes/forms.py mep/footnotes/queryset.py mep/footnotes/urls.py mep/footnotes/apps.py mep/footnotes/__init__.py mep/pages/tests/test_pages_models.py mep/pages/tests/test_pages_commands.py mep/pages/tests/test_pages_templates.py mep/pages/tests/test_tags.py mep/pages/models.py mep/pages/migrations/0010_split_person_names.py mep/pages/migrations/0007_essay_landingpage_and_creators.py mep/pages/migrations/0001_initial.py mep/pages/migrations/0003_contentpage_add_featured_image_description.py mep/pages/migrations/0006_add_svg_image_block.py mep/pages/migrations/0009_svg_extended_description.py mep/pages/migrations/0004_landingpage_optional_body.py mep/pages/migrations/0008_linkable_section_anchor_text.py mep/pages/migrations/0003_image_alt_text.py mep/pages/migrations/0002_homepage_streamfield.py mep/pages/migrations/0011_updated_streamfield_blocks.py mep/pages/migrations/0005_merge_20191010_1625.py mep/pages/management/commands/setup_site_pages.py mep/pages/wagtail_hooks.py mep/pages/admin.py mep/pages/templatetags/mep_page_tags.py mep/pages/apps.py mep/pages/__init__.py mep/settings.py mep/urls.py mep/dashboard.py mep/__init__.py mep/wsgi.py mep/context_processors.py srcmedia/ts/lib/common.ts srcmedia/ts/lib/form.ts srcmedia/ts/lib/facet.ts srcmedia/ts/lib/input.ts srcmedia/ts/lib/select.ts srcmedia/ts/lib/filter.ts srcmedia/ts/lib/sort.ts srcmedia/ts/lib/output.ts srcmedia/ts/components/ActiveFilters.ts srcmedia/ts/components/PageControls.ts srcmedia/ts/components/StickyControls.ts srcmedia/ts/components/MainMenu.ts

No flags found

Use flags to group coverage reports by test type, project and/or folders.
Then setup custom commit statuses and notifications for each flag.

e.g., #unittest #integration

#production #enterprise

#frontend #backend

Learn more about Codecov Flags here.


@@ -115,7 +115,7 @@
Loading
115 115
    # can only be child of Root
116 116
    parent_page_types = [Page]
117 117
    # only landingpage subtypes as children
118 -
    subpage_types = ['ContentLandingPage', 'EssayLandingPage']
118 +
    subpage_types = ['ContentLandingPage', 'EssayLandingPage', 'ContentPage']
119 119
    #: main page text
120 120
    body = StreamField(BodyContentBlock)
121 121
@@ -420,8 +420,8 @@
Loading
420 420
    '''A simple :class:`BasePage` type that appears beneath `ContentLandingPage`s
421 421
    in the hierarchy.'''
422 422
423 -
    # can only be child of ContentLandingPage
424 -
    parent_page_types = ['ContentLandingPage']
423 +
    # can be child of ContentLandingPage or HomePage
424 +
    parent_page_types = ['ContentLandingPage', 'HomePage']
425 425
    # no allowed children
426 426
    subpage_types = []
427 427
@@ -435,7 +435,6 @@
Loading
435 435
    # no allowed children
436 436
    subpage_types = []
437 437
438 -
439 438
    # taken from PPA
440 439
    def set_url_path(self, parent):
441 440
        """

@@ -151,10 +151,10 @@
Loading
151 151
152 152
    def test_error_on_create_non_field(self):
153 153
        # get with no instance should return the descriptor object
154 -
        class TestModel(DateRange):
154 +
        class TestModel2(DateRange):
155 155
            foo_year = AliasIntegerField(db_column='start_year')
156 156
157 -
        assert isinstance(TestModel.foo_year, AliasIntegerField)
157 +
        assert isinstance(TestModel2.foo_year, AliasIntegerField)
158 158
159 159
160 160
class TestVerifyLatLon(TestCase):

@@ -268,6 +268,14 @@
Loading
268 268
        assert twitterbot_100years.work_label(the_dial) == \
269 269
            "an issue of “The Dial.”"
270 270
271 +
    def test_redaction(self):
272 +
        tenlittle = Work(title='Ten Little Niggers')
273 +
        assert twitterbot_100years.work_label(tenlittle) == \
274 +
            "“Ten Little N[-----]s.”"
275 +
        tenlittle.title = 'Nigger Heaven'
276 +
        assert twitterbot_100years.work_label(tenlittle) == \
277 +
            "“N[-----] Heaven.”"
278 +
271 279
272 280
class TestCanTweet(TestCase):
273 281
    fixtures = ['test_events']
@@ -380,6 +388,16 @@
Loading
380 388
        assert 'subscribed for 1 month, 2 volumes at a time'  \
381 389
            in tweet
382 390
391 +
    def test_request_event(self):
392 +
        # find a borrow with fully known start and end date
393 +
        borrow = Event.objects.filter(
394 +
            borrow__isnull=False, start_date__isnull=False,
395 +
            end_date__isnull=False, start_date_precision=7).first()
396 +
        # add notation to make it a request
397 +
        borrow.notes = 'NOTATION: REQUEST'
398 +
        tweet = tweet_content(borrow, borrow.partial_start_date)
399 +
        assert 'requested' in tweet
400 +
383 401
    def test_tweet_text_tag(self):
384 402
        subs = Event.objects.get(pk=8810)
385 403
        subs.subscription.purchase_date = subs.start_date

@@ -113,7 +113,8 @@
Loading
113 113
        self.assertAllowedParentPageTypes(HomePage, [Page])
114 114
115 115
    def test_subpages(self):
116 -
        self.assertAllowedSubpageTypes(HomePage, [ContentLandingPage, EssayLandingPage])
116 +
        self.assertAllowedSubpageTypes(
117 +
            HomePage, [ContentLandingPage, EssayLandingPage, ContentPage])
117 118
118 119
    def test_template(self):
119 120
        site = Site.objects.first()
@@ -303,7 +304,8 @@
Loading
303 304
        self.assertTemplateUsed(response, 'pages/content_page.html')
304 305
305 306
    def test_parent_pages(self):
306 -
        self.assertAllowedParentPageTypes(ContentPage, [ContentLandingPage])
307 +
        self.assertAllowedParentPageTypes(ContentPage,
308 +
                                          [ContentLandingPage, HomePage])
307 309
308 310
    def test_subpages(self):
309 311
        self.assertAllowedSubpageTypes(ContentPage, [])
@@ -318,7 +320,8 @@
Loading
318 320
            'title': 'A new analysis esssay',
319 321
            'slug': 'new-essay',
320 322
            'body': streamfield([
321 -
                ('paragraph', rich_text('this page lives right under analysis'))
323 +
                ('paragraph',
324 +
                 rich_text('this page lives right under analysis'))
322 325
            ]),
323 326
            'authors-count': 0,
324 327
            'editors-count': 0

@@ -218,8 +218,8 @@
Loading
218 218
219 219
    elif event_label in ['Borrow', 'Purchase', 'Request']:
220 220
        tweet_pattern = 'verbed'
221 -
        # convert event type into verb for the sentence
222 -
        verb = '%sed' % ev.event_type.lower().rstrip('e')
221 +
        # convert event label into verb for the sentence
222 +
        verb = '%sed' % ev.event_label.lower().rstrip('e')
223 223
        if event_label == 'Borrow' and ev.end_date == day:
224 224
            verb = 'returned'
225 225
        work_text = work_label(ev.work)
@@ -288,8 +288,11 @@
Loading
288 288
    elif not work.year or work.year < 1500:
289 289
        title_punctuation = '.'
290 290
291 -
    parts.append('“%s%s”' % (work.title.strip('"“”'),
292 -
                 title_punctuation))
291 +
    # remove any straight or smart quotes included
292 +
    # redact offensive term known to occur in titles
293 +
    title = work.title.strip('"“”').replace('Nigger', 'N[-----]')
294 +
295 +
    parts.append('“%s%s”' % (title, title_punctuation))
293 296
294 297
    # add editors after title
295 298
    if include_editors:

Everything is accounted for!

No changes detected that need to be reviewed.
What changes does Codecov check for?
Lines, not adjusted in diff, that have changed coverage data.
Files that introduced coverage data that had none before.
Files that have missing coverage data that once were tracked.
Files Coverage
mep +<.01% 98.44%
srcmedia/ts 86.55%
Project Totals (223 files) 98.01%
Loading