defmastership 1.0.16 → 1.0.18
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 +1 -0
 - data/.gitlab-ci.yml +50 -7
 - data/.rubocop.yml +14 -6
 - data/Gemfile +51 -1
 - data/Rakefile +16 -47
 - data/bin/defmastership +12 -9
 - data/config/mutant.yml +23 -3
 - data/defmastership.gemspec +22 -27
 - data/features/definition_checksum.feature +31 -1
 - data/features/export.feature +43 -1
 - data/features/rename_included_files.feature +28 -0
 - data/lib/defmastership/batch_modifier.rb +17 -12
 - data/lib/defmastership/change_ref_modifier.rb +89 -5
 - data/lib/defmastership/comment_filter.rb +1 -1
 - data/lib/defmastership/constants.rb +5 -4
 - data/lib/defmastership/csv_formatter.rb +20 -16
 - data/lib/defmastership/csv_formatter_body.rb +18 -15
 - data/lib/defmastership/csv_formatter_header.rb +1 -1
 - data/lib/defmastership/definition.rb +58 -19
 - data/lib/defmastership/document.rb +109 -74
 - data/lib/defmastership/matching_line.rb +17 -0
 - data/lib/defmastership/modifier.rb +42 -0
 - data/lib/defmastership/modifier_factory.rb +12 -0
 - data/lib/defmastership/parsing_state.rb +15 -9
 - data/lib/defmastership/rename_included_files_modifier.rb +172 -5
 - data/lib/defmastership/set_join_hack.rb +11 -0
 - data/lib/defmastership/update_def_checksum_modifier.rb +8 -13
 - data/lib/defmastership/update_def_modifier.rb +49 -0
 - data/lib/defmastership/update_def_version_modifier.rb +56 -15
 - data/lib/defmastership/version.rb +1 -1
 - data/lib/defmastership.rb +7 -17
 - data/spec/spec_helper.rb +4 -2
 - data/spec/unit/{defmastership → def_mastership}/batch_modifier_spec.rb +42 -39
 - data/spec/unit/{defmastership/change_ref_line_modifier_spec.rb → def_mastership/change_ref_modifier_spec.rb} +44 -66
 - data/spec/unit/{defmastership → def_mastership}/csv_formatter_body_spec.rb +61 -32
 - data/spec/unit/{defmastership → def_mastership}/csv_formatter_header_spec.rb +2 -2
 - data/spec/unit/{defmastership → def_mastership}/csv_formatter_spec.rb +81 -86
 - data/spec/unit/{defmastership → def_mastership}/definition_parser_spec.rb +2 -2
 - data/spec/unit/{defmastership → def_mastership}/definition_spec.rb +17 -7
 - data/spec/unit/{defmastership → def_mastership}/document_spec.rb +108 -53
 - data/spec/unit/def_mastership/matching_line_spec.rb +37 -0
 - data/spec/unit/def_mastership/modifier_factory_spec.rb +37 -0
 - data/spec/unit/def_mastership/modifier_spec.rb +83 -0
 - data/spec/unit/{defmastership → def_mastership}/parsing_state_spec.rb +16 -16
 - data/spec/unit/{defmastership/rename_included_files_line_modifier_spec.rb → def_mastership/rename_included_files_modifier_spec.rb} +72 -36
 - data/spec/unit/{defmastership/comment_filter_spec.rb → def_mastership/string_spec.rb} +1 -1
 - data/spec/unit/def_mastership/update_def_checksum_modifier_spec.rb +107 -0
 - data/spec/unit/def_mastership/update_def_modifier_spec.rb +119 -0
 - data/spec/unit/def_mastership/update_def_version_modifier_spec.rb +159 -0
 - data/spec/unit/{defmastership_spec.rb → def_mastership_spec.rb} +1 -1
 - data/tasks/console.rake +8 -0
 - data/tasks/package.task +9 -0
 - data/tasks/smelling_code.rake +38 -0
 - data/tasks/test.rake +45 -0
 - metadata +37 -145
 - data/lib/defmastership/change_ref_line_modifier.rb +0 -82
 - data/lib/defmastership/line_modifier_base.rb +0 -29
 - data/lib/defmastership/modifier_base.rb +0 -29
 - data/lib/defmastership/rename_included_files_line_modifier.rb +0 -126
 - data/lib/defmastership/update_def_checksum_line_modifier.rb +0 -38
 - data/lib/defmastership/update_def_version_line_modifier.rb +0 -58
 - data/spec/unit/defmastership/change_ref_modifier_spec.rb +0 -76
 - data/spec/unit/defmastership/rename_included_files_modifier_spec.rb +0 -67
 - data/spec/unit/defmastership/update_def_checksum_line_modifier_spec.rb +0 -78
 - data/spec/unit/defmastership/update_def_checksum_modifier_spec.rb +0 -75
 - data/spec/unit/defmastership/update_def_version_line_modifier_spec.rb +0 -127
 - data/spec/unit/defmastership/update_def_version_modifier_spec.rb +0 -80
 
