Refactor existing modeling tests to follow more RSpec-y syntax

I'm learning how to group things and stuff!
This commit is contained in:
Emi Matchu 2024-10-24 15:16:55 -07:00
parent 3a5f33fd56
commit b1890d4f6f

View file

@ -9,33 +9,38 @@ RSpec.describe Pet, type: :model do
context "for thyassa, the Purple Chia" do context "for thyassa, the Purple Chia" do
subject(:pet) { Pet.load "thyassa" } subject(:pet) { Pet.load "thyassa" }
it "is named thyassa" do it("is named thyassa") { expect(pet.name).to eq("thyassa") }
expect(pet.name).to eq("thyassa") it("has no items") { expect(pet.items).to be_empty }
describe "its pet type" do
subject(:pet_type) { pet.pet_type }
it("is new and unsaved") { should be_new_record }
it("is Purple") { expect(pet_type.color).to eq Color.find_by_name!("purple") }
it("is a Chia") { expect(pet_type.species).to eq Species.find_by_name!("chia") }
it("has the standard Chia body") { expect(pet_type.body_id).to eq 212 }
it("uses the pet's image hash") { expect(pet_type.image_hash).to eq "m:thyass" }
it("is saved when saving the pet") do
expect { pet.save! }.to change { pet_type.persisted? }.from(false).to(true)
end
end end
it "has no items" do describe "its pet state" do
expect(pet.items).to be_empty subject(:pet_state) { pet.pet_state }
it("is new and unsaved") { should be_new_record }
it("belongs to the pet's pet type") { expect(pet_state.pet_type).to eq pet.pet_type }
it("isn't labeled yet") { expect(pet_state.pose).to eq "UNKNOWN" }
it "is saved when saving the pet" do
expect { pet.save! }.to change { pet_state.persisted? }.from(false).to(true)
end end
it "has a new Purple Chia pet type" do it "has new biology assets" do
expect(pet.pet_type.new_record?).to be true
expect(pet.pet_type.color).to eq Color.find_by_name!("purple")
expect(pet.pet_type.species).to eq Species.find_by_name!("chia")
expect(pet.pet_type.body_id).to eq 212
expect(pet.pet_type.image_hash).to eq "m:thyass"
end
it "has a new unlabeled Purple Chia pet state" do
expect(pet.pet_state.new_record?).to be true
expect(pet.pet_state.color).to eq Color.find_by_name!("purple")
expect(pet.pet_state.species).to eq Species.find_by_name!("chia")
expect(pet.pet_state.pose).to eq "UNKNOWN"
end
it "has new assets for the biology layers" do
pet.save! # TODO: I wish this were set up before saving. pet.save! # TODO: I wish this were set up before saving.
expect(pet.pet_state.swf_assets).to contain_exactly( expect(pet_state.swf_assets).to contain_exactly(
a_record_matching( a_record_matching(
type: "biology", type: "biology",
remote_id: 10083, remote_id: 10083,
@ -70,13 +75,6 @@ RSpec.describe Pet, type: :model do
) )
) )
end end
it "saves the pet type when saved" do
expect { pet.save! }.to change { pet.pet_type.persisted? }.from(false).to(true)
end
it "saves the pet state when saved" do
expect { pet.save! }.to change { pet.pet_state.persisted? }.from(false).to(true)
end end
context "when modeled a second time" do context "when modeled a second time" do