You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.3 KiB
41 lines
1.3 KiB
require "rails_helper" |
|
require "rake" |
|
|
|
RSpec.describe "log_variable_definitions" do |
|
describe ":add_variable_definitions", type: :task do |
|
subject(:task) { Rake::Task["data_import:add_variable_definitions"] } |
|
|
|
let(:path) { "spec/fixtures/variable_definitions" } |
|
|
|
before do |
|
Rake.application.rake_require("tasks/log_variable_definitions") |
|
Rake::Task.define_task(:environment) |
|
task.reenable |
|
end |
|
|
|
it "adds CsvVariableDefinition records from each file in the specified directory" do |
|
expect { task.invoke(path) }.to change(CsvVariableDefinition, :count).by(416) |
|
end |
|
|
|
it "handles an empty directory without errors" do |
|
empty_path = "spec/fixtures/empty_directory" |
|
FileUtils.mkdir_p(empty_path) |
|
expect { task.invoke(empty_path) }.not_to raise_error |
|
expect(CsvVariableDefinition.count).to eq(0) |
|
end |
|
|
|
it "does not create duplicate records if run multiple times" do |
|
CsvVariableDefinition.delete_all |
|
initial_count = CsvVariableDefinition.count |
|
|
|
task.invoke(path) |
|
first_run_count = CsvVariableDefinition.count |
|
|
|
task.invoke(path) |
|
second_run_count = CsvVariableDefinition.count |
|
|
|
expect(first_run_count).to eq(initial_count + 416) |
|
expect(second_run_count).to eq(first_run_count) |
|
end |
|
end |
|
end
|
|
|