| 
         @@ -1,76 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2020 Jerome Arbez-Gindre
         
     | 
| 
       2 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require('defmastership')
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            RSpec.describe(DefMastership::ChangeRefModifier) do
         
     | 
| 
       7 
     | 
    
         
            -
              subject(:modifier) do
         
     | 
| 
       8 
     | 
    
         
            -
                described_class.new(
         
     | 
| 
       9 
     | 
    
         
            -
                  'fake config'
         
     | 
| 
       10 
     | 
    
         
            -
                )
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              let(:adoc_texts) do
         
     | 
| 
       14 
     | 
    
         
            -
                {
         
     | 
| 
       15 
     | 
    
         
            -
                  'file1.adoc' => "file1 line1\nfile1 line2",
         
     | 
| 
       16 
     | 
    
         
            -
                  'file2.adoc' => "file2 line1\nfile2 line2"
         
     | 
| 
       17 
     | 
    
         
            -
                }
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       21 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       22 
     | 
    
         
            -
                it { is_expected.to(have_attributes(config: 'fake config')) }
         
     | 
| 
       23 
     | 
    
         
            -
                it { is_expected.to(have_attributes(changes: [])) }
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              describe '#do_modifications' do
         
     | 
| 
       27 
     | 
    
         
            -
                let(:line_modifier) { instance_double(DefMastership::ChangeRefLineModifier, 'lineModifier') }
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                before do
         
     | 
| 
       30 
     | 
    
         
            -
                  allow(DefMastership::ChangeRefLineModifier).to(
         
     | 
| 
       31 
     | 
    
         
            -
                    receive(:from_config).with('fake config').and_return(line_modifier)
         
     | 
| 
       32 
     | 
    
         
            -
                  )
         
     | 
| 
       33 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_refdef).with("file1 line1\n").and_return("new file1 line1\n"))
         
     | 
| 
       34 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_refdef).with('file1 line2').and_return('new file1 line2'))
         
     | 
| 
       35 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_refdef).with("file2 line1\n").and_return("new file2 line1\n"))
         
     | 
| 
       36 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_refdef).with('file2 line2').and_return('new file2 line2'))
         
     | 
| 
       37 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_irefs).with("new file1 line1\n").and_return("new2 file1 line1\n"))
         
     | 
| 
       38 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_irefs).with('new file1 line2').and_return('new2 file1 line2'))
         
     | 
| 
       39 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_irefs).with("new file2 line1\n").and_return("new2 file2 line1\n"))
         
     | 
| 
       40 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace_irefs).with('new file2 line2').and_return('new2 file2 line2'))
         
     | 
| 
       41 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:config).and_return('new fake config'))
         
     | 
| 
       42 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:changes).and_return([%w[from1 to1], %w[from2 to2]]))
         
     | 
| 
       43 
     | 
    
         
            -
                end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                context 'when detailed expectations' do
         
     | 
| 
       46 
     | 
    
         
            -
                  before { modifier.do_modifications(adoc_texts) }
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  it do
         
     | 
| 
       49 
     | 
    
         
            -
                    expect(DefMastership::ChangeRefLineModifier).to(
         
     | 
| 
       50 
     | 
    
         
            -
                      have_received(:from_config).with('fake config')
         
     | 
| 
       51 
     | 
    
         
            -
                    )
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_refdef).with("file1 line1\n")) }
         
     | 
| 
       55 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_refdef).with('file1 line2')) }
         
     | 
| 
       56 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_refdef).with("file2 line1\n")) }
         
     | 
| 
       57 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_refdef).with('file2 line2')) }
         
     | 
| 
       58 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_irefs).with("new file1 line1\n")) }
         
     | 
| 
       59 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_irefs).with('new file1 line2')) }
         
     | 
| 
       60 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_irefs).with("new file2 line1\n")) }
         
     | 
| 
       61 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace_irefs).with('new file2 line2')) }
         
     | 
| 
       62 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:config)) }
         
     | 
| 
       63 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:changes)) }
         
     | 
| 
       64 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(config: 'new fake config')) }
         
     | 
| 
       65 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(changes: [%w[from1 to1], %w[from2 to2]])) }
         
     | 
| 
       66 
     | 
    
         
            -
                end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                it do
         
     | 
| 
       69 
     | 
    
         
            -
                  expected_adoc = {
         
     | 
| 
       70 
     | 
    
         
            -
                    'file1.adoc' => "new2 file1 line1\nnew2 file1 line2",
         
     | 
| 
       71 
     | 
    
         
            -
                    'file2.adoc' => "new2 file2 line1\nnew2 file2 line2"
         
     | 
| 
       72 
     | 
    
         
            -
                  }
         
     | 
| 
       73 
     | 
    
         
            -
                  expect(modifier.do_modifications(adoc_texts)).to(eq(expected_adoc))
         
     | 
