726 lines
21 KiB
V
726 lines
21 KiB
V
module client
|
|
|
|
import os
|
|
import incubaid.herolib.core.texttools
|
|
|
|
// Helper function to create a test export directory structure
|
|
fn setup_test_export() string {
|
|
test_dir := os.join_path(os.temp_dir(), 'atlas_client_test_${os.getpid()}')
|
|
|
|
// Clean up if exists
|
|
if os.exists(test_dir) {
|
|
os.rmdir_all(test_dir) or {}
|
|
}
|
|
|
|
// Create directory structure
|
|
os.mkdir_all(os.join_path(test_dir, 'content', 'testcollection')) or { panic(err) }
|
|
os.mkdir_all(os.join_path(test_dir, 'content', 'anothercollection')) or { panic(err) }
|
|
os.mkdir_all(os.join_path(test_dir, 'meta')) or { panic(err) }
|
|
|
|
// Create test pages
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', 'page1.md'), '# Page 1\n\nContent here.') or {
|
|
panic(err)
|
|
}
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', 'page2.md'), '# Page 2\n\n') or {
|
|
panic(err)
|
|
}
|
|
os.write_file(os.join_path(test_dir, 'content', 'anothercollection', 'intro.md'),
|
|
'# Intro\n\nWelcome!') or { panic(err) }
|
|
|
|
// Create test images
|
|
os.mkdir_all(os.join_path(test_dir, 'content', 'testcollection', 'img')) or { panic(err) }
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', 'img', 'logo.png'),
|
|
'fake png data') or { panic(err) }
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', 'img', 'banner.jpg'),
|
|
'fake jpg data') or { panic(err) }
|
|
|
|
// Create test files
|
|
os.mkdir_all(os.join_path(test_dir, 'content', 'testcollection', 'files')) or { panic(err) }
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', 'files', 'data.csv'),
|
|
'col1,col2\nval1,val2') or { panic(err) }
|
|
|
|
// Create metadata files
|
|
metadata1 := '{
|
|
"name": "testcollection",
|
|
"path": "",
|
|
"pages": {
|
|
"page1": {
|
|
"name": "page1",
|
|
"path": "",
|
|
"collection_name": "testcollection",
|
|
"links": []
|
|
},
|
|
"page2": {
|
|
"name": "page2",
|
|
"path": "",
|
|
"collection_name": "testcollection",
|
|
"links": [
|
|
{
|
|
"src": "logo.png",
|
|
"text": "logo",
|
|
"target": "logo.png",
|
|
"line": 3,
|
|
"target_collection_name": "testcollection",
|
|
"target_item_name": "logo.png",
|
|
"status": "ok",
|
|
"file_type": "image"
|
|
},
|
|
{
|
|
"src": "data.csv",
|
|
"text": "data",
|
|
"target": "data.csv",
|
|
"line": 4,
|
|
"target_collection_name": "testcollection",
|
|
"target_item_name": "data.csv",
|
|
"status": "ok",
|
|
"file_type": "file"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"files": {
|
|
"logo.png": {
|
|
"name": "logo.png",
|
|
"path": "img/logo.png"
|
|
},
|
|
"banner.jpg": {
|
|
"name": "banner.jpg",
|
|
"path": "img/banner.jpg"
|
|
},
|
|
"data.csv": {
|
|
"name": "data.csv",
|
|
"path": "files/data.csv"
|
|
}
|
|
},
|
|
"errors": []
|
|
}'
|
|
os.write_file(os.join_path(test_dir, 'meta', 'testcollection.json'), metadata1) or {
|
|
panic(err)
|
|
}
|
|
|
|
metadata2 := '{
|
|
"name": "anothercollection",
|
|
"path": "",
|
|
"pages": {
|
|
"intro": {
|
|
"name": "intro",
|
|
"path": "",
|
|
"collection_name": "anothercollection",
|
|
"links": []
|
|
}
|
|
},
|
|
"files": {},
|
|
"errors": [
|
|
{
|
|
"category": "test",
|
|
"page_key": "intro",
|
|
"message": "Test error",
|
|
"line": 10
|
|
}
|
|
]
|
|
}'
|
|
os.write_file(os.join_path(test_dir, 'meta', 'anothercollection.json'), metadata2) or {
|
|
panic(err)
|
|
}
|
|
|
|
return test_dir
|
|
}
|
|
|
|
// Helper function to cleanup test directory
|
|
fn cleanup_test_export(test_dir string) {
|
|
os.rmdir_all(test_dir) or {}
|
|
}
|
|
|
|
// Test creating a new client
|
|
fn test_new_client() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
assert client.export_dir == test_dir
|
|
}
|
|
|
|
// Test creating client with non-existent directory
|
|
fn test_new_client_nonexistent_dir() {
|
|
mut client := new(export_dir: '/nonexistent/path/to/export') or { panic(err) }
|
|
// Client creation should succeed, but operations will fail
|
|
assert client.export_dir == '/nonexistent/path/to/export'
|
|
}
|
|
|
|
// Test get_page_path - success
|
|
fn test_get_page_path_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
path := client.get_page_path('testcollection', 'page1') or { panic(err) }
|
|
|
|
assert path.contains('testcollection')
|
|
assert path.ends_with('page1.md')
|
|
assert os.exists(path)
|
|
}
|
|
|
|
// Test get_page_path - with naming normalization
|
|
fn test_get_page_path_normalization() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
// Create a page with normalized name
|
|
normalized_name := texttools.name_fix('Test_Page-Name')
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', '${normalized_name}.md'),
|
|
'# Test') or { panic(err) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
|
|
// Should find the page regardless of input format
|
|
path := client.get_page_path('testcollection', 'Test_Page-Name') or { panic(err) }
|
|
assert os.exists(path)
|
|
}
|
|
|
|
// Test get_page_path - page not found
|
|
fn test_get_page_path_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.get_page_path('testcollection', 'nonexistent') or {
|
|
assert err.msg().contains('page_not_found')
|
|
assert err.msg().contains('nonexistent')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test get_page_path - export dir not found
|
|
fn test_get_page_path_no_export_dir() {
|
|
mut client := new(export_dir: '/nonexistent/path') or { panic(err) }
|
|
client.get_page_path('testcollection', 'page1') or {
|
|
assert err.msg().contains('export_dir_not_found')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test get_file_path - success
|
|
fn test_get_file_path_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
path := client.get_file_path('testcollection', 'data.csv') or { panic(err) }
|
|
|
|
assert path.contains('testcollection')
|
|
assert path.ends_with('data.csv')
|
|
assert os.exists(path)
|
|
}
|
|
|
|
// Test get_file_path - file not found
|
|
fn test_get_file_path_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.get_file_path('testcollection', 'missing.pdf') or {
|
|
assert err.msg().contains('file_not_found')
|
|
assert err.msg().contains('missing.pdf')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test get_image_path - success
|
|
fn test_get_image_path_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
path := client.get_image_path('testcollection', 'logo.png') or { panic(err) }
|
|
|
|
assert path.contains('testcollection')
|
|
assert path.ends_with('logo.png')
|
|
assert os.exists(path)
|
|
}
|
|
|
|
// Test get_image_path - image not found
|
|
fn test_get_image_path_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.get_image_path('testcollection', 'missing.jpg') or {
|
|
assert err.msg().contains('image_not_found')
|
|
assert err.msg().contains('missing.jpg')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test page_exists - true
|
|
fn test_page_exists_true() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
exists := client.page_exists('testcollection', 'page1')
|
|
assert exists == true
|
|
}
|
|
|
|
// Test page_exists - false
|
|
fn test_page_exists_false() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
exists := client.page_exists('testcollection', 'nonexistent')
|
|
assert exists == false
|
|
}
|
|
|
|
// Test file_exists - true
|
|
fn test_file_exists_true() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
exists := client.file_exists('testcollection', 'data.csv')
|
|
assert exists == true
|
|
}
|
|
|
|
// Test file_exists - false
|
|
fn test_file_exists_false() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
exists := client.file_exists('testcollection', 'missing.pdf')
|
|
assert exists == false
|
|
}
|
|
|
|
// Test image_exists - true
|
|
fn test_image_exists_true() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
exists := client.image_exists('testcollection', 'logo.png')
|
|
assert exists == true
|
|
}
|
|
|
|
// Test image_exists - false
|
|
fn test_image_exists_false() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
exists := client.image_exists('testcollection', 'missing.svg')
|
|
assert exists == false
|
|
}
|
|
|
|
// Test get_page_content - success
|
|
fn test_get_page_content_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
content := client.get_page_content('testcollection', 'page1') or { panic(err) }
|
|
|
|
assert content.contains('# Page 1')
|
|
assert content.contains('Content here.')
|
|
}
|
|
|
|
// Test get_page_content - page not found
|
|
fn test_get_page_content_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.get_page_content('testcollection', 'nonexistent') or {
|
|
assert err.msg().contains('page_not_found')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test list_collections
|
|
fn test_list_collections() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
collections := client.list_collections() or { panic(err) }
|
|
|
|
assert collections.len == 2
|
|
assert 'testcollection' in collections
|
|
assert 'anothercollection' in collections
|
|
}
|
|
|
|
// Test list_collections - no content dir
|
|
fn test_list_collections_no_content_dir() {
|
|
test_dir := os.join_path(os.temp_dir(), 'empty_export_${os.getpid()}')
|
|
os.mkdir_all(test_dir) or { panic(err) }
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.list_collections() or {
|
|
assert err.msg().contains('invalid_export_structure')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test list_pages - success
|
|
fn test_list_pages_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
pages := client.list_pages('testcollection') or { panic(err) }
|
|
|
|
assert pages.len == 2
|
|
assert 'page1' in pages
|
|
assert 'page2' in pages
|
|
}
|
|
|
|
// Test list_pages - collection not found
|
|
fn test_list_pages_collection_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.list_pages('nonexistent') or {
|
|
assert err.msg().contains('collection_not_found')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test list_files - success
|
|
fn test_list_files_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
files := client.list_files('testcollection') or { panic(err) }
|
|
|
|
assert files.len == 1
|
|
assert 'data.csv' in files
|
|
}
|
|
|
|
// Test list_files - no files
|
|
fn test_list_files_empty() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
files := client.list_files('anothercollection') or { panic(err) }
|
|
|
|
assert files.len == 0
|
|
}
|
|
|
|
// Test list_images - success
|
|
fn test_list_images_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
images := client.list_images('testcollection') or { panic(err) }
|
|
|
|
assert images.len == 2
|
|
assert 'logo.png' in images
|
|
assert 'banner.jpg' in images
|
|
}
|
|
|
|
// Test list_images - no images
|
|
fn test_list_images_empty() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
images := client.list_images('anothercollection') or { panic(err) }
|
|
|
|
assert images.len == 0
|
|
}
|
|
|
|
// Test list_pages_map
|
|
fn test_list_pages_map() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
pages_map := client.list_pages_map() or { panic(err) }
|
|
|
|
assert pages_map.len == 2
|
|
assert 'testcollection' in pages_map
|
|
assert 'anothercollection' in pages_map
|
|
assert pages_map['testcollection'].len == 2
|
|
assert pages_map['anothercollection'].len == 1
|
|
}
|
|
|
|
// Test list_markdown
|
|
fn test_list_markdown() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
markdown := client.list_markdown() or { panic(err) }
|
|
|
|
assert markdown.contains('testcollection')
|
|
assert markdown.contains('anothercollection')
|
|
assert markdown.contains('page1')
|
|
assert markdown.contains('page2')
|
|
assert markdown.contains('intro')
|
|
assert markdown.contains('##')
|
|
assert markdown.contains('*')
|
|
}
|
|
|
|
// Test get_collection_metadata - success
|
|
fn test_get_collection_metadata_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
metadata := client.get_collection_metadata('testcollection') or { panic(err) }
|
|
|
|
assert metadata.name == 'testcollection'
|
|
assert metadata.pages.len == 2
|
|
assert metadata.errors.len == 0
|
|
}
|
|
|
|
// Test get_collection_metadata - with errors
|
|
fn test_get_collection_metadata_with_errors() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
metadata := client.get_collection_metadata('anothercollection') or { panic(err) }
|
|
|
|
assert metadata.name == 'anothercollection'
|
|
assert metadata.pages.len == 1
|
|
assert metadata.errors.len == 1
|
|
assert metadata.errors[0].message == 'Test error'
|
|
assert metadata.errors[0].line == 10
|
|
}
|
|
|
|
// Test get_collection_metadata - not found
|
|
fn test_get_collection_metadata_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.get_collection_metadata('nonexistent') or {
|
|
assert err.msg().contains('collection_not_found')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test get_page_links - success
|
|
fn test_get_page_links_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
links := client.get_page_links('testcollection', 'page2') or { panic(err) }
|
|
|
|
assert links.len == 2
|
|
assert links[0].target_item_name == 'logo.png'
|
|
assert links[0].target_collection_name == 'testcollection'
|
|
assert links[0].file_type == .image
|
|
}
|
|
|
|
// Test get_page_links - no links
|
|
fn test_get_page_links_empty() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
links := client.get_page_links('testcollection', 'page1') or { panic(err) }
|
|
|
|
assert links.len == 0
|
|
}
|
|
|
|
// Test get_page_links - page not found
|
|
fn test_get_page_links_page_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.get_page_links('testcollection', 'nonexistent') or {
|
|
assert err.msg().contains('page_not_found')
|
|
return
|
|
}
|
|
assert false, 'Should have returned an error'
|
|
}
|
|
|
|
// Test get_collection_errors - success
|
|
fn test_get_collection_errors_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
errors := client.get_collection_errors('anothercollection') or { panic(err) }
|
|
|
|
assert errors.len == 1
|
|
assert errors[0].message == 'Test error'
|
|
}
|
|
|
|
// Test get_collection_errors - no errors
|
|
fn test_get_collection_errors_empty() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
errors := client.get_collection_errors('testcollection') or { panic(err) }
|
|
|
|
assert errors.len == 0
|
|
}
|
|
|
|
// Test has_errors - true
|
|
fn test_has_errors_true() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
has_errors := client.has_errors('anothercollection')
|
|
|
|
assert has_errors == true
|
|
}
|
|
|
|
// Test has_errors - false
|
|
fn test_has_errors_false() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
has_errors := client.has_errors('testcollection')
|
|
|
|
assert has_errors == false
|
|
}
|
|
|
|
// Test has_errors - collection not found
|
|
fn test_has_errors_collection_not_found() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
has_errors := client.has_errors('nonexistent')
|
|
|
|
assert has_errors == false
|
|
}
|
|
|
|
// Test copy_images - success
|
|
fn test_copy_images_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
dest_dir := os.join_path(os.temp_dir(), 'copy_dest_${os.getpid()}')
|
|
os.mkdir_all(dest_dir) or { panic(err) }
|
|
defer { cleanup_test_export(dest_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.copy_images('testcollection', 'page2', dest_dir) or { panic(err) }
|
|
|
|
// Check that logo.png was copied to img subdirectory
|
|
assert os.exists(os.join_path(dest_dir, 'img', 'logo.png'))
|
|
}
|
|
|
|
// Test copy_images - no images
|
|
fn test_copy_images_no_images() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
dest_dir := os.join_path(os.temp_dir(), 'copy_dest_empty_${os.getpid()}')
|
|
os.mkdir_all(dest_dir) or { panic(err) }
|
|
defer { cleanup_test_export(dest_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.copy_images('testcollection', 'page1', dest_dir) or { panic(err) }
|
|
|
|
// Should succeed even with no images
|
|
assert true
|
|
}
|
|
|
|
// Test copy_files - success
|
|
fn test_copy_files_success() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
dest_dir := os.join_path(os.temp_dir(), 'copy_files_dest_${os.getpid()}')
|
|
os.mkdir_all(dest_dir) or { panic(err) }
|
|
defer { cleanup_test_export(dest_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
// Note: test data would need to be updated to have file links in page2
|
|
// For now, this test demonstrates the pattern
|
|
client.copy_files('testcollection', 'page2', dest_dir) or { panic(err) }
|
|
|
|
// Check that files were copied to files subdirectory
|
|
// assert os.exists(os.join_path(dest_dir, 'files', 'somefile.csv'))
|
|
}
|
|
|
|
// Test copy_files - no files
|
|
fn test_copy_files_no_files() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
dest_dir := os.join_path(os.temp_dir(), 'copy_files_empty_${os.getpid()}')
|
|
os.mkdir_all(dest_dir) or { panic(err) }
|
|
defer { cleanup_test_export(dest_dir) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
client.copy_files('testcollection', 'page1', dest_dir) or { panic(err) }
|
|
|
|
// Should succeed even with no file links
|
|
assert true
|
|
}
|
|
|
|
// Test naming normalization edge cases
|
|
fn test_naming_normalization_underscores() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
// Create page with underscores
|
|
normalized := texttools.name_fix('test_page_name')
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', '${normalized}.md'),
|
|
'# Test') or { panic(err) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
|
|
// Should find with underscores
|
|
exists := client.page_exists('testcollection', 'test_page_name')
|
|
assert exists == true
|
|
}
|
|
|
|
// Test naming normalization edge cases - dashes
|
|
fn test_naming_normalization_dashes() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
// Create page with dashes
|
|
normalized := texttools.name_fix('test-page-name')
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', '${normalized}.md'),
|
|
'# Test') or { panic(err) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
|
|
// Should find with dashes
|
|
exists := client.page_exists('testcollection', 'test-page-name')
|
|
assert exists == true
|
|
}
|
|
|
|
// Test naming normalization edge cases - mixed case
|
|
fn test_naming_normalization_case() {
|
|
test_dir := setup_test_export()
|
|
defer { cleanup_test_export(test_dir) }
|
|
|
|
// Create page with mixed case
|
|
normalized := texttools.name_fix('TestPageName')
|
|
os.write_file(os.join_path(test_dir, 'content', 'testcollection', '${normalized}.md'),
|
|
'# Test') or { panic(err) }
|
|
|
|
mut client := new(export_dir: test_dir) or { panic(err) }
|
|
|
|
// Should find with mixed case
|
|
exists := client.page_exists('testcollection', 'TestPageName')
|
|
assert exists == true
|
|
}
|