2024-11-19 11:28:36 -08:00
|
|
|
require_relative '../rails_helper'
|
2024-11-15 19:56:07 -08:00
|
|
|
|
|
|
|
|
RSpec.describe Species do
|
2025-11-02 01:46:53 -07:00
|
|
|
fixtures :species, :colors
|
|
|
|
|
|
|
|
|
|
describe "#valid_colors_for_species" do
|
|
|
|
|
it('returns colors that have pet types for the species') do
|
|
|
|
|
# The Blue Acara exists in fixtures, as does a "Color #123 Acara", which we'll ignore.
|
|
|
|
|
compatible_colors = species(:acara).compatible_colors
|
|
|
|
|
expect(compatible_colors.map(&:id)).to eq [8]
|
|
|
|
|
end
|
|
|
|
|
end
|
2024-11-15 19:56:07 -08:00
|
|
|
|
|
|
|
|
describe '#to_param' do
|
|
|
|
|
it("uses name when possible") do
|
|
|
|
|
expect(species(:acara).to_param).to eq "Acara"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it("uses IDs for new species") do
|
|
|
|
|
expect(Species.new(id: 12345).to_param).to eq "12345"
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe ".param_to_id" do
|
|
|
|
|
it("looks up by name") do
|
|
|
|
|
expect(Species.param_to_id("acara")).to eq species(:acara).id
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it("is case-insensitive for name") do
|
|
|
|
|
expect(Species.param_to_id("aCaRa")).to eq species(:acara).id
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it("returns ID when the param is just a number, even if no record exists") do
|
|
|
|
|
expect(Species.param_to_id("123456")).to eq 123456
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it("raises RecordNotFound if no name matches") do
|
|
|
|
|
expect { Species.param_to_id("nonexistant") }.
|
|
|
|
|
to raise_error ActiveRecord::RecordNotFound
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|