@session
Feature: PersistentSessionService coverage
  Additional scenarios exercising previously uncovered code paths
  in session_service.py (lines 97-98, 139-146, 150-151, 217, 248, 310-311).

  Background:
    Given the session service module is imported

  # -----------------------------------------------------------------------
  # Lines 97-98: create() — event_bus.emit raises an exception
  # -----------------------------------------------------------------------
  Scenario: Creating a session when event_bus emit raises logs a warning but succeeds
    Given a mock session repository and message repository
    And an event bus that raises on emit
    And a persistent session service with the failing event bus
    When sesscov I create a session with actor name "test/actor"
    Then the session should be returned successfully
    And the session repository should have recorded one create call

  # -----------------------------------------------------------------------
  # Lines 139-146: delete() — event_bus present and emit succeeds
  # -----------------------------------------------------------------------
  Scenario: Deleting a session with event_bus present emits ENTITY_DELETED event
    Given a mock session repository and message repository
    And a recording event bus
    And a persistent session service with the recording event bus
    And the session repository will return True for delete
    When I delete session "01JTEST00000000000000000000"
    Then the recording event bus should have received an ENTITY_DELETED event

  # -----------------------------------------------------------------------
  # Lines 150-151: delete() — event_bus.emit raises an exception
  # -----------------------------------------------------------------------
  Scenario: Deleting a session when event_bus emit raises logs a warning but succeeds
    Given a mock session repository and message repository
    And an event bus that raises on emit
    And a persistent session service with the failing event bus
    And the session repository will return True for delete
    When I delete session "01JTEST00000000000000000000"
    Then no exception should be raised from delete

  # -----------------------------------------------------------------------
  # Line 217: export_session() — session not found
  # -----------------------------------------------------------------------
  Scenario: Exporting a non-existent session raises SessionNotFoundError
    Given a mock session repository and message repository
    And a persistent session service without event bus
    And the session repository returns None for get_by_id
    When I export session "01JNONEXISTENT0000000000000"
    Then a SessionNotFoundError should be raised with message containing "not found"

  # -----------------------------------------------------------------------
  # Line 248: import_session() — missing checksum
  # -----------------------------------------------------------------------
  Scenario: Importing session data with missing checksum raises SessionImportError
    Given a mock session repository and message repository
    And a persistent session service without event bus
    When I import session data with valid schema version but no checksum
    Then a SessionImportError should be raised with message containing "Missing checksum"

  # -----------------------------------------------------------------------
  # Lines 310-311: import_session() — invalid message data triggers KeyError
  # -----------------------------------------------------------------------
  Scenario: Importing session data with invalid messages raises SessionImportError
    Given a mock session repository and message repository
    And a persistent session service without event bus
    When I import session data with valid checksum but invalid message fields
    Then a SessionImportError should be raised with message containing "Invalid import data"