| 
       74 
     | 
    
         
            -
                end
         
     | 
| 
       75 
     | 
    
         
            -
              end
         
     | 
| 
       76 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,67 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2021 Jerome Arbez-Gindre
         
     | 
| 
       2 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require('defmastership')
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            RSpec.describe(DefMastership::RenameIncludedFilesModifier) do
         
     | 
| 
       7 
     | 
    
         
            -
              subject(:modifier) do
         
     | 
| 
       8 
     | 
    
         
            -
                described_class.new(
         
     | 
| 
       9 
     | 
    
         
            -
                  'fake config'
         
     | 
| 
       10 
     | 
    
         
            -
                )
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              let(:adoc_texts) do
         
     | 
| 
       14 
     | 
    
         
            -
                {
         
     | 
| 
       15 
     | 
    
         
            -
                  'file1.adoc' => "file1 line1\nfile1 line2",
         
     | 
| 
       16 
     | 
    
         
            -
                  'file2.adoc' => "file2 line1\nfile2 line2"
         
     | 
| 
       17 
     | 
    
         
            -
                }
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       21 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       22 
     | 
    
         
            -
                it { is_expected.to(have_attributes(config: 'fake config')) }
         
     | 
| 
       23 
     | 
    
         
            -
                it { is_expected.to(have_attributes(changes: [])) }
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              describe '#do_modifications' do
         
     | 
| 
       27 
     | 
    
         
            -
                let(:line_modifier) { instance_double(DefMastership::RenameIncludedFilesLineModifier, 'lineModifier') }
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                before do
         
     | 
| 
       30 
     | 
    
         
            -
                  allow(DefMastership::RenameIncludedFilesLineModifier).to(
         
     | 
| 
       31 
     | 
    
         
            -
                    receive(:from_config).with('fake config').and_return(line_modifier)
         
     | 
| 
       32 
     | 
    
         
            -
                  )
         
     | 
| 
       33 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with("file1 line1\n").and_return("new file1 line1\n"))
         
     | 
| 
       34 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with('file1 line2').and_return('new file1 line2'))
         
     | 
| 
       35 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with("file2 line1\n").and_return("new file2 line1\n"))
         
     | 
| 
       36 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with('file2 line2').and_return('new file2 line2'))
         
     | 
| 
       37 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:changes).and_return([%w[from1 to1], %w[from2 to2]]))
         
     | 
| 
       38 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:config).and_return('fake config'))
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                context 'when detailed expectations' do
         
     | 
| 
       42 
     | 
    
         
            -
                  before { modifier.do_modifications(adoc_texts) }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  it do
         
     | 
| 
       45 
     | 
    
         
            -
                    expect(DefMastership::RenameIncludedFilesLineModifier).to(
         
     | 
| 
       46 
     | 
    
         
            -
                      have_received(:from_config).with('fake config')
         
     | 
| 
       47 
     | 
    
         
            -
                    )
         
     | 
| 
       48 
     | 
    
         
            -
                  end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with("file1 line1\n")) }
         
     | 
| 
       51 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with('file1 line2')) }
         
     | 
| 
       52 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with("file2 line1\n")) }
         
     | 
| 
       53 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with('file2 line2')) }
         
     | 
| 
       54 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:changes)) }
         
     | 
| 
       55 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(config: 'fake config')) }
         
     | 
| 
       56 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(changes: [%w[from1 to1], %w[from2 to2]])) }
         
     | 
| 
       57 
     | 
    
         
            -
                end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                it do
         
     | 
| 
       60 
     | 
    
         
            -
                  expected_adoc = {
         
     | 
| 
       61 
     | 
    
         
            -
                    'file1.adoc' => "new file1 line1\nnew file1 line2",
         
     | 
| 
       62 
     | 
    
         
            -
                    'file2.adoc' => "new file2 line1\nnew file2 line2"
         
     | 
| 
       63 
     | 
    
         
            -
                  }
         
     | 
| 
       64 
     | 
    
         
            -
                  expect(modifier.do_modifications(adoc_texts)).to(eq(expected_adoc))
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
              end
         
     | 
| 
       67 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,78 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2020 Jerome Arbez-Gindre
         
     | 
| 
       2 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require('defmastership')
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            RSpec.describe(DefMastership::UpdateDefChecksumLineModifier) do
         
     | 
| 
       7 
     | 
    
         
            -
              subject(:linemodifier) { described_class.new }
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       10 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       11 
     | 
    
         
            -
                it { is_expected.to(have_attributes(def_type: '')) }
         
     | 
| 
       12 
     | 
    
         
            -
                it { is_expected.to(have_attributes(changes:  [])) }
         
     | 
| 
       13 
     | 
    
         
            -
                it { expect { linemodifier.user_defined_attribute }.to(raise_error(NoMethodError)) }
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              describe '.from_config' do
         
     | 
