diff options
| author | 2021-02-03 19:17:00 -0500 | |
|---|---|---|
| committer | 2021-02-03 19:17:00 -0500 | |
| commit | 3a0d66f07b112b6d2bdc2b57bbf717a89a351ce6 (patch) | |
| tree | a7cf56282e54f05785243bc1e903d6594f2c06ba /tests/integration/test_future_post.py | |
| parent | 787b97a4cb24330b36f11297c6d3a7a473a907d0 (diff) | |
New upstream version 8.1.2.upstream/8.1.2
Diffstat (limited to 'tests/integration/test_future_post.py')
| -rw-r--r-- | tests/integration/test_future_post.py | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/tests/integration/test_future_post.py b/tests/integration/test_future_post.py new file mode 100644 index 0000000..4645464 --- /dev/null +++ b/tests/integration/test_future_post.py @@ -0,0 +1,109 @@ +"""Test a site with future posts.""" + +import io +import os +from datetime import timedelta + +import pytest + +import nikola +import nikola.plugins.command.init +from nikola.utils import current_time +from nikola import __main__ + +from .helper import append_config, cd +from .test_empty_build import ( # NOQA + test_archive_exists, + test_avoid_double_slash_in_rss, + test_check_files, + test_check_links, + test_index_in_sitemap, +) + + +def test_future_post_deployment(build, output_dir, target_dir): + """ Ensure that the future post is deleted upon deploying. """ + index_path = os.path.join(output_dir, "index.html") + post_in_past = os.path.join(output_dir, "posts", "foo", "index.html") + post_in_future = os.path.join(output_dir, "posts", "bar", "index.html") + + assert os.path.isfile(index_path) + assert os.path.isfile(post_in_past) + assert os.path.isfile(post_in_future) + + # Run deploy command to see if future post is deleted + with cd(target_dir): + __main__.main(["deploy"]) + + assert os.path.isfile(index_path) + assert os.path.isfile(post_in_past) + assert not os.path.isfile(post_in_future) + + +@pytest.mark.parametrize("filename", ["index.html", "sitemap.xml"]) +def test_future_post_not_in_indexes(build, output_dir, filename): + """ Ensure that the future post is not present in the index and sitemap.""" + filepath = os.path.join(output_dir, filename) + assert os.path.isfile(filepath) + + with io.open(filepath, "r", encoding="utf8") as inf: + content = inf.read() + assert "foo/" in content + assert "bar/" not in content + assert "baz" not in content + + +@pytest.fixture(scope="module") +def build(target_dir): + """Build the site.""" + init_command = nikola.plugins.command.init.CommandInit() + init_command.create_empty_site(target_dir) + init_command.create_configuration(target_dir) + + # Change COMMENT_SYSTEM_ID to not wait for 5 seconds + append_config(target_dir, '\nCOMMENT_SYSTEM_ID = "nikolatest"\n') + + def format_datetime(datetime): + return datetime.strftime("%Y-%m-%d %H:%M:%S") + + past_datetime = format_datetime(current_time() + timedelta(days=-1)) + with io.open( + os.path.join(target_dir, "posts", "empty1.txt"), "w+", encoding="utf8" + ) as past_post: + past_post.write( + """\ +.. title: foo +.. slug: foo +.. date: %s +""" + % past_datetime + ) + + future_datetime = format_datetime(current_time() + timedelta(days=1)) + with io.open( + os.path.join(target_dir, "posts", "empty2.txt"), "w+", encoding="utf8" + ) as future_post: + future_post.write( + """\ +.. title: bar +.. slug: bar +.. date: %s +""" + % future_datetime + ) + + with io.open( + os.path.join(target_dir, "posts", "empty3.txt"), "w+", encoding="utf8" + ) as future_post: + future_post.write( + """\ +.. title: baz +.. slug: baz +.. date: %s +.. pretty_url: false +""" + % future_datetime + ) + + with cd(target_dir): + __main__.main(["build"]) |
