Skip to content

Test coverage for narrativeMemory.js (42.42% → 100%) #55

@anabelle

Description

@anabelle

Overview

The narrativeMemory.js manages long-term narrative memory including hourly summaries, daily summaries, timeline lore, and storyline tracking. With 42.42% coverage, significant narrative memory functionality is untested.

Current Coverage

  • Statements: 42.42%
  • Branches: 52.19%
  • Functions: 27.27%
  • Lines: 42.42%
  • Target: 100% coverage

Uncovered Areas

Major untested sections:

  • Memory initialization and loading
  • Hourly narrative generation
  • Daily narrative generation
  • Timeline lore management
  • Storyline tracking
  • Memory persistence
  • Historical data retrieval
  • Memory cleanup and archival

Key Functionality to Test

1. Memory Initialization

  • Loading historical narratives
  • Initializing storage structures
  • Configuration handling
  • Migration from old formats

2. Hourly Narratives

  • Generating hourly summaries
  • Topic aggregation
  • Sample selection
  • Diversity metrics
  • Sliding window updates

3. Daily Narratives

  • Generating daily summaries
  • Aggregating hourly data
  • Long-term pattern identification
  • Narrative coherence
  • Summary formatting

4. Timeline Lore

  • Creating lore entries
  • Updating lore context
  • Lore retrieval
  • Lore filtering
  • Lore expiration

5. Storyline Tracking

  • Tracking ongoing storylines
  • Storyline progression
  • Storyline completion
  • Cross-referencing events

Testing Strategy

describe('NarrativeMemory', () => {
  describe('Initialization', () => {
    test('initializes with historical data');
    test('handles missing data gracefully');
    test('migrates old formats');
    test('sets up storage structures');
  });

  describe('Hourly Narratives', () => {
    test('generates hourly summaries');
    test('aggregates topics correctly');
    test('selects representative samples');
    test('calculates diversity metrics');
    test('updates sliding window');
  });

  describe('Daily Narratives', () => {
    test('generates daily summaries');
    test('aggregates hourly narratives');
    test('identifies long-term patterns');
    test('maintains narrative coherence');
    test('formats summaries properly');
  });

  describe('Timeline Lore', () => {
    test('creates lore entries');
    test('updates lore context');
    test('retrieves relevant lore');
    test('filters by criteria');
    test('handles lore expiration');
  });

  describe('Storyline Tracking', () => {
    test('tracks ongoing storylines');
    test('updates storyline progress');
    test('marks storylines complete');
    test('cross-references events');
  });

  describe('Memory Persistence', () => {
    test('saves narratives to storage');
    test('loads narratives from storage');
    test('handles storage errors');
    test('manages storage limits');
  });

  describe('Integration', () => {
    test('integrates with context accumulator');
    test('provides data to context provider');
    test('supports evolution tracking');
  });
});

Test Fixtures Needed

  • Historical narrative data
  • Topic time-series data
  • Lore entry examples
  • Storyline scenarios
  • Configuration variations

Acceptance Criteria

  • Initialization fully tested
  • Hourly narrative generation verified
  • Daily narrative generation covered
  • Timeline lore management tested
  • Storyline tracking verified
  • Memory persistence tested
  • Overall coverage 100%

Related

  • Parent: Increase plugin-nostr test coverage to 100% #39 - Increase plugin-nostr test coverage to 100%
  • Related: lib/contextAccumulator.js - Provides data
  • Related: lib/narrativeContextProvider.js - Consumes data
  • See: test/narrativeMemory.*.test.js, TOPIC_ANALYSIS_AND_NARRATIVE.md

Priority

🟡 MEDIUM - Critical for maintaining agent's long-term memory and narrative coherence.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions