kreuzberg 4.0.0.pre.rc.29 → 4.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +0 -6
- data/.rubocop.yaml +534 -1
- data/Gemfile +2 -1
- data/Gemfile.lock +28 -116
- data/README.md +269 -629
- data/Rakefile +0 -9
- data/Steepfile +4 -8
- data/examples/async_patterns.rb +58 -1
- data/ext/kreuzberg_rb/extconf.rb +5 -35
- data/ext/kreuzberg_rb/native/Cargo.toml +16 -55
- data/ext/kreuzberg_rb/native/build.rs +14 -12
- data/ext/kreuzberg_rb/native/include/ieeefp.h +1 -1
- data/ext/kreuzberg_rb/native/include/msvc_compat/strings.h +1 -1
- data/ext/kreuzberg_rb/native/include/strings.h +2 -2
- data/ext/kreuzberg_rb/native/include/unistd.h +1 -1
- data/ext/kreuzberg_rb/native/src/lib.rs +34 -897
- data/extconf.rb +6 -38
- data/kreuzberg.gemspec +20 -114
- data/lib/kreuzberg/api_proxy.rb +18 -2
- data/lib/kreuzberg/cache_api.rb +0 -22
- data/lib/kreuzberg/cli.rb +10 -2
- data/lib/kreuzberg/cli_proxy.rb +10 -0
- data/lib/kreuzberg/config.rb +22 -274
- data/lib/kreuzberg/errors.rb +7 -73
- data/lib/kreuzberg/extraction_api.rb +8 -237
- data/lib/kreuzberg/mcp_proxy.rb +11 -2
- data/lib/kreuzberg/ocr_backend_protocol.rb +73 -0
- data/lib/kreuzberg/post_processor_protocol.rb +71 -0
- data/lib/kreuzberg/result.rb +33 -151
- data/lib/kreuzberg/setup_lib_path.rb +2 -22
- data/lib/kreuzberg/validator_protocol.rb +73 -0
- data/lib/kreuzberg/version.rb +1 -1
- data/lib/kreuzberg.rb +13 -27
- data/pkg/kreuzberg-4.0.0.rc1.gem +0 -0
- data/sig/kreuzberg.rbs +12 -105
- data/spec/binding/cache_spec.rb +22 -22
- data/spec/binding/cli_proxy_spec.rb +4 -2
- data/spec/binding/cli_spec.rb +11 -12
- data/spec/binding/config_spec.rb +0 -74
- data/spec/binding/config_validation_spec.rb +6 -100
- data/spec/binding/error_handling_spec.rb +97 -283
- data/spec/binding/plugins/ocr_backend_spec.rb +8 -8
- data/spec/binding/plugins/postprocessor_spec.rb +11 -11
- data/spec/binding/plugins/validator_spec.rb +13 -12
- data/spec/examples.txt +104 -0
- data/spec/fixtures/config.toml +1 -0
- data/spec/fixtures/config.yaml +1 -0
- data/spec/fixtures/invalid_config.toml +1 -0
- data/spec/smoke/package_spec.rb +3 -2
- data/spec/spec_helper.rb +3 -1
- data/vendor/kreuzberg/Cargo.toml +67 -192
- data/vendor/kreuzberg/README.md +9 -97
- data/vendor/kreuzberg/build.rs +194 -516
- data/vendor/kreuzberg/src/api/handlers.rs +9 -130
- data/vendor/kreuzberg/src/api/mod.rs +3 -18
- data/vendor/kreuzberg/src/api/server.rs +71 -236
- data/vendor/kreuzberg/src/api/types.rs +7 -43
- data/vendor/kreuzberg/src/bin/profile_extract.rs +455 -0
- data/vendor/kreuzberg/src/cache/mod.rs +3 -27
- data/vendor/kreuzberg/src/chunking/mod.rs +79 -1705
- data/vendor/kreuzberg/src/core/batch_mode.rs +0 -60
- data/vendor/kreuzberg/src/core/config.rs +23 -905
- data/vendor/kreuzberg/src/core/extractor.rs +106 -403
- data/vendor/kreuzberg/src/core/io.rs +2 -4
- data/vendor/kreuzberg/src/core/mime.rs +12 -2
- data/vendor/kreuzberg/src/core/mod.rs +3 -22
- data/vendor/kreuzberg/src/core/pipeline.rs +78 -395
- data/vendor/kreuzberg/src/embeddings.rs +21 -169
- data/vendor/kreuzberg/src/error.rs +2 -2
- data/vendor/kreuzberg/src/extraction/archive.rs +31 -36
- data/vendor/kreuzberg/src/extraction/docx.rs +1 -365
- data/vendor/kreuzberg/src/extraction/email.rs +11 -12
- data/vendor/kreuzberg/src/extraction/excel.rs +129 -138
- data/vendor/kreuzberg/src/extraction/html.rs +170 -1447
- data/vendor/kreuzberg/src/extraction/image.rs +14 -138
- data/vendor/kreuzberg/src/extraction/libreoffice.rs +3 -13
- data/vendor/kreuzberg/src/extraction/mod.rs +5 -21
- data/vendor/kreuzberg/src/extraction/office_metadata/mod.rs +0 -2
- data/vendor/kreuzberg/src/extraction/pandoc/batch.rs +275 -0
- data/vendor/kreuzberg/src/extraction/pandoc/mime_types.rs +178 -0
- data/vendor/kreuzberg/src/extraction/pandoc/mod.rs +491 -0
- data/vendor/kreuzberg/src/extraction/pandoc/server.rs +496 -0
- data/vendor/kreuzberg/src/extraction/pandoc/subprocess.rs +1188 -0
- data/vendor/kreuzberg/src/extraction/pandoc/version.rs +162 -0
- data/vendor/kreuzberg/src/extraction/pptx.rs +94 -196
- data/vendor/kreuzberg/src/extraction/structured.rs +4 -5
- data/vendor/kreuzberg/src/extraction/table.rs +1 -2
- data/vendor/kreuzberg/src/extraction/text.rs +10 -18
- data/vendor/kreuzberg/src/extractors/archive.rs +0 -22
- data/vendor/kreuzberg/src/extractors/docx.rs +148 -69
- data/vendor/kreuzberg/src/extractors/email.rs +9 -37
- data/vendor/kreuzberg/src/extractors/excel.rs +40 -81
- data/vendor/kreuzberg/src/extractors/html.rs +173 -182
- data/vendor/kreuzberg/src/extractors/image.rs +8 -32
- data/vendor/kreuzberg/src/extractors/mod.rs +10 -171
- data/vendor/kreuzberg/src/extractors/pandoc.rs +201 -0
- data/vendor/kreuzberg/src/extractors/pdf.rs +64 -329
- data/vendor/kreuzberg/src/extractors/pptx.rs +34 -79
- data/vendor/kreuzberg/src/extractors/structured.rs +0 -16
- data/vendor/kreuzberg/src/extractors/text.rs +7 -30
- data/vendor/kreuzberg/src/extractors/xml.rs +8 -27
- data/vendor/kreuzberg/src/keywords/processor.rs +1 -9
- data/vendor/kreuzberg/src/keywords/rake.rs +1 -0
- data/vendor/kreuzberg/src/language_detection/mod.rs +51 -94
- data/vendor/kreuzberg/src/lib.rs +5 -17
- data/vendor/kreuzberg/src/mcp/mod.rs +1 -4
- data/vendor/kreuzberg/src/mcp/server.rs +21 -145
- data/vendor/kreuzberg/src/ocr/mod.rs +0 -2
- data/vendor/kreuzberg/src/ocr/processor.rs +8 -19
- data/vendor/kreuzberg/src/ocr/tesseract_backend.rs +0 -2
- data/vendor/kreuzberg/src/pdf/error.rs +1 -93
- data/vendor/kreuzberg/src/pdf/metadata.rs +100 -263
- data/vendor/kreuzberg/src/pdf/mod.rs +2 -33
- data/vendor/kreuzberg/src/pdf/rendering.rs +12 -12
- data/vendor/kreuzberg/src/pdf/table.rs +64 -61
- data/vendor/kreuzberg/src/pdf/text.rs +24 -416
- data/vendor/kreuzberg/src/plugins/extractor.rs +8 -40
- data/vendor/kreuzberg/src/plugins/mod.rs +0 -3
- data/vendor/kreuzberg/src/plugins/ocr.rs +14 -22
- data/vendor/kreuzberg/src/plugins/processor.rs +1 -10
- data/vendor/kreuzberg/src/plugins/registry.rs +0 -15
- data/vendor/kreuzberg/src/plugins/validator.rs +8 -20
- data/vendor/kreuzberg/src/stopwords/mod.rs +2 -2
- data/vendor/kreuzberg/src/text/mod.rs +0 -8
- data/vendor/kreuzberg/src/text/quality.rs +15 -28
- data/vendor/kreuzberg/src/text/string_utils.rs +10 -22
- data/vendor/kreuzberg/src/text/token_reduction/core.rs +50 -86
- data/vendor/kreuzberg/src/text/token_reduction/filters.rs +16 -37
- data/vendor/kreuzberg/src/text/token_reduction/simd_text.rs +1 -2
- data/vendor/kreuzberg/src/types.rs +67 -907
- data/vendor/kreuzberg/src/utils/mod.rs +0 -14
- data/vendor/kreuzberg/src/utils/quality.rs +3 -12
- data/vendor/kreuzberg/tests/api_tests.rs +0 -506
- data/vendor/kreuzberg/tests/archive_integration.rs +0 -2
- data/vendor/kreuzberg/tests/batch_orchestration.rs +12 -57
- data/vendor/kreuzberg/tests/batch_processing.rs +8 -32
- data/vendor/kreuzberg/tests/chunking_offset_demo.rs +92 -0
- data/vendor/kreuzberg/tests/concurrency_stress.rs +8 -40
- data/vendor/kreuzberg/tests/config_features.rs +1 -33
- data/vendor/kreuzberg/tests/config_loading_tests.rs +39 -16
- data/vendor/kreuzberg/tests/core_integration.rs +9 -35
- data/vendor/kreuzberg/tests/csv_integration.rs +81 -71
- data/vendor/kreuzberg/tests/docx_metadata_extraction_test.rs +25 -23
- data/vendor/kreuzberg/tests/email_integration.rs +1 -3
- data/vendor/kreuzberg/tests/error_handling.rs +34 -43
- data/vendor/kreuzberg/tests/format_integration.rs +1 -7
- data/vendor/kreuzberg/tests/helpers/mod.rs +0 -60
- data/vendor/kreuzberg/tests/image_integration.rs +0 -2
- data/vendor/kreuzberg/tests/mime_detection.rs +16 -17
- data/vendor/kreuzberg/tests/ocr_configuration.rs +0 -4
- data/vendor/kreuzberg/tests/ocr_errors.rs +0 -22
- data/vendor/kreuzberg/tests/ocr_quality.rs +0 -2
- data/vendor/kreuzberg/tests/pandoc_integration.rs +503 -0
- data/vendor/kreuzberg/tests/pdf_integration.rs +0 -2
- data/vendor/kreuzberg/tests/pipeline_integration.rs +2 -36
- data/vendor/kreuzberg/tests/plugin_ocr_backend_test.rs +0 -5
- data/vendor/kreuzberg/tests/plugin_postprocessor_test.rs +1 -17
- data/vendor/kreuzberg/tests/plugin_system.rs +0 -6
- data/vendor/kreuzberg/tests/registry_integration_tests.rs +22 -2
- data/vendor/kreuzberg/tests/security_validation.rs +1 -13
- data/vendor/kreuzberg/tests/test_fastembed.rs +23 -45
- metadata +25 -171
- data/.rubocop.yml +0 -543
- data/ext/kreuzberg_rb/native/.cargo/config.toml +0 -23
- data/ext/kreuzberg_rb/native/Cargo.lock +0 -7619
- data/lib/kreuzberg/error_context.rb +0 -136
- data/lib/kreuzberg/types.rb +0 -170
- data/lib/libpdfium.so +0 -0
- data/spec/binding/async_operations_spec.rb +0 -473
- data/spec/binding/batch_operations_spec.rb +0 -595
- data/spec/binding/batch_spec.rb +0 -359
- data/spec/binding/config_result_spec.rb +0 -377
- data/spec/binding/embeddings_spec.rb +0 -816
- data/spec/binding/error_recovery_spec.rb +0 -488
- data/spec/binding/font_config_spec.rb +0 -220
- data/spec/binding/images_spec.rb +0 -738
- data/spec/binding/keywords_extraction_spec.rb +0 -600
- data/spec/binding/metadata_types_spec.rb +0 -1228
- data/spec/binding/pages_extraction_spec.rb +0 -471
- data/spec/binding/tables_spec.rb +0 -641
- data/spec/unit/config/chunking_config_spec.rb +0 -213
- data/spec/unit/config/embedding_config_spec.rb +0 -343
- data/spec/unit/config/extraction_config_spec.rb +0 -438
- data/spec/unit/config/font_config_spec.rb +0 -285
- data/spec/unit/config/hierarchy_config_spec.rb +0 -314
- data/spec/unit/config/image_extraction_config_spec.rb +0 -209
- data/spec/unit/config/image_preprocessing_config_spec.rb +0 -249
- data/spec/unit/config/keyword_config_spec.rb +0 -229
- data/spec/unit/config/language_detection_config_spec.rb +0 -258
- data/spec/unit/config/ocr_config_spec.rb +0 -171
- data/spec/unit/config/page_config_spec.rb +0 -221
- data/spec/unit/config/pdf_config_spec.rb +0 -267
- data/spec/unit/config/postprocessor_config_spec.rb +0 -290
- data/spec/unit/config/tesseract_config_spec.rb +0 -181
- data/spec/unit/config/token_reduction_config_spec.rb +0 -251
- data/test/metadata_types_test.rb +0 -959
- data/vendor/Cargo.toml +0 -61
- data/vendor/kreuzberg/examples/bench_fixes.rs +0 -71
- data/vendor/kreuzberg/examples/test_pdfium_fork.rs +0 -62
- data/vendor/kreuzberg/src/chunking/processor.rs +0 -219
- data/vendor/kreuzberg/src/core/batch_optimizations.rs +0 -385
- data/vendor/kreuzberg/src/core/config_validation.rs +0 -949
- data/vendor/kreuzberg/src/core/formats.rs +0 -235
- data/vendor/kreuzberg/src/core/server_config.rs +0 -1220
- data/vendor/kreuzberg/src/extraction/capacity.rs +0 -263
- data/vendor/kreuzberg/src/extraction/markdown.rs +0 -216
- data/vendor/kreuzberg/src/extraction/office_metadata/odt_properties.rs +0 -284
- data/vendor/kreuzberg/src/extractors/bibtex.rs +0 -470
- data/vendor/kreuzberg/src/extractors/docbook.rs +0 -504
- data/vendor/kreuzberg/src/extractors/epub.rs +0 -696
- data/vendor/kreuzberg/src/extractors/fictionbook.rs +0 -492
- data/vendor/kreuzberg/src/extractors/jats.rs +0 -1054
- data/vendor/kreuzberg/src/extractors/jupyter.rs +0 -368
- data/vendor/kreuzberg/src/extractors/latex.rs +0 -653
- data/vendor/kreuzberg/src/extractors/markdown.rs +0 -701
- data/vendor/kreuzberg/src/extractors/odt.rs +0 -628
- data/vendor/kreuzberg/src/extractors/opml.rs +0 -635
- data/vendor/kreuzberg/src/extractors/orgmode.rs +0 -529
- data/vendor/kreuzberg/src/extractors/rst.rs +0 -577
- data/vendor/kreuzberg/src/extractors/rtf.rs +0 -809
- data/vendor/kreuzberg/src/extractors/security.rs +0 -484
- data/vendor/kreuzberg/src/extractors/security_tests.rs +0 -367
- data/vendor/kreuzberg/src/extractors/typst.rs +0 -651
- data/vendor/kreuzberg/src/language_detection/processor.rs +0 -218
- data/vendor/kreuzberg/src/ocr/language_registry.rs +0 -520
- data/vendor/kreuzberg/src/panic_context.rs +0 -154
- data/vendor/kreuzberg/src/pdf/bindings.rs +0 -306
- data/vendor/kreuzberg/src/pdf/bundled.rs +0 -408
- data/vendor/kreuzberg/src/pdf/fonts.rs +0 -358
- data/vendor/kreuzberg/src/pdf/hierarchy.rs +0 -903
- data/vendor/kreuzberg/src/text/quality_processor.rs +0 -231
- data/vendor/kreuzberg/src/text/utf8_validation.rs +0 -193
- data/vendor/kreuzberg/src/utils/pool.rs +0 -503
- data/vendor/kreuzberg/src/utils/pool_sizing.rs +0 -364
- data/vendor/kreuzberg/src/utils/string_pool.rs +0 -761
- data/vendor/kreuzberg/tests/api_embed.rs +0 -360
- data/vendor/kreuzberg/tests/api_extract_multipart.rs +0 -52
- data/vendor/kreuzberg/tests/api_large_pdf_extraction.rs +0 -471
- data/vendor/kreuzberg/tests/api_large_pdf_extraction_diagnostics.rs +0 -289
- data/vendor/kreuzberg/tests/batch_pooling_benchmark.rs +0 -154
- data/vendor/kreuzberg/tests/bibtex_parity_test.rs +0 -421
- data/vendor/kreuzberg/tests/config_integration_test.rs +0 -753
- data/vendor/kreuzberg/tests/data/hierarchy_ground_truth.json +0 -294
- data/vendor/kreuzberg/tests/docbook_extractor_tests.rs +0 -500
- data/vendor/kreuzberg/tests/docx_vs_pandoc_comparison.rs +0 -370
- data/vendor/kreuzberg/tests/epub_native_extractor_tests.rs +0 -275
- data/vendor/kreuzberg/tests/fictionbook_extractor_tests.rs +0 -228
- data/vendor/kreuzberg/tests/html_table_test.rs +0 -551
- data/vendor/kreuzberg/tests/instrumentation_test.rs +0 -139
- data/vendor/kreuzberg/tests/jats_extractor_tests.rs +0 -639
- data/vendor/kreuzberg/tests/jupyter_extractor_tests.rs +0 -704
- data/vendor/kreuzberg/tests/latex_extractor_tests.rs +0 -496
- data/vendor/kreuzberg/tests/markdown_extractor_tests.rs +0 -490
- data/vendor/kreuzberg/tests/ocr_language_registry.rs +0 -191
- data/vendor/kreuzberg/tests/odt_extractor_tests.rs +0 -674
- data/vendor/kreuzberg/tests/opml_extractor_tests.rs +0 -616
- data/vendor/kreuzberg/tests/orgmode_extractor_tests.rs +0 -822
- data/vendor/kreuzberg/tests/page_markers.rs +0 -297
- data/vendor/kreuzberg/tests/pdf_hierarchy_detection.rs +0 -301
- data/vendor/kreuzberg/tests/pdf_hierarchy_quality.rs +0 -589
- data/vendor/kreuzberg/tests/pdf_ocr_triggering.rs +0 -301
- data/vendor/kreuzberg/tests/pdf_text_merging.rs +0 -475
- data/vendor/kreuzberg/tests/pdfium_linking.rs +0 -340
- data/vendor/kreuzberg/tests/rst_extractor_tests.rs +0 -694
- data/vendor/kreuzberg/tests/rtf_extractor_tests.rs +0 -775
- data/vendor/kreuzberg/tests/typst_behavioral_tests.rs +0 -1260
- data/vendor/kreuzberg/tests/typst_extractor_tests.rs +0 -648
- data/vendor/kreuzberg-ffi/Cargo.toml +0 -67
- data/vendor/kreuzberg-ffi/README.md +0 -851
- data/vendor/kreuzberg-ffi/benches/result_view_benchmark.rs +0 -227
- data/vendor/kreuzberg-ffi/build.rs +0 -168
- data/vendor/kreuzberg-ffi/cbindgen.toml +0 -37
- data/vendor/kreuzberg-ffi/kreuzberg-ffi.pc.in +0 -12
- data/vendor/kreuzberg-ffi/kreuzberg.h +0 -3012
- data/vendor/kreuzberg-ffi/src/batch_streaming.rs +0 -588
- data/vendor/kreuzberg-ffi/src/config.rs +0 -1341
- data/vendor/kreuzberg-ffi/src/error.rs +0 -901
- data/vendor/kreuzberg-ffi/src/extraction.rs +0 -555
- data/vendor/kreuzberg-ffi/src/helpers.rs +0 -879
- data/vendor/kreuzberg-ffi/src/lib.rs +0 -977
- data/vendor/kreuzberg-ffi/src/memory.rs +0 -493
- data/vendor/kreuzberg-ffi/src/mime.rs +0 -329
- data/vendor/kreuzberg-ffi/src/panic_shield.rs +0 -265
- data/vendor/kreuzberg-ffi/src/plugins/document_extractor.rs +0 -442
- data/vendor/kreuzberg-ffi/src/plugins/mod.rs +0 -14
- data/vendor/kreuzberg-ffi/src/plugins/ocr_backend.rs +0 -628
- data/vendor/kreuzberg-ffi/src/plugins/post_processor.rs +0 -438
- data/vendor/kreuzberg-ffi/src/plugins/validator.rs +0 -329
- data/vendor/kreuzberg-ffi/src/result.rs +0 -510
- data/vendor/kreuzberg-ffi/src/result_pool.rs +0 -639
- data/vendor/kreuzberg-ffi/src/result_view.rs +0 -773
- data/vendor/kreuzberg-ffi/src/string_intern.rs +0 -568
- data/vendor/kreuzberg-ffi/src/types.rs +0 -363
- data/vendor/kreuzberg-ffi/src/util.rs +0 -210
- data/vendor/kreuzberg-ffi/src/validation.rs +0 -848
- data/vendor/kreuzberg-ffi/tests.disabled/README.md +0 -48
- data/vendor/kreuzberg-ffi/tests.disabled/config_loading_tests.rs +0 -299
- data/vendor/kreuzberg-ffi/tests.disabled/config_tests.rs +0 -346
- data/vendor/kreuzberg-ffi/tests.disabled/extractor_tests.rs +0 -232
- data/vendor/kreuzberg-ffi/tests.disabled/plugin_registration_tests.rs +0 -470
- data/vendor/kreuzberg-tesseract/.commitlintrc.json +0 -13
- data/vendor/kreuzberg-tesseract/.crate-ignore +0 -2
- data/vendor/kreuzberg-tesseract/Cargo.lock +0 -2933
- data/vendor/kreuzberg-tesseract/Cargo.toml +0 -57
- data/vendor/kreuzberg-tesseract/LICENSE +0 -22
- data/vendor/kreuzberg-tesseract/README.md +0 -399
- data/vendor/kreuzberg-tesseract/build.rs +0 -1127
- data/vendor/kreuzberg-tesseract/patches/README.md +0 -71
- data/vendor/kreuzberg-tesseract/patches/tesseract.diff +0 -199
- data/vendor/kreuzberg-tesseract/src/api.rs +0 -1371
- data/vendor/kreuzberg-tesseract/src/choice_iterator.rs +0 -77
- data/vendor/kreuzberg-tesseract/src/enums.rs +0 -297
- data/vendor/kreuzberg-tesseract/src/error.rs +0 -81
- data/vendor/kreuzberg-tesseract/src/lib.rs +0 -145
- data/vendor/kreuzberg-tesseract/src/monitor.rs +0 -57
- data/vendor/kreuzberg-tesseract/src/mutable_iterator.rs +0 -197
- data/vendor/kreuzberg-tesseract/src/page_iterator.rs +0 -253
- data/vendor/kreuzberg-tesseract/src/result_iterator.rs +0 -286
- data/vendor/kreuzberg-tesseract/src/result_renderer.rs +0 -183
- data/vendor/kreuzberg-tesseract/tests/integration_test.rs +0 -211
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Kreuzberg::Config::PDF do
|
|
4
|
-
describe '#initialize' do
|
|
5
|
-
it 'creates config with default values' do
|
|
6
|
-
config = described_class.new
|
|
7
|
-
|
|
8
|
-
expect(config.extract_images).to be false
|
|
9
|
-
expect(config.passwords).to be_nil
|
|
10
|
-
expect(config.extract_metadata).to be true
|
|
11
|
-
expect(config.font_config).to be_nil
|
|
12
|
-
expect(config.hierarchy).to be_nil
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it 'creates config with custom values' do
|
|
16
|
-
config = described_class.new(
|
|
17
|
-
extract_images: true,
|
|
18
|
-
passwords: %w[secret backup],
|
|
19
|
-
extract_metadata: false
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
expect(config.extract_images).to be true
|
|
23
|
-
expect(config.passwords).to eq %w[secret backup]
|
|
24
|
-
expect(config.extract_metadata).to be false
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it 'accepts passwords as single string' do
|
|
28
|
-
config = described_class.new(passwords: 'secret')
|
|
29
|
-
|
|
30
|
-
expect(config.passwords).to eq ['secret']
|
|
31
|
-
expect(config.passwords).to be_a Array
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'accepts passwords as array of strings' do
|
|
35
|
-
config = described_class.new(passwords: %w[pwd1 pwd2 pwd3])
|
|
36
|
-
|
|
37
|
-
expect(config.passwords).to eq %w[pwd1 pwd2 pwd3]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it 'converts passwords to strings' do
|
|
41
|
-
config = described_class.new(passwords: [123, :symbol])
|
|
42
|
-
|
|
43
|
-
expect(config.passwords).to eq %w[123 symbol]
|
|
44
|
-
expect(config.passwords.all?(String)).to be true
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
it 'accepts font_config as instance' do
|
|
48
|
-
font_config = Kreuzberg::Config::FontConfig.new(enabled: true)
|
|
49
|
-
config = described_class.new(font_config: font_config)
|
|
50
|
-
|
|
51
|
-
expect(config.font_config).to be_a Kreuzberg::Config::FontConfig
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'converts font_config hash to instance' do
|
|
55
|
-
config = described_class.new(font_config: { enabled: false })
|
|
56
|
-
|
|
57
|
-
expect(config.font_config).to be_a Kreuzberg::Config::FontConfig
|
|
58
|
-
expect(config.font_config.enabled).to be false
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it 'accepts hierarchy as instance' do
|
|
62
|
-
hierarchy = Kreuzberg::Config::Hierarchy.new(enabled: true)
|
|
63
|
-
config = described_class.new(hierarchy: hierarchy)
|
|
64
|
-
|
|
65
|
-
expect(config.hierarchy).to be_a Kreuzberg::Config::Hierarchy
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
it 'converts hierarchy hash to instance' do
|
|
69
|
-
config = described_class.new(hierarchy: { enabled: true, k_clusters: 8 })
|
|
70
|
-
|
|
71
|
-
expect(config.hierarchy).to be_a Kreuzberg::Config::Hierarchy
|
|
72
|
-
expect(config.hierarchy.enabled).to be true
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
describe '#to_h' do
|
|
77
|
-
it 'serializes to hash with default values' do
|
|
78
|
-
config = described_class.new
|
|
79
|
-
hash = config.to_h
|
|
80
|
-
|
|
81
|
-
expect(hash).to be_a Hash
|
|
82
|
-
expect(hash[:extract_images]).to be false
|
|
83
|
-
expect(hash[:extract_metadata]).to be true
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
it 'includes passwords in hash when present' do
|
|
87
|
-
config = described_class.new(passwords: %w[secret backup])
|
|
88
|
-
hash = config.to_h
|
|
89
|
-
|
|
90
|
-
expect(hash[:passwords]).to eq %w[secret backup]
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
it 'includes font_config in hash when present' do
|
|
94
|
-
config = described_class.new(font_config: { enabled: true })
|
|
95
|
-
hash = config.to_h
|
|
96
|
-
|
|
97
|
-
expect(hash[:font_config]).to be_a Hash
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it 'includes hierarchy in hash when present' do
|
|
101
|
-
config = described_class.new(hierarchy: { enabled: true })
|
|
102
|
-
hash = config.to_h
|
|
103
|
-
|
|
104
|
-
expect(hash[:hierarchy]).to be_a Hash
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
it 'compacts nil values from hash' do
|
|
108
|
-
config = described_class.new(extract_images: true)
|
|
109
|
-
hash = config.to_h
|
|
110
|
-
|
|
111
|
-
expect(hash.key?(:passwords)).to be false
|
|
112
|
-
expect(hash.key?(:font_config)).to be false
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
describe 'validation' do
|
|
117
|
-
it 'rejects invalid font_config type' do
|
|
118
|
-
expect do
|
|
119
|
-
described_class.new(font_config: 'invalid')
|
|
120
|
-
end.to raise_error ArgumentError, /Expected.*FontConfig.*Hash.*nil/
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it 'rejects invalid hierarchy type' do
|
|
124
|
-
expect do
|
|
125
|
-
described_class.new(hierarchy: 'invalid')
|
|
126
|
-
end.to raise_error ArgumentError, /Expected.*Hierarchy.*Hash.*nil/
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
it 'accepts valid boolean extract_images' do
|
|
130
|
-
expect do
|
|
131
|
-
described_class.new(extract_images: true)
|
|
132
|
-
end.not_to raise_error
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
describe 'keyword arguments' do
|
|
137
|
-
it 'accepts all keyword arguments' do
|
|
138
|
-
config = described_class.new(
|
|
139
|
-
extract_images: true,
|
|
140
|
-
passwords: %w[pwd1 pwd2],
|
|
141
|
-
extract_metadata: false,
|
|
142
|
-
font_config: { enabled: true },
|
|
143
|
-
hierarchy: { k_clusters: 10 }
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
expect(config.extract_images).to be true
|
|
147
|
-
expect(config.passwords).to eq %w[pwd1 pwd2]
|
|
148
|
-
expect(config.extract_metadata).to be false
|
|
149
|
-
expect(config.font_config).to be_a Kreuzberg::Config::FontConfig
|
|
150
|
-
expect(config.hierarchy).to be_a Kreuzberg::Config::Hierarchy
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
describe 'equality' do
|
|
155
|
-
it 'compares configs by value' do
|
|
156
|
-
config1 = described_class.new(
|
|
157
|
-
extract_images: true,
|
|
158
|
-
extract_metadata: false
|
|
159
|
-
)
|
|
160
|
-
config2 = described_class.new(
|
|
161
|
-
extract_images: true,
|
|
162
|
-
extract_metadata: false
|
|
163
|
-
)
|
|
164
|
-
|
|
165
|
-
expect(config1.extract_images).to eq config2.extract_images
|
|
166
|
-
expect(config1.extract_metadata).to eq config2.extract_metadata
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
it 'detects differences in extract_images' do
|
|
170
|
-
config1 = described_class.new(extract_images: true)
|
|
171
|
-
config2 = described_class.new(extract_images: false)
|
|
172
|
-
|
|
173
|
-
expect(config1.extract_images).not_to eq config2.extract_images
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
it 'detects differences in passwords' do
|
|
177
|
-
config1 = described_class.new(passwords: %w[pwd1])
|
|
178
|
-
config2 = described_class.new(passwords: %w[pwd2])
|
|
179
|
-
|
|
180
|
-
expect(config1.passwords).not_to eq config2.passwords
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
describe 'nested config integration' do
|
|
185
|
-
it 'can be nested in Extraction config' do
|
|
186
|
-
pdf = described_class.new(extract_images: true)
|
|
187
|
-
extraction = Kreuzberg::Config::Extraction.new(pdf_options: pdf)
|
|
188
|
-
|
|
189
|
-
expect(extraction.pdf_options).to be_a described_class
|
|
190
|
-
expect(extraction.pdf_options.extract_images).to be true
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
it 'accepts hash in Extraction config' do
|
|
194
|
-
extraction = Kreuzberg::Config::Extraction.new(
|
|
195
|
-
pdf_options: { extract_images: true, passwords: ['secret'] }
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
expect(extraction.pdf_options).to be_a described_class
|
|
199
|
-
expect(extraction.pdf_options.extract_images).to be true
|
|
200
|
-
expect(extraction.pdf_options.passwords).to eq ['secret']
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
describe 'font_config assignment' do
|
|
205
|
-
it 'allows setting font_config after initialization' do
|
|
206
|
-
config = described_class.new
|
|
207
|
-
font_config = Kreuzberg::Config::FontConfig.new(enabled: true)
|
|
208
|
-
config.font_config = font_config
|
|
209
|
-
|
|
210
|
-
expect(config.font_config).to be_a Kreuzberg::Config::FontConfig
|
|
211
|
-
expect(config.font_config.enabled).to be true
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
it 'converts hash to font_config instance on assignment' do
|
|
215
|
-
config = described_class.new
|
|
216
|
-
config.font_config = { enabled: false }
|
|
217
|
-
|
|
218
|
-
expect(config.font_config).to be_a Kreuzberg::Config::FontConfig
|
|
219
|
-
expect(config.font_config.enabled).to be false
|
|
220
|
-
end
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
describe 'hierarchy assignment' do
|
|
224
|
-
it 'allows setting hierarchy after initialization' do
|
|
225
|
-
config = described_class.new
|
|
226
|
-
hierarchy = Kreuzberg::Config::Hierarchy.new(enabled: true)
|
|
227
|
-
config.hierarchy = hierarchy
|
|
228
|
-
|
|
229
|
-
expect(config.hierarchy).to be_a Kreuzberg::Config::Hierarchy
|
|
230
|
-
expect(config.hierarchy.enabled).to be true
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
it 'converts hash to hierarchy instance on assignment' do
|
|
234
|
-
config = described_class.new
|
|
235
|
-
config.hierarchy = { enabled: true, k_clusters: 6 }
|
|
236
|
-
|
|
237
|
-
expect(config.hierarchy).to be_a Kreuzberg::Config::Hierarchy
|
|
238
|
-
expect(config.hierarchy.enabled).to be true
|
|
239
|
-
end
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
describe 'boolean conversion' do
|
|
243
|
-
it 'converts truthy extract_images to true' do
|
|
244
|
-
config = described_class.new(extract_images: 1)
|
|
245
|
-
|
|
246
|
-
expect(config.extract_images).to be true
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
it 'converts false extract_images to false' do
|
|
250
|
-
config = described_class.new(extract_images: false)
|
|
251
|
-
|
|
252
|
-
expect(config.extract_images).to be false
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
it 'converts truthy extract_metadata to true' do
|
|
256
|
-
config = described_class.new(extract_metadata: 'yes')
|
|
257
|
-
|
|
258
|
-
expect(config.extract_metadata).to be true
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
it 'converts false extract_metadata to false' do
|
|
262
|
-
config = described_class.new(extract_metadata: false)
|
|
263
|
-
|
|
264
|
-
expect(config.extract_metadata).to be false
|
|
265
|
-
end
|
|
266
|
-
end
|
|
267
|
-
end
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Kreuzberg::Config::PostProcessor do
|
|
4
|
-
describe '#initialize' do
|
|
5
|
-
it 'creates config with default values' do
|
|
6
|
-
config = described_class.new
|
|
7
|
-
|
|
8
|
-
expect(config.enabled).to be true
|
|
9
|
-
expect(config.enabled_processors).to be_nil
|
|
10
|
-
expect(config.disabled_processors).to be_nil
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'creates config with enabled true' do
|
|
14
|
-
config = described_class.new(enabled: true)
|
|
15
|
-
|
|
16
|
-
expect(config.enabled).to be true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'creates config with enabled false' do
|
|
20
|
-
config = described_class.new(enabled: false)
|
|
21
|
-
|
|
22
|
-
expect(config.enabled).to be false
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it 'creates config with enabled_processors list' do
|
|
26
|
-
config = described_class.new(
|
|
27
|
-
enabled: true,
|
|
28
|
-
enabled_processors: %w[quality formatting]
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
expect(config.enabled_processors).to eq %w[quality formatting]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'creates config with disabled_processors list' do
|
|
35
|
-
config = described_class.new(
|
|
36
|
-
enabled: true,
|
|
37
|
-
disabled_processors: %w[token_reduction]
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
expect(config.disabled_processors).to eq %w[token_reduction]
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'converts enabled_processors to strings' do
|
|
44
|
-
config = described_class.new(enabled_processors: %i[quality formatting])
|
|
45
|
-
|
|
46
|
-
expect(config.enabled_processors).to eq %w[quality formatting]
|
|
47
|
-
expect(config.enabled_processors.all?(String)).to be true
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it 'converts disabled_processors to strings' do
|
|
51
|
-
config = described_class.new(disabled_processors: [:quality])
|
|
52
|
-
|
|
53
|
-
expect(config.disabled_processors).to eq %w[quality]
|
|
54
|
-
expect(config.disabled_processors.all?(String)).to be true
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it 'converts enabled to boolean' do
|
|
58
|
-
config = described_class.new(enabled: 1)
|
|
59
|
-
|
|
60
|
-
expect(config.enabled).to be true
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
describe '#to_h' do
|
|
65
|
-
it 'serializes to hash with default values' do
|
|
66
|
-
config = described_class.new
|
|
67
|
-
hash = config.to_h
|
|
68
|
-
|
|
69
|
-
expect(hash).to be_a Hash
|
|
70
|
-
expect(hash[:enabled]).to be true
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
it 'includes enabled_processors in hash when present' do
|
|
74
|
-
config = described_class.new(enabled_processors: %w[quality])
|
|
75
|
-
hash = config.to_h
|
|
76
|
-
|
|
77
|
-
expect(hash[:enabled_processors]).to eq %w[quality]
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
it 'includes disabled_processors in hash when present' do
|
|
81
|
-
config = described_class.new(disabled_processors: %w[token_reduction])
|
|
82
|
-
hash = config.to_h
|
|
83
|
-
|
|
84
|
-
expect(hash[:disabled_processors]).to eq %w[token_reduction]
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
it 'compacts nil values from hash' do
|
|
88
|
-
config = described_class.new(enabled: true)
|
|
89
|
-
hash = config.to_h
|
|
90
|
-
|
|
91
|
-
expect(hash.key?(:enabled_processors)).to be false
|
|
92
|
-
expect(hash.key?(:disabled_processors)).to be false
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
describe 'validation' do
|
|
97
|
-
it 'accepts enabled true' do
|
|
98
|
-
expect do
|
|
99
|
-
described_class.new(enabled: true)
|
|
100
|
-
end.not_to raise_error
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it 'accepts enabled false' do
|
|
104
|
-
expect do
|
|
105
|
-
described_class.new(enabled: false)
|
|
106
|
-
end.not_to raise_error
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it 'accepts enabled_processors list' do
|
|
110
|
-
expect do
|
|
111
|
-
described_class.new(enabled_processors: %w[quality formatting])
|
|
112
|
-
end.not_to raise_error
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
it 'accepts disabled_processors list' do
|
|
116
|
-
expect do
|
|
117
|
-
described_class.new(disabled_processors: %w[token_reduction])
|
|
118
|
-
end.not_to raise_error
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it 'accepts both enabled and disabled processors' do
|
|
122
|
-
expect do
|
|
123
|
-
described_class.new(
|
|
124
|
-
enabled_processors: %w[quality],
|
|
125
|
-
disabled_processors: %w[formatting]
|
|
126
|
-
)
|
|
127
|
-
end.not_to raise_error
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
describe 'keyword arguments' do
|
|
132
|
-
it 'accepts all keyword arguments' do
|
|
133
|
-
config = described_class.new(
|
|
134
|
-
enabled: true,
|
|
135
|
-
enabled_processors: %w[quality],
|
|
136
|
-
disabled_processors: %w[token_reduction]
|
|
137
|
-
)
|
|
138
|
-
|
|
139
|
-
expect(config.enabled).to be true
|
|
140
|
-
expect(config.enabled_processors).to eq %w[quality]
|
|
141
|
-
expect(config.disabled_processors).to eq %w[token_reduction]
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
describe 'equality' do
|
|
146
|
-
it 'compares configs by value' do
|
|
147
|
-
config1 = described_class.new(
|
|
148
|
-
enabled: true,
|
|
149
|
-
enabled_processors: %w[quality]
|
|
150
|
-
)
|
|
151
|
-
config2 = described_class.new(
|
|
152
|
-
enabled: true,
|
|
153
|
-
enabled_processors: %w[quality]
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
expect(config1.enabled).to eq config2.enabled
|
|
157
|
-
expect(config1.enabled_processors).to eq config2.enabled_processors
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it 'detects differences in enabled' do
|
|
161
|
-
config1 = described_class.new(enabled: true)
|
|
162
|
-
config2 = described_class.new(enabled: false)
|
|
163
|
-
|
|
164
|
-
expect(config1.enabled).not_to eq config2.enabled
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
it 'detects differences in enabled_processors' do
|
|
168
|
-
config1 = described_class.new(enabled_processors: %w[quality])
|
|
169
|
-
config2 = described_class.new(enabled_processors: %w[formatting])
|
|
170
|
-
|
|
171
|
-
expect(config1.enabled_processors).not_to eq config2.enabled_processors
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
describe 'nested config integration' do
|
|
176
|
-
it 'can be nested in Extraction config' do
|
|
177
|
-
postprocessor = described_class.new(
|
|
178
|
-
enabled: true,
|
|
179
|
-
enabled_processors: %w[quality]
|
|
180
|
-
)
|
|
181
|
-
extraction = Kreuzberg::Config::Extraction.new(postprocessor: postprocessor)
|
|
182
|
-
|
|
183
|
-
expect(extraction.postprocessor).to be_a described_class
|
|
184
|
-
expect(extraction.postprocessor.enabled).to be true
|
|
185
|
-
expect(extraction.postprocessor.enabled_processors).to eq %w[quality]
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
it 'accepts hash in Extraction config' do
|
|
189
|
-
extraction = Kreuzberg::Config::Extraction.new(
|
|
190
|
-
postprocessor: {
|
|
191
|
-
enabled: true,
|
|
192
|
-
enabled_processors: %w[quality formatting]
|
|
193
|
-
}
|
|
194
|
-
)
|
|
195
|
-
|
|
196
|
-
expect(extraction.postprocessor).to be_a described_class
|
|
197
|
-
expect(extraction.postprocessor.enabled).to be true
|
|
198
|
-
expect(extraction.postprocessor.enabled_processors).to eq %w[quality formatting]
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
describe 'symbol vs string key handling' do
|
|
203
|
-
it 'converts symbol enabled_processors to strings' do
|
|
204
|
-
config = described_class.new(enabled_processors: %i[quality formatting])
|
|
205
|
-
|
|
206
|
-
expect(config.enabled_processors).to eq %w[quality formatting]
|
|
207
|
-
expect(config.enabled_processors.all?(String)).to be true
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
it 'converts symbol disabled_processors to strings' do
|
|
211
|
-
config = described_class.new(disabled_processors: [:token_reduction])
|
|
212
|
-
|
|
213
|
-
expect(config.disabled_processors).to eq %w[token_reduction]
|
|
214
|
-
expect(config.disabled_processors.all?(String)).to be true
|
|
215
|
-
end
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
describe 'processor lists' do
|
|
219
|
-
it 'stores empty enabled_processors list' do
|
|
220
|
-
config = described_class.new(enabled_processors: [])
|
|
221
|
-
|
|
222
|
-
expect(config.enabled_processors).to eq []
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
it 'stores single enabled_processor' do
|
|
226
|
-
config = described_class.new(enabled_processors: %w[quality])
|
|
227
|
-
|
|
228
|
-
expect(config.enabled_processors).to eq %w[quality]
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
it 'stores multiple enabled_processors' do
|
|
232
|
-
processors = %w[quality formatting cleanup]
|
|
233
|
-
config = described_class.new(enabled_processors: processors)
|
|
234
|
-
|
|
235
|
-
expect(config.enabled_processors).to eq processors
|
|
236
|
-
end
|
|
237
|
-
|
|
238
|
-
it 'stores multiple disabled_processors' do
|
|
239
|
-
processors = %w[token_reduction duplicate_removal]
|
|
240
|
-
config = described_class.new(disabled_processors: processors)
|
|
241
|
-
|
|
242
|
-
expect(config.disabled_processors).to eq processors
|
|
243
|
-
end
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
describe 'boolean conversion' do
|
|
247
|
-
it 'converts truthy enabled to true' do
|
|
248
|
-
config = described_class.new(enabled: 1)
|
|
249
|
-
|
|
250
|
-
expect(config.enabled).to be true
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
it 'converts false enabled to false' do
|
|
254
|
-
config = described_class.new(enabled: false)
|
|
255
|
-
|
|
256
|
-
expect(config.enabled).to be false
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
it 'converts string true to true' do
|
|
260
|
-
config = described_class.new(enabled: 'yes')
|
|
261
|
-
|
|
262
|
-
expect(config.enabled).to be true
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
describe 'default behavior' do
|
|
267
|
-
it 'defaults to enabled' do
|
|
268
|
-
config = described_class.new
|
|
269
|
-
|
|
270
|
-
expect(config.enabled).to be true
|
|
271
|
-
end
|
|
272
|
-
|
|
273
|
-
it 'defaults to no specific processors' do
|
|
274
|
-
config = described_class.new
|
|
275
|
-
|
|
276
|
-
expect(config.enabled_processors).to be_nil
|
|
277
|
-
expect(config.disabled_processors).to be_nil
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
it 'allows disabling while specifying processors' do
|
|
281
|
-
config = described_class.new(
|
|
282
|
-
enabled: false,
|
|
283
|
-
enabled_processors: %w[quality]
|
|
284
|
-
)
|
|
285
|
-
|
|
286
|
-
expect(config.enabled).to be false
|
|
287
|
-
expect(config.enabled_processors).to eq %w[quality]
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
end
|