| 
       17 
     | 
    
         
            -
                subject(:linemodifier) do
         
     | 
| 
       18 
     | 
    
         
            -
                  described_class.from_config(
         
     | 
| 
       19 
     | 
    
         
            -
                    def_type: 'requirement'
         
     | 
| 
       20 
     | 
    
         
            -
                  )
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       24 
     | 
    
         
            -
                it { is_expected.to(have_attributes(def_type: 'requirement')) }
         
     | 
| 
       25 
     | 
    
         
            -
                it { is_expected.to(have_attributes(document: nil)) }
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              describe '#replace' do
         
     | 
| 
       29 
     | 
    
         
            -
                subject(:linemodifier) do
         
     | 
| 
       30 
     | 
    
         
            -
                  described_class.from_config(
         
     | 
| 
       31 
     | 
    
         
            -
                    def_type: 'requirement'
         
     | 
| 
       32 
     | 
    
         
            -
                  )
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                let(:definition)  { instance_double(DefMastership::Definition, 'definition') }
         
     | 
| 
       36 
     | 
    
         
            -
                let(:document)    { instance_double(DefMastership::Document, 'document')     }
         
     | 
| 
       37 
     | 
    
         
            -
                let(:definitions) { { 'REFERENCE' => definition }                            }
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                before do
         
     | 
| 
       40 
     | 
    
         
            -
                  linemodifier.document = document
         
     | 
| 
       41 
     | 
    
         
            -
                  allow(File).to(receive(:rename))
         
     | 
| 
       42 
     | 
    
         
            -
                end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                context 'when definition has not the good type' do
         
     | 
| 
       45 
     | 
    
         
            -
                  it do
         
     | 
| 
       46 
     | 
    
         
            -
                    expect(linemodifier.replace('[define,req,REFERENCE]'))
         
     | 
| 
       47 
     | 
    
         
            -
                      .to(eq('[define,req,REFERENCE]'))
         
     | 
| 
       48 
     | 
    
         
            -
                  end
         
     | 
| 
       49 
     | 
    
         
            -
                end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                context 'when definition has the good type' do
         
     | 
| 
       52 
     | 
    
         
            -
                  before do
         
     | 
| 
       53 
     | 
    
         
            -
                    allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
         
     | 
| 
       54 
     | 
    
         
            -
                    allow(definition).to(receive(:sha256).and_return('~abcd1234'))
         
     | 
| 
       55 
     | 
    
         
            -
                  end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                  it do
         
     | 
| 
       58 
     | 
    
         
            -
                    expect(linemodifier.replace('[define,requirement,REFERENCE]'))
         
     | 
| 
       59 
     | 
    
         
            -
                      .to(eq('[define,requirement,REFERENCE(~abcd1234)]'))
         
     | 
| 
       60 
     | 
    
         
            -
                  end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
                  it do
         
     | 
| 
       63 
     | 
    
         
            -
                    expect(linemodifier.replace('[define,requirement,REFERENCE(~bad)]'))
         
     | 
| 
       64 
     | 
    
         
            -
                      .to(eq('[define,requirement,REFERENCE(~abcd1234)]'))
         
     | 
| 
       65 
     | 
    
         
            -
                  end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                  it do
         
     | 
| 
       68 
     | 
    
         
            -
                    expect(linemodifier.replace('[define,requirement,REFERENCE(toto~bad)]'))
         
     | 
| 
       69 
     | 
    
         
            -
                      .to(eq('[define,requirement,REFERENCE(toto~abcd1234)]'))
         
     | 
| 
       70 
     | 
    
         
            -
                  end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                  it do
         
     | 
| 
       73 
     | 
    
         
            -
                    expect(linemodifier.replace('[define,requirement,REFERENCE(toto)]'))
         
     | 
| 
       74 
     | 
    
         
            -
                      .to(eq('[define,requirement,REFERENCE(toto~abcd1234)]'))
         
     | 
| 
       75 
     | 
    
         
            -
                  end
         
     | 
| 
       76 
     | 
    
         
            -
                end
         
     | 
| 
       77 
     | 
    
         
            -
              end
         
     | 
| 
       78 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,75 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2020 Jerome Arbez-Gindre
         
     | 
| 
       2 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require('defmastership')
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            RSpec.describe(DefMastership::UpdateDefChecksumModifier) do
         
     | 
| 
       7 
     | 
    
         
            -
              subject(:modifier) do
         
     | 
| 
       8 
     | 
    
         
            -
                described_class.new(
         
     | 
| 
       9 
     | 
    
         
            -
                  'fake config'
         
     | 
| 
       10 
     | 
    
         
            -
                )
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              let(:adoc_texts) do
         
     | 
