LittleWeasel 3.0.0 → 4.0.0
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 +5 -5
- data/.gitignore +3 -0
- data/.idea/.rakeTasks +1 -1
- data/.idea/LittleWeasel.iml +5 -18
- data/.idea/workspace.xml +198 -109
- data/.reek.yml +17 -0
- data/.rspec +4 -2
- data/.rubocop.yml +187 -0
- data/.ruby-version +1 -0
- data/.yardopts +2 -0
- data/CHANGELOG.md +16 -0
- data/Gemfile +3 -1
- data/LittleWeasel.gemspec +31 -18
- data/README.md +408 -42
- data/Rakefile +296 -3
- data/lib/LittleWeasel.rb +5 -171
- data/lib/LittleWeasel/block_results.rb +81 -0
- data/lib/LittleWeasel/configure.rb +98 -0
- data/lib/LittleWeasel/dictionary.rb +125 -0
- data/lib/LittleWeasel/dictionary_key.rb +48 -0
- data/lib/LittleWeasel/dictionary_manager.rb +85 -0
- data/lib/LittleWeasel/errors/dictionary_file_already_loaded_error.rb +9 -0
- data/lib/LittleWeasel/errors/dictionary_file_empty_error.rb +8 -0
- data/lib/LittleWeasel/errors/dictionary_file_not_found_error.rb +8 -0
- data/lib/LittleWeasel/errors/dictionary_file_too_large_error.rb +16 -0
- data/lib/LittleWeasel/errors/language_required_error.rb +8 -0
- data/lib/LittleWeasel/errors/must_override_error.rb +8 -0
- data/lib/LittleWeasel/filters/en_us/currency_filter.rb +19 -0
- data/lib/LittleWeasel/filters/en_us/numeric_filter.rb +19 -0
- data/lib/LittleWeasel/filters/en_us/single_character_word_filter.rb +21 -0
- data/lib/LittleWeasel/filters/word_filter.rb +59 -0
- data/lib/LittleWeasel/filters/word_filter_managable.rb +80 -0
- data/lib/LittleWeasel/filters/word_filter_validatable.rb +31 -0
- data/lib/LittleWeasel/filters/word_filterable.rb +19 -0
- data/lib/LittleWeasel/filters/word_filters_validatable.rb +29 -0
- data/lib/LittleWeasel/metadata/dictionary_metadata.rb +145 -0
- data/lib/LittleWeasel/metadata/invalid_words_metadata.rb +134 -0
- data/lib/LittleWeasel/metadata/invalid_words_service_results.rb +45 -0
- data/lib/LittleWeasel/metadata/metadata_observable_validatable.rb +22 -0
- data/lib/LittleWeasel/metadata/metadata_observerable.rb +90 -0
- data/lib/LittleWeasel/metadata/metadatable.rb +136 -0
- data/lib/LittleWeasel/modules/class_name_to_symbol.rb +26 -0
- data/lib/LittleWeasel/modules/configurable.rb +26 -0
- data/lib/LittleWeasel/modules/deep_dup.rb +11 -0
- data/lib/LittleWeasel/modules/dictionary_cache_keys.rb +34 -0
- data/lib/LittleWeasel/modules/dictionary_cache_servicable.rb +26 -0
- data/lib/LittleWeasel/modules/dictionary_cache_validatable.rb +20 -0
- data/lib/LittleWeasel/modules/dictionary_creator_servicable.rb +27 -0
- data/lib/LittleWeasel/modules/dictionary_file_loader.rb +67 -0
- data/lib/LittleWeasel/modules/dictionary_key_validatable.rb +19 -0
- data/lib/LittleWeasel/modules/dictionary_keyable.rb +24 -0
- data/lib/LittleWeasel/modules/dictionary_loader_servicable.rb +27 -0
- data/lib/LittleWeasel/modules/dictionary_metadata_servicable.rb +29 -0
- data/lib/LittleWeasel/modules/dictionary_metadata_validatable.rb +17 -0
- data/lib/LittleWeasel/modules/dictionary_sourceable.rb +26 -0
- data/lib/LittleWeasel/modules/dictionary_validatable.rb +30 -0
- data/lib/LittleWeasel/modules/language.rb +23 -0
- data/lib/LittleWeasel/modules/language_validatable.rb +16 -0
- data/lib/LittleWeasel/modules/locale.rb +40 -0
- data/lib/LittleWeasel/modules/order_validatable.rb +18 -0
- data/lib/LittleWeasel/modules/orderable.rb +17 -0
- data/lib/LittleWeasel/modules/region.rb +23 -0
- data/lib/LittleWeasel/modules/region_validatable.rb +16 -0
- data/lib/LittleWeasel/modules/tag_validatable.rb +16 -0
- data/lib/LittleWeasel/modules/taggable.rb +31 -0
- data/lib/LittleWeasel/modules/word_results_validatable.rb +28 -0
- data/lib/LittleWeasel/preprocessors/en_us/capitalize_preprocessor.rb +22 -0
- data/lib/LittleWeasel/preprocessors/preprocessed_word.rb +28 -0
- data/lib/LittleWeasel/preprocessors/preprocessed_word_validatable.rb +55 -0
- data/lib/LittleWeasel/preprocessors/preprocessed_words.rb +55 -0
- data/lib/LittleWeasel/preprocessors/preprocessed_words_validatable.rb +27 -0
- data/lib/LittleWeasel/preprocessors/word_preprocessable.rb +19 -0
- data/lib/LittleWeasel/preprocessors/word_preprocessor.rb +122 -0
- data/lib/LittleWeasel/preprocessors/word_preprocessor_managable.rb +114 -0
- data/lib/LittleWeasel/preprocessors/word_preprocessor_validatable.rb +40 -0
- data/lib/LittleWeasel/preprocessors/word_preprocessors_validatable.rb +24 -0
- data/lib/LittleWeasel/services/dictionary_cache_service.rb +262 -0
- data/lib/LittleWeasel/services/dictionary_creator_service.rb +94 -0
- data/lib/LittleWeasel/services/dictionary_file_loader_service.rb +37 -0
- data/lib/LittleWeasel/services/dictionary_killer_service.rb +35 -0
- data/lib/LittleWeasel/services/dictionary_loader_service.rb +59 -0
- data/lib/LittleWeasel/services/dictionary_metadata_service.rb +114 -0
- data/lib/LittleWeasel/services/invalid_words_service.rb +59 -0
- data/lib/LittleWeasel/version.rb +3 -1
- data/lib/LittleWeasel/word_results.rb +146 -0
- data/spec/factories/dictionary.rb +43 -0
- data/spec/factories/dictionary_cache_service.rb +95 -0
- data/spec/factories/dictionary_creator_service.rb +16 -0
- data/spec/factories/dictionary_file_loader_service.rb +13 -0
- data/spec/factories/dictionary_hash.rb +39 -0
- data/spec/factories/dictionary_key.rb +14 -0
- data/spec/factories/dictionary_killer_service.rb +14 -0
- data/spec/factories/dictionary_loader_service.rb +14 -0
- data/spec/factories/dictionary_manager.rb +10 -0
- data/spec/factories/dictionary_metadata.rb +16 -0
- data/spec/factories/dictionary_metadata_service.rb +16 -0
- data/spec/factories/numeric_filter.rb +12 -0
- data/spec/factories/preprocessed_word.rb +16 -0
- data/spec/factories/preprocessed_words.rb +41 -0
- data/spec/factories/single_character_word_filter.rb +12 -0
- data/spec/factories/word_results.rb +16 -0
- data/spec/lib/LittleWeasel/block_results_spec.rb +248 -0
- data/spec/lib/LittleWeasel/configure_spec.rb +74 -0
- data/spec/lib/LittleWeasel/dictionary_key_spec.rb +118 -0
- data/spec/lib/LittleWeasel/dictionary_manager_spec.rb +116 -0
- data/spec/lib/LittleWeasel/dictionary_spec.rb +289 -0
- data/spec/lib/LittleWeasel/filters/en_us/currency_filter_spec.rb +80 -0
- data/spec/lib/LittleWeasel/filters/en_us/numeric_filter_spec.rb +66 -0
- data/spec/lib/LittleWeasel/filters/en_us/single_character_word_filter_spec.rb +58 -0
- data/spec/lib/LittleWeasel/filters/word_filter_managable_spec.rb +180 -0
- data/spec/lib/LittleWeasel/filters/word_filter_spec.rb +151 -0
- data/spec/lib/LittleWeasel/filters/word_filter_validatable_spec.rb +94 -0
- data/spec/lib/LittleWeasel/filters/word_filters_validatable_spec.rb +48 -0
- data/spec/lib/LittleWeasel/integraton_tests/dictionary_integration_spec.rb +201 -0
- data/spec/lib/LittleWeasel/metadata/dictionary_creator_servicable_spec.rb +54 -0
- data/spec/lib/LittleWeasel/metadata/dictionary_metadata_spec.rb +209 -0
- data/spec/lib/LittleWeasel/metadata/invalid_words_metadata_spec.rb +155 -0
- data/spec/lib/LittleWeasel/metadata/metadata_observerable_spec.rb +31 -0
- data/spec/lib/LittleWeasel/metadata/metadatable_spec.rb +35 -0
- data/spec/lib/LittleWeasel/modules/class_name_to_symbol_spec.rb +21 -0
- data/spec/lib/LittleWeasel/modules/dictionary_file_loader_spec.rb +125 -0
- data/spec/lib/LittleWeasel/modules/dictionary_sourceable_spec.rb +44 -0
- data/spec/lib/LittleWeasel/modules/language_spec.rb +52 -0
- data/spec/lib/LittleWeasel/modules/locale_spec.rb +140 -0
- data/spec/lib/LittleWeasel/modules/region_spec.rb +52 -0
- data/spec/lib/LittleWeasel/preprocessors/en_us/capitalize_preprocessor_spec.rb +34 -0
- data/spec/lib/LittleWeasel/preprocessors/preprocessed_word_spec.rb +105 -0
- data/spec/lib/LittleWeasel/preprocessors/preprocessed_word_validatable_spec.rb +143 -0
- data/spec/lib/LittleWeasel/preprocessors/preprocessed_words_spec.rb +77 -0
- data/spec/lib/LittleWeasel/preprocessors/preprocessed_words_validatable_spec.rb +58 -0
- data/spec/lib/LittleWeasel/preprocessors/word_preprocessor_managable_spec.rb +216 -0
- data/spec/lib/LittleWeasel/preprocessors/word_preprocessor_spec.rb +175 -0
- data/spec/lib/LittleWeasel/preprocessors/word_preprocessor_validatable_spec.rb +109 -0
- data/spec/lib/LittleWeasel/preprocessors/word_preprocessors_validatable_spec.rb +49 -0
- data/spec/lib/LittleWeasel/services/dictionary_cache_service_spec.rb +444 -0
- data/spec/lib/LittleWeasel/services/dictionary_creator_service_spec.rb +119 -0
- data/spec/lib/LittleWeasel/services/dictionary_file_loader_service_spec.rb +71 -0
- data/spec/lib/LittleWeasel/services/dictionary_loader_service_spec.rb +50 -0
- data/spec/lib/LittleWeasel/services/dictionary_metadata_service_spec.rb +279 -0
- data/spec/lib/LittleWeasel/word_results_spec.rb +275 -0
- data/spec/lib/LittleWeasel/workflow/workflow_spec.rb +20 -0
- data/spec/spec_helper.rb +117 -6
- data/spec/support/factory_bot.rb +15 -0
- data/spec/support/file_helpers.rb +32 -0
- data/spec/support/files/empty-dictionary.txt +0 -0
- data/{lib/dictionary → spec/support/files/en-US-big.txt} +262156 -31488
- data/spec/support/files/en-US-tagged.txt +26 -0
- data/spec/support/files/en-US.txt +26 -0
- data/spec/support/files/en.txt +26 -0
- data/spec/support/files/es-ES.txt +27 -0
- data/spec/support/files/es.txt +27 -0
- data/spec/support/general_helpers.rb +68 -0
- data/spec/support/shared_contexts.rb +108 -0
- data/spec/support/shared_examples.rb +105 -0
- metadata +415 -52
- data/.rbenv-version +0 -1
- data/spec/checker/checker_spec.rb +0 -237
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
RSpec.describe LittleWeasel::Modules::Locale, type: :module do
|
|
6
|
+
Locale = described_class
|
|
7
|
+
|
|
8
|
+
subject do
|
|
9
|
+
Class.new do
|
|
10
|
+
include Locale
|
|
11
|
+
|
|
12
|
+
attr_reader :language, :region
|
|
13
|
+
|
|
14
|
+
def initialize(language, region)
|
|
15
|
+
self.language = language
|
|
16
|
+
self.region = region
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
attr_writer :language, :region
|
|
22
|
+
end.new(language, region)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
let(:language) {}
|
|
26
|
+
let(:region) {}
|
|
27
|
+
|
|
28
|
+
#.locale
|
|
29
|
+
describe '.locale' do
|
|
30
|
+
it 'adds the class method when included' do
|
|
31
|
+
expect(subject.class).to respond_to(:locale)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context 'with valid arguments' do
|
|
35
|
+
let(:language) { :en }
|
|
36
|
+
let(:region) { :us }
|
|
37
|
+
|
|
38
|
+
it 'returns the locale as a string' do
|
|
39
|
+
expect(subject.class.locale language: language, region: region).to eq 'en-US'
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context 'with INVALID arguments' do
|
|
44
|
+
context 'with an invalid language' do
|
|
45
|
+
let(:language) {}
|
|
46
|
+
let(:region) { :us }
|
|
47
|
+
|
|
48
|
+
it 'raises an error' do
|
|
49
|
+
expect { subject.class.locale language: language, region: region }.to raise_error 'Argument language does not respond to :downcase'
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context 'when region is nil' do
|
|
54
|
+
let(:language) { :en }
|
|
55
|
+
let(:region) {}
|
|
56
|
+
|
|
57
|
+
it 'returns the expected locale as a string' do
|
|
58
|
+
expect(subject.class.locale language: language, region: region).to eq language.downcase.to_s
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context 'when region is invalid' do
|
|
63
|
+
let(:language) { :en }
|
|
64
|
+
let(:region) { 1 }
|
|
65
|
+
|
|
66
|
+
it 'raises an error' do
|
|
67
|
+
expect { subject.class.locale language: language, region: region }.to raise_error 'Argument region does not respond to :upcase'
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
#locale
|
|
74
|
+
describe '#locale' do
|
|
75
|
+
context 'with valid arguments' do
|
|
76
|
+
context 'with valid language' do
|
|
77
|
+
let(:language) { :en }
|
|
78
|
+
|
|
79
|
+
it 'returns the expected locale (language only)' do
|
|
80
|
+
expect(subject.locale).to eq 'en'
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context 'with valid language and region' do
|
|
85
|
+
let(:language) { :en }
|
|
86
|
+
let(:region) { :us }
|
|
87
|
+
|
|
88
|
+
it 'returns the expected locale (language and region)' do
|
|
89
|
+
expect(subject.locale).to eq 'en-US'
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe 'normalizes language and region to the proper case' do
|
|
93
|
+
let(:language) { :EN }
|
|
94
|
+
let(:region) { :us }
|
|
95
|
+
|
|
96
|
+
it 'returns the expected locale with language lowercase and region uppercase' do
|
|
97
|
+
expect(subject.locale).to eq 'en-US'
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
context 'with valid language and nil region' do
|
|
103
|
+
let(:language) { :en }
|
|
104
|
+
let(:region) {}
|
|
105
|
+
|
|
106
|
+
it 'returns the expected locale (language only)' do
|
|
107
|
+
expect(subject.locale).to eq 'en'
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
context 'with valid language and blank region' do
|
|
112
|
+
let(:language) { :en }
|
|
113
|
+
let(:region) { '' }
|
|
114
|
+
|
|
115
|
+
it 'returns the expected locale (language only)' do
|
|
116
|
+
expect(subject.locale).to eq 'en'
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
context 'with invalid arguments' do
|
|
122
|
+
context 'with invalid language' do
|
|
123
|
+
let(:language) { 1 }
|
|
124
|
+
|
|
125
|
+
it 'raises an error' do
|
|
126
|
+
expect { subject.locale }.to raise_error 'Argument language does not respond to :downcase'
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
context 'with invalid region' do
|
|
131
|
+
let(:language) { :en }
|
|
132
|
+
let(:region) { 1 }
|
|
133
|
+
|
|
134
|
+
it 'raises an error' do
|
|
135
|
+
expect { subject.locale }.to raise_error 'Argument region does not respond to :upcase'
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
RSpec.describe LittleWeasel::Modules::Region, type: :module do
|
|
6
|
+
Region = described_class
|
|
7
|
+
|
|
8
|
+
subject do
|
|
9
|
+
Class.new do
|
|
10
|
+
include Region
|
|
11
|
+
|
|
12
|
+
attr_reader :region
|
|
13
|
+
|
|
14
|
+
def initialize(region)
|
|
15
|
+
self.region = region
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
attr_writer :region
|
|
21
|
+
end.new(region)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
let(:region) {}
|
|
25
|
+
|
|
26
|
+
#normalize_region
|
|
27
|
+
describe '#normalize_region' do
|
|
28
|
+
context 'with a non-nil region' do
|
|
29
|
+
context 'when passing a Symbol' do
|
|
30
|
+
let(:region) { :AbCdEfG }
|
|
31
|
+
|
|
32
|
+
it 'converts the region to a upper-case Symbol' do
|
|
33
|
+
expect(subject.normalize_region).to eq :ABCDEFG
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'when passing a String' do
|
|
38
|
+
let(:region) { 'AbCdEfG' }
|
|
39
|
+
|
|
40
|
+
it 'converts the region to a upper-case String' do
|
|
41
|
+
expect(subject.normalize_region).to eq 'ABCDEFG'
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
context 'with a nil region' do
|
|
47
|
+
it 'returns nil' do
|
|
48
|
+
expect(subject.normalize_region).to be_nil
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literals: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
RSpec.describe LittleWeasel::Preprocessors::EnUs::CapitalizePreprocessor do
|
|
6
|
+
subject { described_class.new }
|
|
7
|
+
|
|
8
|
+
#.new
|
|
9
|
+
describe '.new' do
|
|
10
|
+
it 'instantiates the object' do
|
|
11
|
+
expect { subject }.to_not raise_error
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe '#order' do
|
|
15
|
+
it 'sets #order to 0 by default' do
|
|
16
|
+
expect(subject.order).to eq 0
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe '#preprocessor_on' do
|
|
21
|
+
it 'sets #preprocessor_on to true by default' do
|
|
22
|
+
expect(subject.preprocessor_on).to eq true
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
#.preprocess
|
|
28
|
+
describe '.preprocess' do
|
|
29
|
+
it 'processes and capitalizes the word' do
|
|
30
|
+
expect(described_class.preprocess 'wOrD').to eq [true, 'Word']
|
|
31
|
+
expect(described_class.preprocess 'Word').to eq [true, 'Word']
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
RSpec.describe LittleWeasel::Preprocessors::PreprocessedWord do
|
|
6
|
+
subject do
|
|
7
|
+
described_class.new(
|
|
8
|
+
original_word: original_word,
|
|
9
|
+
preprocessed_word: preprocessed_word,
|
|
10
|
+
preprocessor: preprocessor,
|
|
11
|
+
preprocessed: preprocessed,
|
|
12
|
+
preprocessor_order: preprocessor_order
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
let(:original_word) { :original_word }
|
|
17
|
+
let(:preprocessed_word) { :preprocessed_word }
|
|
18
|
+
let(:preprocessor) { :preprocessor }
|
|
19
|
+
let(:preprocessed) { true }
|
|
20
|
+
let(:preprocessor_order) { :preprocessor_order }
|
|
21
|
+
|
|
22
|
+
#.new
|
|
23
|
+
describe '.new' do
|
|
24
|
+
context 'initializes the attributes' do
|
|
25
|
+
describe '#original_word' do
|
|
26
|
+
it 'is initialized' do
|
|
27
|
+
expect(subject.original_word).to eq :original_word
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe '#preprocessed_word' do
|
|
32
|
+
it 'is initialized' do
|
|
33
|
+
expect(subject.preprocessed_word).to eq :preprocessed_word
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe '#preprocessor' do
|
|
38
|
+
it 'is initialized' do
|
|
39
|
+
expect(subject.preprocessor).to eq :preprocessor
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe '#preprocessor_order' do
|
|
44
|
+
it 'is initialized' do
|
|
45
|
+
expect(subject.preprocessor_order).to eq :preprocessor_order
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# attributes
|
|
52
|
+
context 'attributes' do
|
|
53
|
+
describe 'original_word=' do
|
|
54
|
+
let(:changed_to) { :original_word_changed }
|
|
55
|
+
|
|
56
|
+
it 'sets the attribute' do
|
|
57
|
+
subject.original_word = changed_to
|
|
58
|
+
expect(subject.original_word).to eq changed_to
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe 'preprocessed_word=' do
|
|
63
|
+
let(:changed_to) { :preprocessed_word_changed }
|
|
64
|
+
|
|
65
|
+
it 'sets the attribute' do
|
|
66
|
+
subject.preprocessed_word = changed_to
|
|
67
|
+
expect(subject.preprocessed_word).to eq changed_to
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe 'preprocessor=' do
|
|
72
|
+
let(:changed_to) { :preprocessor_changed }
|
|
73
|
+
|
|
74
|
+
it 'sets the attribute' do
|
|
75
|
+
subject.preprocessor = changed_to
|
|
76
|
+
expect(subject.preprocessor).to eq changed_to
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe 'preprocessor_order=' do
|
|
81
|
+
let(:changed_to) { :preprocessor_order_changed }
|
|
82
|
+
|
|
83
|
+
it 'sets the attribute' do
|
|
84
|
+
subject.preprocessor_order = changed_to
|
|
85
|
+
expect(subject.preprocessor_order).to eq changed_to
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
describe '#preprocessed?' do
|
|
90
|
+
context 'when preprocessed is true' do
|
|
91
|
+
it 'returns true' do
|
|
92
|
+
expect(subject.preprocessed?).to eq true
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context 'when preprocessed is false' do
|
|
97
|
+
let(:preprocessed) { false }
|
|
98
|
+
|
|
99
|
+
it 'returns false' do
|
|
100
|
+
expect(subject.preprocessed?).to eq false
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
RSpec.describe LittleWeasel::Preprocessors::PreprocessedWordValidatable, type: :module do
|
|
6
|
+
PreprocessedWordValidatable = described_class
|
|
7
|
+
|
|
8
|
+
class MockSubject
|
|
9
|
+
include PreprocessedWordValidatable
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
subject do
|
|
13
|
+
MockSubject.new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
before do
|
|
17
|
+
allow(preprocessed_word_object).to receive(:respond_to?).and_call_original
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
let(:preprocessed_word_object) do
|
|
21
|
+
create(:preprocessed_word,
|
|
22
|
+
original_word: original_word,
|
|
23
|
+
preprocessed: preprocessed,
|
|
24
|
+
preprocessed_word: preprocessed_word,
|
|
25
|
+
preprocessor: preprocessor,
|
|
26
|
+
preprocessor_order: preprocessor_order)
|
|
27
|
+
end
|
|
28
|
+
let(:original_word) { 'word' }
|
|
29
|
+
let(:preprocessed) { true }
|
|
30
|
+
let(:preprocessed_word) { 'preprocessed-word0'}
|
|
31
|
+
let(:preprocessor) { :preprocesor0 }
|
|
32
|
+
let(:preprocessor_order) { 0 }
|
|
33
|
+
|
|
34
|
+
#.validate_prepreprocessed_word
|
|
35
|
+
describe '.validate_prepreprocessed_word' do
|
|
36
|
+
context 'when the object is valid' do
|
|
37
|
+
it 'does not raise an error' do
|
|
38
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to_not raise_error
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context 'when the object is INVALID' do
|
|
43
|
+
context 'when #original_word is missing' do
|
|
44
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
45
|
+
let(:method) { :original_word }
|
|
46
|
+
|
|
47
|
+
it 'raises an eror' do
|
|
48
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context 'when #original_word= is missing' do
|
|
53
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
54
|
+
let(:method) { :original_word= }
|
|
55
|
+
|
|
56
|
+
it 'raises an eror' do
|
|
57
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context 'when #preprocessed_word is missing' do
|
|
62
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
63
|
+
let(:method) { :preprocessed_word }
|
|
64
|
+
|
|
65
|
+
it 'raises an eror' do
|
|
66
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
context 'when #preprocessed_word= is missing' do
|
|
71
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
72
|
+
let(:method) { :preprocessed_word= }
|
|
73
|
+
|
|
74
|
+
it 'raises an eror' do
|
|
75
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
context 'when #preprocessed is missing' do
|
|
80
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
81
|
+
let(:method) { :preprocessed }
|
|
82
|
+
|
|
83
|
+
it 'raises an eror' do
|
|
84
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context 'when #preprocessed= is missing' do
|
|
89
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
90
|
+
let(:method) { :preprocessed= }
|
|
91
|
+
|
|
92
|
+
it 'raises an eror' do
|
|
93
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
context 'when #preprocessed? is missing' do
|
|
98
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
99
|
+
let(:method) { :preprocessed? }
|
|
100
|
+
|
|
101
|
+
it 'raises an eror' do
|
|
102
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
context 'when #preprocessor is missing' do
|
|
107
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
108
|
+
let(:method) { :preprocessor }
|
|
109
|
+
|
|
110
|
+
it 'raises an eror' do
|
|
111
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
context 'when #preprocessor= is missing' do
|
|
116
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
117
|
+
let(:method) { :preprocessor= }
|
|
118
|
+
|
|
119
|
+
it 'raises an eror' do
|
|
120
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
context 'when #preprocessor_order is missing' do
|
|
125
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
126
|
+
let(:method) { :preprocessor_order }
|
|
127
|
+
|
|
128
|
+
it 'raises an eror' do
|
|
129
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
context 'when #preprocessor_order= is missing' do
|
|
134
|
+
before { allow(preprocessed_word_object).to receive(:respond_to?).with(method).and_return(false) }
|
|
135
|
+
let(:method) { :preprocessor_order= }
|
|
136
|
+
|
|
137
|
+
it 'raises an eror' do
|
|
138
|
+
expect { PreprocessedWordValidatable.validate_prepreprocessed_word(preprocessed_word: preprocessed_word_object) }.to raise_error(/Argument preprocessed_word: does not respond to.+#{method}/)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|