У меня есть сервисный метод, который извлекает информацию из API и возвращает список полей. Если поле или тип имени животного не существует, то оно создается;
class AnimalInfoService < ActiveJob::Base
before_enqueue :mark_as_pending
around_perform :handle_sync_error_state
def perform(raw_animal_data)
.....
animal_data = get_animal_data(raw_animal_data)
end
def get_animal_data(raw_animal_data)
animal_name = Animal.find_or_create_by(name: raw_animal_data[:name])
animal_type = AnimalType.find_or_create_by(name: raw_animal_data[:animal_type], animal: animal_name)
tailored_animal_data.merge(
name:animal_name,
type:animal_type
)
end
Мой вопрос: как правильно проверить это? У меня ниже есть некоторый псевдокод, и мне было интересно, если кто-нибудь может дать мне знать, если это правильное направление:
test "should create new animal name" do
current_animals = Animal.count //<-- not sure how to call this method
mock = MiniTest::Mock.new
mock.expect(:call, nil, [{
:name => "Whale",
:type => "Fish",
:location => "Ocean",
}, "API", Integer])
SyncPropertyJob.stub(:perform_later, mock) do
@syncer.sync
end
updated_number_of_animals = Animal.count
assert(updated_number_of_animals>current_animals)
end