| 
       14 
     | 
    
         
            -
                {
         
     | 
| 
       15 
     | 
    
         
            -
                  'file1.adoc' => "file1 line1\nfile1 line2",
         
     | 
| 
       16 
     | 
    
         
            -
                  'file2.adoc' => "file2 line1\nfile2 line2"
         
     | 
| 
       17 
     | 
    
         
            -
                }
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       21 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       22 
     | 
    
         
            -
                it { is_expected.to(have_attributes(config: 'fake config')) }
         
     | 
| 
       23 
     | 
    
         
            -
                it { is_expected.to(have_attributes(changes: [])) }
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              describe '#do_modifications' do
         
     | 
| 
       27 
     | 
    
         
            -
                let(:line_modifier) { instance_double(DefMastership::UpdateDefChecksumLineModifier, 'lineModifier') }
         
     | 
| 
       28 
     | 
    
         
            -
                let(:document)      { instance_double(DefMastership::Document, 'document')                          }
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                before do
         
     | 
| 
       31 
     | 
    
         
            -
                  allow(DefMastership::UpdateDefChecksumLineModifier).to(
         
     | 
| 
       32 
     | 
    
         
            -
                    receive(:from_config).with('fake config').and_return(line_modifier)
         
     | 
| 
       33 
     | 
    
         
            -
                  )
         
     | 
| 
       34 
     | 
    
         
            -
                  allow(DefMastership::Document).to(receive(:new).and_return(document))
         
     | 
| 
       35 
     | 
    
         
            -
                  allow(document).to(receive(:parse_file_with_preprocessor))
         
     | 
| 
       36 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:'document=').with(document))
         
     | 
| 
       37 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with("file1 line1\n").and_return("new file1 line1\n"))
         
     | 
| 
       38 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with('file1 line2').and_return('new file1 line2'))
         
     | 
| 
       39 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with("file2 line1\n").and_return("new file2 line1\n"))
         
     | 
| 
       40 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with('file2 line2').and_return('new file2 line2'))
         
     | 
| 
       41 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:config).and_return('new fake config'))
         
     | 
| 
       42 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:changes).and_return([%w[from1 to1], %w[from2 to2]]))
         
     | 
| 
       43 
     | 
    
         
            -
                end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
                context 'when detailed expectations' do
         
     | 
| 
       46 
     | 
    
         
            -
                  before { modifier.do_modifications(adoc_texts) }
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  it do
         
     | 
| 
       49 
     | 
    
         
            -
                    expect(DefMastership::UpdateDefChecksumLineModifier).to(
         
     | 
| 
       50 
     | 
    
         
            -
                      have_received(:from_config).with('fake config')
         
     | 
| 
       51 
     | 
    
         
            -
                    )
         
     | 
| 
       52 
     | 
    
         
            -
                  end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                  it { expect(document).to(have_received(:parse_file_with_preprocessor).with('file1.adoc')) }
         
     | 
| 
       55 
     | 
    
         
            -
                  it { expect(document).to(have_received(:parse_file_with_preprocessor).with('file2.adoc')) }
         
     | 
| 
       56 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:'document=').with(document)) }
         
     | 
| 
       57 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with("file1 line1\n")) }
         
     | 
| 
       58 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with('file1 line2')) }
         
     | 
| 
       59 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with("file2 line1\n")) }
         
     | 
| 
       60 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with('file2 line2')) }
         
     | 
| 
       61 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:config)) }
         
     | 
| 
       62 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:changes)) }
         
     | 
| 
       63 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(config: 'new fake config')) }
         
     | 
| 
       64 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(changes: [%w[from1 to1], %w[from2 to2]])) }
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                it do
         
     | 
| 
       68 
     | 
    
         
            -
                  expected_adoc = {
         
     | 
| 
       69 
     | 
    
         
            -
                    'file1.adoc' => "new file1 line1\nnew file1 line2",
         
     | 
| 
       70 
     | 
    
         
            -
                    'file2.adoc' => "new file2 line1\nnew file2 line2"
         
     | 
| 
       71 
     | 
    
         
            -
                  }
         
     | 
| 
       72 
     | 
    
         
            -
                  expect(modifier.do_modifications(adoc_texts)).to(eq(expected_adoc))
         
     | 
| 
       73 
     | 
    
         
            -
                end
         
     | 
| 
       74 
     | 
    
         
            -
              end
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,127 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2020 Jerome Arbez-Gindre
         
     | 
| 
       2 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require('defmastership')
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            RSpec.describe(DefMastership::UpdateDefVersionLineModifier) do
         
     | 
| 
       7 
     | 
    
         
            -
              subject(:linemodifier) { described_class.new }
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       10 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       11 
     | 
    
         
            -
                it { is_expected.to(have_attributes(def_type: '')) }
         
     | 
| 
       12 
     | 
    
         
            -
                it { is_expected.to(have_attributes(changes:  [])) }
         
     | 
| 
       13 
     | 
    
         
            -
                it { expect { linemodifier.user_defined_attribute }.to(raise_error(NoMethodError)) }
         
     | 
