diff --git a/backend/app/models/entries.py b/backend/app/models/entries.py index 269c096..38ef942 100644 --- a/backend/app/models/entries.py +++ b/backend/app/models/entries.py @@ -15,9 +15,7 @@ class Entry(Base): newsletter_id = Column(String, ForeignKey("newsletters.id")) subject = Column(String) body = Column(Text) - received_at = Column( - DateTime(timezone=True), default=datetime.datetime.now(datetime.UTC) - ) + received_at = Column(DateTime(timezone=True), default=datetime.datetime.now) message_id = Column(String, unique=True, index=True, nullable=False) newsletter = relationship("Newsletter", back_populates="entries") diff --git a/backend/app/tests/test_crud.py b/backend/app/tests/test_crud.py index 8e0acc1..4fa1fd2 100644 --- a/backend/app/tests/test_crud.py +++ b/backend/app/tests/test_crud.py @@ -278,3 +278,27 @@ def test_delete_newsletter(db_session: Session): from app.crud.newsletters import get_newsletter_by_identifier assert get_newsletter_by_identifier(db_session, newsletter.id) is None + + +def test_create_multiple_entries_have_different_timestamps(db_session: Session): + """Test that multiple entries for the same newsletter have different timestamps.""" + import time + + newsletter_data = NewsletterCreate( + name="Timestamp Test Newsletter", + sender_emails=[f"sender_{uuid.uuid4()}@test.com"], + ) + newsletter = create_newsletter(db_session, newsletter_data) + entry_data_1 = EntryCreate( + subject="Entry 1", body="Body 1", message_id=f"<{uuid.uuid4()}@test.com>" + ) + entry1 = create_entry(db_session, entry_data_1, newsletter.id) + + time.sleep(1) # sleep for a short time to ensure timestamps are different + + entry_data_2 = EntryCreate( + subject="Entry 2", body="Body 2", message_id=f"<{uuid.uuid4()}@test.com>" + ) + entry2 = create_entry(db_session, entry_data_2, newsletter.id) + + assert entry1.received_at != entry2.received_at