summaryrefslogtreecommitdiffstats
path: root/tests/integration/test_future_post.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2021-02-03 19:17:00 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2021-02-03 19:17:00 -0500
commit3a0d66f07b112b6d2bdc2b57bbf717a89a351ce6 (patch)
treea7cf56282e54f05785243bc1e903d6594f2c06ba /tests/integration/test_future_post.py
parent787b97a4cb24330b36f11297c6d3a7a473a907d0 (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.py109
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"])