| 
       14 
     | 
    
         
            -
              end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              describe '.from_config' do
         
     | 
| 
       17 
     | 
    
         
            -
                subject(:linemodifier) do
         
     | 
| 
       18 
     | 
    
         
            -
                  described_class.from_config(
         
     | 
| 
       19 
     | 
    
         
            -
                    def_type: 'requirement',
         
     | 
| 
       20 
     | 
    
         
            -
                    first_version: 'a'
         
     | 
| 
       21 
     | 
    
         
            -
                  )
         
     | 
| 
       22 
     | 
    
         
            -
                end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       25 
     | 
    
         
            -
                it { is_expected.to(have_attributes(def_type: 'requirement')) }
         
     | 
| 
       26 
     | 
    
         
            -
                it { is_expected.to(have_attributes(first_version: 'a')) }
         
     | 
| 
       27 
     | 
    
         
            -
                it { is_expected.to(have_attributes(document: nil)) }
         
     | 
| 
       28 
     | 
    
         
            -
                it { is_expected.to(have_attributes(ref_document: nil)) }
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
              describe '#replace' do
         
     | 
| 
       32 
     | 
    
         
            -
                subject(:linemodifier) do
         
     | 
| 
       33 
     | 
    
         
            -
                  described_class.from_config(
         
     | 
| 
       34 
     | 
    
         
            -
                    def_type: 'requirement',
         
     | 
| 
       35 
     | 
    
         
            -
                    first_version: 'a'
         
     | 
| 
       36 
     | 
    
         
            -
                  )
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                let(:document)       { instance_double(DefMastership::Document, 'document')          }
         
     | 
| 
       40 
     | 
    
         
            -
                let(:ref_document)   { instance_double(DefMastership::Document, 'ref_document')      }
         
     | 
| 
       41 
     | 
    
         
            -
                let(:definition)     { instance_double(DefMastership::Definition, 'definition')      }
         
     | 
| 
       42 
     | 
    
         
            -
                let(:ref_definition) { instance_double(DefMastership::Definition, 'ref_definitions') }
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                before do
         
     | 
| 
       45 
     | 
    
         
            -
                  linemodifier.document = document
         
     | 
| 
       46 
     | 
    
         
            -
                  linemodifier.ref_document = ref_document
         
     | 
| 
       47 
     | 
    
         
            -
                  allow(File).to(receive(:rename))
         
     | 
| 
       48 
     | 
    
         
            -
                end
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                context 'when definition has not the good type' do
         
     | 
| 
       51 
     | 
    
         
            -
                  it do
         
     | 
| 
       52 
     | 
    
         
            -
                    expect(linemodifier.replace('[define,req,REFERENCE]'))
         
     | 
| 
       53 
     | 
    
         
            -
                      .to(eq('[define,req,REFERENCE]'))
         
     | 
| 
       54 
     | 
    
         
            -
                  end
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                context 'when definition has the good type' do
         
     | 
| 
       58 
     | 
    
         
            -
                  before do
         
     | 
| 
       59 
     | 
    
         
            -
                    allow(document).to(receive(:ref_to_def).with('REFERENCE').and_return(definition))
         
     | 
| 
       60 
     | 
    
         
            -
                    allow(definition).to(receive(:sha256).and_return('~abcd1234'))
         
     | 
| 
       61 
     | 
    
         
            -
                  end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                  context 'when definition has NOT changed' do
         
     | 
| 
       64 
     | 
    
         
            -
                    before do
         
     | 
| 
       65 
     | 
    
         
            -
                      allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
         
     | 
| 
       66 
     | 
    
         
            -
                      allow(ref_definition).to(receive(:sha256).and_return('~abcd1234'))
         
     | 
| 
       67 
     | 
    
         
            -
                    end
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                    it do
         
     | 
| 
       70 
     | 
    
         
            -
                      allow(ref_definition).to(receive(:explicit_version).and_return(nil))
         
     | 
| 
       71 
     | 
    
         
            -
                      expect(linemodifier.replace('[define,requirement,REFERENCE]'))
         
     | 
| 
       72 
     | 
    
         
            -
                        .to(eq('[define,requirement,REFERENCE]'))
         
     | 
| 
       73 
     | 
    
         
            -
                    end
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                    it do
         
     | 
| 
       76 
     | 
    
         
            -
                      allow(ref_definition).to(receive(:explicit_version).and_return('c'))
         
     | 
| 
       77 
     | 
    
         
            -
                      expect(linemodifier.replace('[define,requirement,REFERENCE]'))
         
     | 
| 
       78 
     | 
    
         
            -
                        .to(eq('[define,requirement,REFERENCE(c)]'))
         
     | 
| 
       79 
     | 
    
         
            -
                    end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                    it do
         
     | 
| 
       82 
     | 
    
         
            -
                      allow(ref_definition).to(receive(:explicit_version).and_return('c'))
         
     | 
