This commit is contained in:
parent
4d53a46850
commit
415dd12fd9
16 changed files with 843 additions and 379 deletions
113
twitch/tests/test_sitemaps_lastmod.py
Normal file
113
twitch/tests/test_sitemaps_lastmod.py
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
|
||||
from django.test import TestCase
|
||||
from django.utils import timezone
|
||||
|
||||
from twitch.models import Channel
|
||||
from twitch.models import ChatBadgeSet
|
||||
from twitch.models import DropBenefit
|
||||
from twitch.models import DropCampaign
|
||||
from twitch.models import Game
|
||||
from twitch.models import Organization
|
||||
from twitch.models import RewardCampaign
|
||||
from twitch.models import TimeBasedDrop
|
||||
from twitch.sitemaps import TwitchSitemapGenerator
|
||||
|
||||
|
||||
class StaticViewSitemapLastModTests(TestCase):
|
||||
"""Tests for StaticViewSitemap lastmod method."""
|
||||
|
||||
def setUp(self) -> None:
|
||||
"""Set up StaticViewSitemap instance for testing."""
|
||||
self.sitemap = TwitchSitemapGenerator()
|
||||
|
||||
def test_search_is_none(self) -> None:
|
||||
"""Test that lastmod for search sitemap item is None."""
|
||||
assert self.sitemap.lastmod("twitch:search") is None
|
||||
|
||||
def test_campaigns_latest(self) -> None:
|
||||
"""Test that lastmod for campaign list sitemap item reflects latest updated_at among DropCampaigns."""
|
||||
game: Game = Game.objects.create(twitch_id="g1")
|
||||
older: datetime = timezone.now() - timedelta(days=2)
|
||||
newer: datetime = timezone.now() - timedelta(days=1)
|
||||
|
||||
c1: DropCampaign = DropCampaign.objects.create(twitch_id="dc1", name="c1", game=game)
|
||||
c2: DropCampaign = DropCampaign.objects.create(twitch_id="dc2", name="c2", game=game)
|
||||
DropCampaign.objects.filter(pk=c1.pk).update(updated_at=older)
|
||||
DropCampaign.objects.filter(pk=c2.pk).update(updated_at=newer)
|
||||
|
||||
assert self.sitemap.lastmod("twitch:campaign_list") == newer
|
||||
assert self.sitemap.lastmod("twitch:dashboard") == newer
|
||||
|
||||
def test_reward_campaigns_latest(self) -> None:
|
||||
"""Test that lastmod for reward campaign list sitemap item reflects latest updated_at among RewardCampaigns."""
|
||||
older: datetime = timezone.now() - timedelta(days=3)
|
||||
newer: datetime = timezone.now() - timedelta(days=1)
|
||||
|
||||
r1: RewardCampaign = RewardCampaign.objects.create(twitch_id="r1", name="r1")
|
||||
r2: RewardCampaign = RewardCampaign.objects.create(twitch_id="r2", name="r2")
|
||||
RewardCampaign.objects.filter(pk=r1.pk).update(updated_at=older)
|
||||
RewardCampaign.objects.filter(pk=r2.pk).update(updated_at=newer)
|
||||
|
||||
assert self.sitemap.lastmod("twitch:reward_campaign_list") == newer
|
||||
|
||||
def test_games_latest(self) -> None:
|
||||
"""Test that lastmod for games grid sitemap item reflects latest updated_at among Games."""
|
||||
older: datetime = timezone.now() - timedelta(days=4)
|
||||
newer: datetime = timezone.now() - timedelta(days=1)
|
||||
|
||||
g1: Game = Game.objects.create(twitch_id="g2")
|
||||
g2: Game = Game.objects.create(twitch_id="g3")
|
||||
Game.objects.filter(pk=g1.pk).update(updated_at=older)
|
||||
Game.objects.filter(pk=g2.pk).update(updated_at=newer)
|
||||
|
||||
assert self.sitemap.lastmod("twitch:games_grid") == newer
|
||||
|
||||
def test_orgs_latest(self) -> None:
|
||||
"""Test that lastmod for org list sitemap item reflects latest updated_at among Organizations."""
|
||||
older: datetime = timezone.now() - timedelta(days=5)
|
||||
newer: datetime = timezone.now() - timedelta(days=1)
|
||||
|
||||
o1: Organization = Organization.objects.create(twitch_id="o1", name="Org1")
|
||||
o2: Organization = Organization.objects.create(twitch_id="o2", name="Org2")
|
||||
Organization.objects.filter(pk=o1.pk).update(updated_at=older)
|
||||
Organization.objects.filter(pk=o2.pk).update(updated_at=newer)
|
||||
|
||||
assert self.sitemap.lastmod("twitch:org_list") == newer
|
||||
|
||||
def test_channel_list_none(self) -> None:
|
||||
"""Test that lastmod for channel list sitemap item is None since Channel doesn't have updated_at."""
|
||||
Channel.objects.create(twitch_id="ch1", name="n1", display_name="D1")
|
||||
assert self.sitemap.lastmod("twitch:channel_list") is None
|
||||
|
||||
def test_badge_list_latest(self) -> None:
|
||||
"""Test that lastmod for badge list sitemap item reflects latest updated_at among ChatBadgeSets."""
|
||||
older: datetime = timezone.now() - timedelta(days=6)
|
||||
newer: datetime = timezone.now() - timedelta(days=1)
|
||||
|
||||
b1: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="s1")
|
||||
b2: ChatBadgeSet = ChatBadgeSet.objects.create(set_id="s2")
|
||||
ChatBadgeSet.objects.filter(pk=b1.pk).update(updated_at=older)
|
||||
ChatBadgeSet.objects.filter(pk=b2.pk).update(updated_at=newer)
|
||||
|
||||
assert self.sitemap.lastmod("twitch:badge_list") == newer
|
||||
|
||||
def test_emote_gallery_uses_campaign_updated(self) -> None:
|
||||
"""Test that lastmod for emote gallery sitemap item reflects latest updated_at among DropCampaigns associated with emote benefits.""" # noqa: E501
|
||||
game: Game = Game.objects.create(twitch_id="g_emote")
|
||||
campaign: DropCampaign = DropCampaign.objects.create(twitch_id="dc_emote", name="em", game=game)
|
||||
benefit: DropBenefit = DropBenefit.objects.create(
|
||||
twitch_id="b_emote",
|
||||
distribution_type="EMOTE",
|
||||
image_asset_url="http://example.com/e.png",
|
||||
)
|
||||
drop: TimeBasedDrop = TimeBasedDrop.objects.create(twitch_id="tbd_emote", name="drop1", campaign=campaign)
|
||||
drop.benefits.add(benefit)
|
||||
|
||||
newer: datetime = timezone.now() - timedelta(hours=1)
|
||||
DropCampaign.objects.filter(pk=campaign.pk).update(updated_at=newer)
|
||||
|
||||
assert self.sitemap.lastmod("twitch:emote_gallery") == newer
|
||||
Loading…
Add table
Add a link
Reference in a new issue