katana-document-viewer 0.1.4

KatanA document viewer artifact, render evaluation, and export foundation.
Documentation
use crate::document::{
    DocumentModelError, DocumentSnapshot, DocumentSnapshotFactory, DocumentSource, SourceKind,
    SourceRevision, SourceUri,
};
use katana_markdown_model::{KatanaMarkdownModel, MarkdownInput};

pub(crate) struct SampleSnapshotFactory;

impl SampleSnapshotFactory {
    pub(crate) fn create() -> Result<DocumentSnapshot, DocumentModelError> {
        let source = DocumentSource {
            uri: SourceUri("file:///sample.md".to_string()),
            kind: SourceKind::Markdown,
            revision: SourceRevision("rev-1".to_string()),
            content: "# Title\n\nBody".to_string(),
        };
        let parse_result = KatanaMarkdownModel::parse(MarkdownInput::from_content(
            "sample.md",
            source.content.clone(),
        ));
        DocumentSnapshotFactory::from_parse_result(source, parse_result)
    }
}

#[cfg(test)]
mod tests {
    use super::SampleSnapshotFactory;

    #[test]
    fn creates_parseable_sample_snapshot() {
        let result = SampleSnapshotFactory::create()
            .map(|snapshot| (snapshot.source_uri.0, !snapshot.document.nodes.is_empty()));
        assert!(result.is_ok());

        let actual = result.unwrap_or((String::new(), false));
        assert_eq!(actual, ("file:///sample.md".to_string(), true));
    }
}