| 
       83 
     | 
    
         
            -
                      expect(linemodifier.replace('[define,requirement,REFERENCE(tyty~1234)]'))
         
     | 
| 
       84 
     | 
    
         
            -
                        .to(eq('[define,requirement,REFERENCE(c~1234)]'))
         
     | 
| 
       85 
     | 
    
         
            -
                    end
         
     | 
| 
       86 
     | 
    
         
            -
                  end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                  context 'when definition has changed' do
         
     | 
| 
       89 
     | 
    
         
            -
                    before do
         
     | 
| 
       90 
     | 
    
         
            -
                      allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(ref_definition))
         
     | 
| 
       91 
     | 
    
         
            -
                      allow(ref_definition).to(receive(:sha256).and_return('~4321aaaa'))
         
     | 
| 
       92 
     | 
    
         
            -
                    end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
                    [
         
     | 
| 
       95 
     | 
    
         
            -
                      [nil,    '',            '(a)'],
         
     | 
| 
       96 
     | 
    
         
            -
                      ['c',    '',            '(d)'],
         
     | 
| 
       97 
     | 
    
         
            -
                      ['c',    '(tyty~1234)', '(d~1234)'],
         
     | 
| 
       98 
     | 
    
         
            -
                      ['2',    '',            '(3)'],
         
     | 
| 
       99 
     | 
    
         
            -
                      ['1222', '',            '(1223)'],
         
     | 
| 
       100 
     | 
    
         
            -
                      ['abb',  '',            '(abc)']
         
     | 
| 
       101 
     | 
    
         
            -
                    ].each do |ref, from, to|
         
     | 
| 
       102 
     | 
    
         
            -
                      it do
         
     | 
| 
       103 
     | 
    
         
            -
                        allow(ref_definition).to(receive(:explicit_version).and_return(ref))
         
     | 
| 
       104 
     | 
    
         
            -
                        expect(linemodifier.replace("[define,requirement,REFERENCE#{from}]"))
         
     | 
| 
       105 
     | 
    
         
            -
                          .to(eq("[define,requirement,REFERENCE#{to}]"))
         
     | 
| 
       106 
     | 
    
         
            -
                      end
         
     | 
| 
       107 
     | 
    
         
            -
                    end
         
     | 
| 
       108 
     | 
    
         
            -
                  end
         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
                  context 'when definition is new' do
         
     | 
| 
       111 
     | 
    
         
            -
                    before do
         
     | 
| 
       112 
     | 
    
         
            -
                      allow(ref_document).to(receive(:ref_to_def).with('REFERENCE').and_return(nil))
         
     | 
| 
       113 
     | 
    
         
            -
                    end
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
                    it do
         
     | 
| 
       116 
     | 
    
         
            -
                      expect(linemodifier.replace('[define,requirement,REFERENCE(whatever)]'))
         
     | 
| 
       117 
     | 
    
         
            -
                        .to(eq('[define,requirement,REFERENCE]'))
         
     | 
| 
       118 
     | 
    
         
            -
                    end
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
                    it do
         
     | 
| 
       121 
     | 
    
         
            -
                      expect(linemodifier.replace('[define,requirement,REFERENCE(~1234)]'))
         
     | 
| 
       122 
     | 
    
         
            -
                        .to(eq('[define,requirement,REFERENCE(~1234)]'))
         
     | 
| 
       123 
     | 
    
         
            -
                    end
         
     | 
| 
       124 
     | 
    
         
            -
                  end
         
     | 
| 
       125 
     | 
    
         
            -
                end
         
     | 
| 
       126 
     | 
    
         
            -
              end
         
     | 
| 
       127 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,80 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Copyright (c) 2020 Jerome Arbez-Gindre
         
     | 
| 
       2 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require('defmastership')
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            RSpec.describe(DefMastership::UpdateDefVersionModifier) do
         
     | 
| 
       7 
     | 
    
         
            -
              subject(:modifier) do
         
     | 
| 
       8 
     | 
    
         
            -
                described_class.new(
         
     | 
| 
       9 
     | 
    
         
            -
                  ref_document: 'ref.adoc'
         
     | 
| 
       10 
     | 
    
         
            -
                )
         
     | 
| 
       11 
     | 
    
         
            -
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              let(:adoc_texts) do
         
     | 
| 
       14 
     | 
    
         
            -
                {
         
     | 
| 
       15 
     | 
    
         
            -
                  'file1.adoc' => "file1 line1\nfile1 line2",
         
     | 
| 
       16 
     | 
    
         
            -
                  'file2.adoc' => "file2 line1\nfile2 line2"
         
     | 
| 
       17 
     | 
    
         
            -
                }
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              describe '.new' do
         
     | 
| 
       21 
     | 
    
         
            -
                it { is_expected.not_to(be(nil)) }
         
     | 
| 
       22 
     | 
    
         
            -
                it { is_expected.to(have_attributes(config: { ref_document: 'ref.adoc' })) }
         
     | 
