Verified Commit d04b051d authored by Alexis Reigel's avatar Alexis Reigel
Browse files

convert test to spec syntax

parent 4d59b234
......@@ -13,90 +13,111 @@ class User < ActiveRecord::Base
validates :first_name, presence: true
end
class ExcelsiorTest < Minitest::Test
def setup
User.delete_all
describe Excelsior do
before do
@import = UserImport.new
end
def test_that_it_has_a_version_number
it 'has a version number' do
refute_nil ::Excelsior::VERSION
end
def test_class_level_source
import = UserImport.new
assert_equal "test/files/complete.xlsx", import.source
end
describe 'source' do
it 'allows setting the source on the class' do
import = UserImport.new
assert_equal "test/files/complete.xlsx", import.source
end
def test_instance_level_source
import = UserImport.new("test/files/missing-column.xlsx")
assert_equal "test/files/missing-column.xlsx", import.source
it 'allows setting the source on an instance level' do
import = UserImport.new("test/files/missing-column.xlsx")
assert_equal "test/files/missing-column.xlsx", import.source
end
end
def test_import_rows
assert_equal 2, @import.rows.length
describe '#rows' do
it 'returns the correct number of rows' do
assert_equal 2, @import.rows.length
end
end
def test_import_columns
assert_equal 3, @import.columns.length
assert_equal "E-Mail", @import.columns[0]
assert_equal "Vorname", @import.columns[1]
assert_equal "Nachname", @import.columns[2]
describe '#columns' do
it 'returns the columns as defined in the excel' do
assert_equal 3, @import.columns.length
assert_equal "E-Mail", @import.columns[0]
assert_equal "Vorname", @import.columns[1]
assert_equal "Nachname", @import.columns[2]
end
end
def test_mapping
assert_equal @import.fields, [
{ attribute: :first_name, header: "Vorname" },
{ attribute: :last_name, header: "Nachname" },
{ attribute: :email, header: "E-Mail" }
]
describe '#fields' do
it 'returns the mapped fields' do
assert_equal @import.fields, [
{ attribute: :first_name, header: "Vorname" },
{ attribute: :last_name, header: "Nachname" },
{ attribute: :email, header: "E-Mail" }
]
end
end
def test_import_run
@import.run
assert_equal User.all.size, 2
end
describe '#run' do
describe 'without a block' do
it 'inserts the records' do
@import.run
assert_equal User.all.size, 2
end
end
def test_import_run_with_block
results = @import.run { |v| v }
assert_equal results[0], {
first_name: "Hans",
last_name: "Müller",
email: "hans@mueller.com"
}
assert_equal results[1], {
first_name: "Jögi",
last_name: "Brunz",
email: "jb@runz.com"
}
describe 'with a block' do
it 'yields the records to the block' do
results = @import.run { |v| v }
assert_equal results[0], {
first_name: "Hans",
last_name: "Müller",
email: "hans@mueller.com"
}
assert_equal results[1], {
first_name: "Jögi",
last_name: "Brunz",
email: "jb@runz.com"
}
end
end
end
def test_validations
import = UserImport.new("test/files/missing-column.xlsx")
assert import.errors[:missing_column].any?
end
describe '#errors' do
it 'returns an error when a column is missing in the excel' do
import = UserImport.new("test/files/missing-column.xlsx")
assert import.errors[:missing_column].any?
end
def test_model_validations
import = UserImport.new("test/files/missing-first-name.xlsx").tap(&:run)
assert import.errors[:model].any?
assert_equal import.errors[:model], [Excelsior::Error.new(3, ["First name can't be blank"])]
it 'returns the model validation errors' do
import = UserImport.new("test/files/missing-first-name.xlsx").tap(&:run)
assert import.errors[:model].any?
assert_equal import.errors[:model], [Excelsior::Error.new(3, ["First name can't be blank"])]
end
end
def test_report
import = UserImport.new("test/files/missing-first-name.xlsx").tap(&:run)
assert_equal 2, import.report.inserted
assert_equal 1, import.report.failed
assert_equal 3, import.report.total
end
describe '#report' do
describe 'without a block' do
it 'returns the inserted, failed and total number of rows' do
import = UserImport.new("test/files/missing-first-name.xlsx").tap(&:run)
assert_equal 2, import.report.inserted
assert_equal 1, import.report.failed
assert_equal 3, import.report.total
end
end
def test_report_with_block
import = UserImport.new("test/files/missing-first-name.xlsx")
import.run do |v|
raise "failure!" if v[:first_name].nil?
v
describe 'with a block' do
it 'returns the inserted, failed and total number of rows' do
import = UserImport.new("test/files/missing-first-name.xlsx")
import.run do |v|
raise "failure!" if v[:first_name].nil?
v
end
assert_equal 2, import.report.inserted
assert_equal 1, import.report.failed
assert_equal 3, import.report.total
end
end
assert_equal 2, import.report.inserted
assert_equal 1, import.report.failed
assert_equal 3, import.report.total
end
end
......@@ -3,6 +3,12 @@ require "excelsior"
require 'active_record'
require "minitest/autorun"
class MiniTest::Spec
before do
User.delete_all
end
end
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: File.dirname(__FILE__) + '/test.sqlite3'
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment