From 1c2158bd05d65d15db2ff266ff294a9a178f76c9 Mon Sep 17 00:00:00 2001 From: MaxSorokin Date: Fri, 16 Dec 2022 17:55:58 +0400 Subject: [PATCH 1/5] Tests for resaving docx to different document formats --- js/conversion/docx/docx_to_docm.js | 6 ++ js/conversion/docx/docx_to_docxf.js | 6 ++ js/conversion/docx/docx_to_dotm.js | 6 ++ js/conversion/docx/docx_to_dotx.js | 6 ++ js/conversion/docx/docx_to_epub.js | 6 ++ js/conversion/docx/docx_to_fb2.js | 6 ++ js/conversion/docx/docx_to_html.js | 6 ++ js/conversion/docx/docx_to_ott.js | 6 ++ js/conversion/docx/docx_to_pdfa.js | 6 ++ lib/doc_builder_testing/doc_builder_helper.rb | 8 +- spec/docx/conversion/docx_conversion_spec.rb | 88 +++++++++++++++++-- 11 files changed, 143 insertions(+), 7 deletions(-) create mode 100644 js/conversion/docx/docx_to_docm.js create mode 100644 js/conversion/docx/docx_to_docxf.js create mode 100644 js/conversion/docx/docx_to_dotm.js create mode 100644 js/conversion/docx/docx_to_dotx.js create mode 100644 js/conversion/docx/docx_to_epub.js create mode 100644 js/conversion/docx/docx_to_fb2.js create mode 100644 js/conversion/docx/docx_to_html.js create mode 100644 js/conversion/docx/docx_to_ott.js create mode 100644 js/conversion/docx/docx_to_pdfa.js diff --git a/js/conversion/docx/docx_to_docm.js b/js/conversion/docx/docx_to_docm.js new file mode 100644 index 000000000..46c383a20 --- /dev/null +++ b/js/conversion/docx/docx_to_docm.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("docm", "AddText.docm"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_docxf.js b/js/conversion/docx/docx_to_docxf.js new file mode 100644 index 000000000..47a1f27ca --- /dev/null +++ b/js/conversion/docx/docx_to_docxf.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("docxf", "AddText.docxf"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_dotm.js b/js/conversion/docx/docx_to_dotm.js new file mode 100644 index 000000000..114c33ba4 --- /dev/null +++ b/js/conversion/docx/docx_to_dotm.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("dotm", "AddText.dotm"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_dotx.js b/js/conversion/docx/docx_to_dotx.js new file mode 100644 index 000000000..8ec5229fb --- /dev/null +++ b/js/conversion/docx/docx_to_dotx.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("dotx", "AddText.dotx"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_epub.js b/js/conversion/docx/docx_to_epub.js new file mode 100644 index 000000000..9e667a2fb --- /dev/null +++ b/js/conversion/docx/docx_to_epub.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("epub", "AddText.epub"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_fb2.js b/js/conversion/docx/docx_to_fb2.js new file mode 100644 index 000000000..853abd567 --- /dev/null +++ b/js/conversion/docx/docx_to_fb2.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("fb2", "AddText.fb2"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_html.js b/js/conversion/docx/docx_to_html.js new file mode 100644 index 000000000..9980e6bb2 --- /dev/null +++ b/js/conversion/docx/docx_to_html.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("html", "AddText.html"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_ott.js b/js/conversion/docx/docx_to_ott.js new file mode 100644 index 000000000..4b29f20c0 --- /dev/null +++ b/js/conversion/docx/docx_to_ott.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("ott", "AddText.ott"); +builder.CloseFile(); diff --git a/js/conversion/docx/docx_to_pdfa.js b/js/conversion/docx/docx_to_pdfa.js new file mode 100644 index 000000000..b01ca63d0 --- /dev/null +++ b/js/conversion/docx/docx_to_pdfa.js @@ -0,0 +1,6 @@ +builder.CreateFile("docx"); +var oDocument = Api.GetDocument(); +var oParagraph = oDocument.GetElement(0); +oParagraph.AddText("This is just a sample text. Nothing special."); +builder.SaveFile("pdfa", "AddText.pdfa"); +builder.CloseFile(); diff --git a/lib/doc_builder_testing/doc_builder_helper.rb b/lib/doc_builder_testing/doc_builder_helper.rb index 38d1580fe..d06349223 100644 --- a/lib/doc_builder_testing/doc_builder_helper.rb +++ b/lib/doc_builder_testing/doc_builder_helper.rb @@ -2,6 +2,7 @@ # Helpers method for document builder module DocBuilderHelper + # Actual verison: 7.2.2 # [Hash] list of minimal file size by formats MINIMAL_FILESIZE = { '.odt' => 3656, '.rtf' => 976, @@ -9,7 +10,12 @@ module DocBuilderHelper '.txt' => 5, '.odp' => 3933, '.ods' => 3351, - '.csv' => 1 }.freeze + '.csv' => 1, + '.epub' => 1758, + '.fb2' => 498, + '.ott' => 272, + '.html' => 4234, + '.pdfa' => 4999 }.freeze # Parse file # @param path [String] file to path diff --git a/spec/docx/conversion/docx_conversion_spec.rb b/spec/docx/conversion/docx_conversion_spec.rb index 4b2bc075f..f1125d651 100644 --- a/spec/docx/conversion/docx_conversion_spec.rb +++ b/spec/docx/conversion/docx_conversion_spec.rb @@ -2,13 +2,78 @@ require 'spec_helper' describe 'Conversion tests from Docx' do - it 'Conversion | Docx to Docx', :critical do - docx = builder.build_and_parse('js/conversion/docx/docx_to_docx.js') - expect(docx).to be_with_data + it 'Conversion | docx to docx', critical: true do + parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_docx.js') + expect(parsed_output_file).to be_with_data end - it 'Conversion | Docx to Odt' do + it 'Conversion | docx to Docxf' do + parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_docxf.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_docxf.js')) + expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) + expect(parsed_output_file).to be_with_data + end + + it 'Conversion | docx to docm' do + parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_docm.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_docm.js')) + expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) + expect(parsed_output_file).to be_with_data + end + + it 'Conversion | docx to dotx' do + parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_dotx.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_dotx.js')) + expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) + expect(parsed_output_file).to be_with_data + end + + it 'Conversion | docx to dotm' do + parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_dotm.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_dotm.js')) + expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) + expect(parsed_output_file).to be_with_data + end + + it 'Conversion | docx to pdf', critical: true do + parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_pdf.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_pdf.js')) + expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) + expect(parsed_output_file.pages[0][:text]).to eq('This is just a sample text. Nothing special.') + end + + it 'Conversion | docx to epub', bug: true do + output_file = builder.build_file('js/conversion/docx/docx_to_epub.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_epub.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) + expect(builder).not_to be_file_empty(output_file) + end + + it 'Conversion | docx to fb2', bug: true do + output_file = builder.build_file('js/conversion/docx/docx_to_fb2.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_fb2.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) + expect(builder).not_to be_file_empty(output_file) + end + + it 'Conversion | docx to html', bug: true do + output_file = builder.build_file('js/conversion/docx/docx_to_html.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_html.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) + expect(builder).not_to be_file_empty(output_file) + end + + it 'Conversion | docx to ott', bug: true do + output_file = builder.build_file('js/conversion/docx/docx_to_ott.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_ott.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) + expect(builder).not_to be_file_empty(output_file) + end + + it 'Conversion | docx to odt' do output_file = builder.build_file('js/conversion/docx/docx_to_odt.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_odt.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end @@ -17,13 +82,24 @@ expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | Docx to Rtf', :critical do + it 'Conversion | docx to pdfa', bug: true do + output_file = builder.build_file('js/conversion/docx/docx_to_pdfa.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_pdfa.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) + expect(builder).not_to be_file_empty(output_file) + end + + it 'Conversion | docx to rtf', critical: true do output_file = builder.build_file('js/conversion/docx/docx_to_rtf.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_rtf.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | Docx to Txt', :critical do + it 'Conversion | Docx to Txt', critical: true do output_file = builder.build_file('js/conversion/docx/docx_to_txt.js') + ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_txt.js')) + expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end end From f5797e2f12ce024970bc00ff930f1089b4fdf743 Mon Sep 17 00:00:00 2001 From: MaxSorokin Date: Tue, 31 Jan 2023 19:48:55 +0400 Subject: [PATCH 2/5] [ref] min ref --- spec/docx/conversion/docx_conversion_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/docx/conversion/docx_conversion_spec.rb b/spec/docx/conversion/docx_conversion_spec.rb index f1125d651..ebe9c7142 100644 --- a/spec/docx/conversion/docx_conversion_spec.rb +++ b/spec/docx/conversion/docx_conversion_spec.rb @@ -1,13 +1,13 @@ # frozen_string_literal: true require 'spec_helper' -describe 'Conversion tests from Docx' do +describe 'Conversion tests from docx' do it 'Conversion | docx to docx', critical: true do parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_docx.js') expect(parsed_output_file).to be_with_data end - it 'Conversion | docx to Docxf' do + it 'Conversion | docx to docxf' do parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_docxf.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_docxf.js')) expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) From 9d450cd0c25bf8ac811dae144ba845e2090d3f4b Mon Sep 17 00:00:00 2001 From: MaxSorokin Date: Tue, 31 Jan 2023 20:04:37 +0400 Subject: [PATCH 3/5] Conversion test coverage matrix --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index d3504028f..16cad2803 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,13 @@ Framework for QA of `onlyoffice-documentbuilder` rake run_test_on_win ``` +## Conversion test coverage matrix + +| Input format | Output format | | | | | | | | | | | | | | +|--------------|---------------|-------|------|------|------|------|-----|------|-----|-----|-----|------|-----|-----| +| | docx | docxf | docm | dotm | dotx | epub | fb2 | html | odt | ott | pdf | pdfa | rtf | txt | +| docx | * | * | * | * | * | * | * | * | * | * | * | * | * | * | + ## Project Information [Official website](https://www.onlyoffice.com) From 09d20c26d5a21b67e5ab5fa05f4e62729c2c61d5 Mon Sep 17 00:00:00 2001 From: MaxSorokin Date: Wed, 9 Apr 2025 13:12:05 +0300 Subject: [PATCH 4/5] feature: exclude MD MD013 --- .markdownlint.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .markdownlint.json diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 000000000..3a882a7cc --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,6 @@ +{ + "MD013": false, // Disables the line length rule completely + // Or to customize it: + "MD013": { "line_length": 120 } // Changes max line length to 120 +} + From 1450a1dbb4548e1ab797dc8af29196417abea8bb Mon Sep 17 00:00:00 2001 From: MaxSorokin Date: Wed, 9 Apr 2025 13:21:42 +0300 Subject: [PATCH 5/5] fix: rubocop --- spec/docx/conversion/docx_conversion_spec.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/docx/conversion/docx_conversion_spec.rb b/spec/docx/conversion/docx_conversion_spec.rb index ebe9c7142..202c30965 100644 --- a/spec/docx/conversion/docx_conversion_spec.rb +++ b/spec/docx/conversion/docx_conversion_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' describe 'Conversion tests from docx' do - it 'Conversion | docx to docx', critical: true do + it 'Conversion | docx to docx' do parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_docx.js') expect(parsed_output_file).to be_with_data end @@ -35,35 +35,35 @@ expect(parsed_output_file).to be_with_data end - it 'Conversion | docx to pdf', critical: true do + it 'Conversion | docx to pdf' do parsed_output_file = builder.build_and_parse('js/conversion/docx/docx_to_pdf.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_pdf.js')) expect(File.extname(parsed_output_file.file_path).strip.downcase[1..]).to eq(ext) expect(parsed_output_file.pages[0][:text]).to eq('This is just a sample text. Nothing special.') end - it 'Conversion | docx to epub', bug: true do + it 'Conversion | docx to epub' do output_file = builder.build_file('js/conversion/docx/docx_to_epub.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_epub.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | docx to fb2', bug: true do + it 'Conversion | docx to fb2' do output_file = builder.build_file('js/conversion/docx/docx_to_fb2.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_fb2.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | docx to html', bug: true do + it 'Conversion | docx to html' do output_file = builder.build_file('js/conversion/docx/docx_to_html.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_html.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | docx to ott', bug: true do + it 'Conversion | docx to ott' do output_file = builder.build_file('js/conversion/docx/docx_to_ott.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_ott.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) @@ -77,26 +77,26 @@ expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | Docx to Pdf', :critical do + it 'Conversion | Docx to Pdf' do output_file = builder.build_file('js/conversion/docx/docx_to_pdf.js') expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | docx to pdfa', bug: true do + it 'Conversion | docx to pdfa' do output_file = builder.build_file('js/conversion/docx/docx_to_pdfa.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_pdfa.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | docx to rtf', critical: true do + it 'Conversion | docx to rtf' do output_file = builder.build_file('js/conversion/docx/docx_to_rtf.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_rtf.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext) expect(builder).not_to be_file_empty(output_file) end - it 'Conversion | Docx to Txt', critical: true do + it 'Conversion | Docx to Txt' do output_file = builder.build_file('js/conversion/docx/docx_to_txt.js') ext = builder.recognize_output_format(File.read('js/conversion/docx/docx_to_txt.js')) expect(File.extname(output_file).strip.downcase[1..]).to eq(ext)