All checks were successful
Deploy to Server / deploy (push) Successful in 9s
113 lines
5.4 KiB
Python
113 lines
5.4 KiB
Python
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
|