| 
       23 
     | 
    
         
            -
                it { is_expected.to(have_attributes(changes: [])) }
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              describe '#do_modifications' do
         
     | 
| 
       27 
     | 
    
         
            -
                let(:line_modifier) { instance_double(DefMastership::UpdateDefVersionLineModifier, 'lineModifier') }
         
     | 
| 
       28 
     | 
    
         
            -
                let(:document)      { instance_double(DefMastership::Document, 'document')                         }
         
     | 
| 
       29 
     | 
    
         
            -
                let(:ref_document)  { instance_double(DefMastership::Document, 'ref_document')                     }
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                before do
         
     | 
| 
       32 
     | 
    
         
            -
                  allow(DefMastership::UpdateDefVersionLineModifier).to(
         
     | 
| 
       33 
     | 
    
         
            -
                    receive(:from_config).with(ref_document: 'ref.adoc').and_return(line_modifier)
         
     | 
| 
       34 
     | 
    
         
            -
                  )
         
     | 
| 
       35 
     | 
    
         
            -
                  allow(DefMastership::Document).to(receive(:new).and_return(document, ref_document))
         
     | 
| 
       36 
     | 
    
         
            -
                  allow(document).to(receive(:parse_file_with_preprocessor))
         
     | 
| 
       37 
     | 
    
         
            -
                  allow(ref_document).to(receive(:parse_file_with_preprocessor))
         
     | 
| 
       38 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:'document=').with(document))
         
     | 
| 
       39 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:'ref_document=').with(ref_document))
         
     | 
| 
       40 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with("file1 line1\n").and_return("new file1 line1\n"))
         
     | 
| 
       41 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with('file1 line2').and_return('new file1 line2'))
         
     | 
| 
       42 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with("file2 line1\n").and_return("new file2 line1\n"))
         
     | 
| 
       43 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:replace).with('file2 line2').and_return('new file2 line2'))
         
     | 
| 
       44 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:config).and_return(ref_document: 'ref.adoc'))
         
     | 
| 
       45 
     | 
    
         
            -
                  allow(line_modifier).to(receive(:changes).and_return([%w[from1 to1], %w[from2 to2]]))
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                context 'when detailed expectations' do
         
     | 
| 
       49 
     | 
    
         
            -
                  before { modifier.do_modifications(adoc_texts) }
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                  it do
         
     | 
| 
       52 
     | 
    
         
            -
                    expect(DefMastership::UpdateDefVersionLineModifier).to(
         
     | 
| 
       53 
     | 
    
         
            -
                      have_received(:from_config).with(ref_document: 'ref.adoc')
         
     | 
| 
       54 
     | 
    
         
            -
                    )
         
     | 
| 
       55 
     | 
    
         
            -
                  end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                  it { expect(document).to(have_received(:parse_file_with_preprocessor).with('file1.adoc')) }
         
     | 
| 
       58 
     | 
    
         
            -
                  it { expect(document).to(have_received(:parse_file_with_preprocessor).with('file2.adoc')) }
         
     | 
| 
       59 
     | 
    
         
            -
                  it { expect(ref_document).to(have_received(:parse_file_with_preprocessor).with('ref.adoc')) }
         
     | 
| 
       60 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:'document=').with(document)) }
         
     | 
| 
       61 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:'ref_document=').with(ref_document)) }
         
     | 
| 
       62 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with("file1 line1\n")) }
         
     | 
| 
       63 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with('file1 line2')) }
         
     | 
| 
       64 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with("file2 line1\n")) }
         
     | 
| 
       65 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:replace).with('file2 line2')) }
         
     | 
| 
       66 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:config)) }
         
     | 
| 
       67 
     | 
    
         
            -
                  it { expect(line_modifier).to(have_received(:changes)) }
         
     | 
| 
       68 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(config: { ref_document: 'ref.adoc' })) }
         
     | 
| 
       69 
     | 
    
         
            -
                  it { is_expected.to(have_attributes(changes: [%w[from1 to1], %w[from2 to2]])) }
         
     | 
| 
       70 
     | 
    
         
            -
                end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                it do
         
     | 
| 
       73 
     | 
    
         
            -
                  expected_adoc = {
         
     | 
| 
       74 
     | 
    
         
            -
                    'file1.adoc' => "new file1 line1\nnew file1 line2",
         
     | 
| 
       75 
     | 
    
         
            -
                    'file2.adoc' => "new file2 line1\nnew file2 line2"
         
     | 
| 
       76 
     | 
    
         
            -
                  }
         
     | 
| 
       77 
     | 
    
         
            -
                  expect(modifier.do_modifications(adoc_texts)).to(eq(expected_adoc))
         
     | 
| 
       78 
     | 
    
         
            -
                end
         
     | 
| 
       79 
     | 
    
         
            -
              end
         
     | 
| 
       80 
     | 
    
         
            -
            end
         
     |