"""Test the feed methods. SPDX-FileCopyrightText: © 2023 Brian S. Stephan SPDX-License-Identifier: GPL-3.0-only """ import os import tempfile from incorporealcms import init_instance from incorporealcms.feed import generate_feed HERE = os.path.dirname(os.path.abspath(__file__)) init_instance(instance_path=os.path.join(HERE, 'instance')) def test_atom_type_generated(): """Test that an ATOM feed can be generated.""" with tempfile.TemporaryDirectory() as tmpdir: src_dir = os.path.join(HERE, 'instance') generate_feed('atom', src_dir, tmpdir) with open(os.path.join(tmpdir, 'feed', 'atom'), 'r') as feed_output: data = feed_output.read() assert '\n' in data assert 'https://example.org/' in data assert 'admin@example.org' in data assert 'Test Name' in data # forced-no-title.md assert 'example.org' in data assert '' in data assert 'tag:example.org,2023-12-01:/forced-no-title' in data assert '<p>some words are here</p>' in data # more-metadata.md assert 'title for the page - example.org' in data assert '' in data assert 'tag:example.org,2025-03-16:/more-metadata' in data assert '<p>hello</p>' in data def test_rss_type_generated(): """Test that an RSS feed can be generated.""" with tempfile.TemporaryDirectory() as tmpdir: src_dir = os.path.join(HERE, 'instance') generate_feed('rss', src_dir, tmpdir) with open(os.path.join(tmpdir, 'feed', 'rss'), 'r') as feed_output: data = feed_output.read() assert '\n' in data assert 'https://example.org' in data # forced-no-title.md assert 'example.org' in data assert 'https://example.org/forced-no-title' in data assert 'tag:example.org,2023-12-01:/forced-no-title' in data assert '<p>some words are here</p>' in data assert 'admin@example.org (Test Name)' in data # more-metadata.md assert 'title for the page - example.org' in data assert 'https://example.org/more-metadata' in data assert 'tag:example.org,2025-03-16:/more-metadata' in data assert '<p>hello</p>' in data assert 'admin@example.org (Test Name)' in data def test_multiple_runs_without_error(): """Test that we can run the RSS and Atom feed generators in any order.""" with tempfile.TemporaryDirectory() as tmpdir: src_dir = os.path.join(HERE, 'instance') generate_feed('atom', src_dir, tmpdir) generate_feed('rss', src_dir, tmpdir) generate_feed('atom', src_dir, tmpdir) generate_feed('rss', src_dir, tmpdir)