FIX: upload watched words should use UTF-8

This commit is contained in:
Neil Lalonde 2019-03-21 13:46:10 -04:00
parent 1f1d3909e5
commit 1812a38f0a
3 changed files with 28 additions and 1 deletions

View File

@ -25,7 +25,7 @@ class Admin::WatchedWordsController < Admin::AdminController
Scheduler::Defer.later("Upload watched words") do
begin
File.open(file.tempfile, encoding: "ISO-8859-1").each_line do |line|
File.open(file.tempfile, encoding: "bom|utf-8").each_line do |line|
WatchedWord.create_or_update_word(word: line, action_key: action_key) unless line.empty?
end
data = { url: '/ok' }

6
spec/fixtures/csv/words.csv vendored Normal file
View File

@ -0,0 +1,6 @@
thread
线
धागा
tråd
нить
1 thread
2 线
3 धागा
4
5 tråd
6 нить

View File

@ -179,4 +179,25 @@ describe WatchedWord do
}.to_not change { PostAction.count }
end
end
describe 'upload' do
context 'logged in as admin' do
before do
sign_in(admin)
end
it 'creates the words from the file' do
post '/admin/logs/watched_words/upload.json', params: {
action_key: 'flag',
file: Rack::Test::UploadedFile.new(file_from_fixtures("words.csv", "csv"))
}
expect(response.status).to eq(200)
expect(WatchedWord.count).to eq(6)
expect(WatchedWord.pluck(:word)).to contain_exactly(
'thread', '线', 'धागा', '실', 'tråd', 'нить'
)
expect(WatchedWord.pluck(:action).uniq).to eq([WatchedWord.actions[:flag]])
end
end
end
end