Files
space_game_server/core/spec/building_spec.rb
T

75 lines
2.7 KiB
Ruby

# Nathan Hinton 19 Dec 2025
# Defines tests for the buildings
require './building'
require './player'
require './planet'
require './space_object'
RSpec.describe Building do
describe '#initialize' do
it 'Initializes to defaults' do
building = Building.new(Player.new(), Planet.new())
expect(building.name).to eq 'default name'
expect(building.type).to eq 'Central Post'
end
it 'initializes with custom values' do
building = Building.new(Player.new(), Planet.new(), name: 'nathan house', type: 'Solar Farm')
expect(building.name).to eq 'nathan house'
expect(building.type).to eq 'Solar Farm'
end
it 'will raise error when invalid building type' do
expect{Building.new(Player.new(), Planet.new(), name: 'error', type: 'error')}.to raise_error BuildingError, "Invalid building type"
end
end
describe '#tick' do
it 'Adds resources to the player' do
player = Player.new()
planet = Planet.new()
type = 'Central Post'
building = Building.new(player, planet, type: type)
config = SpaceObject.new().get_config
metal = config['buildings'][type]['produces']['metal']
credits = config['buildings'][type]['produces']['credits']
crystals = config['buildings'][type]['produces']['crystals']
expect(player.resources).to eq({'metal' => 0, 'crystals' => 0, 'credits' => 0})
expect{building.tick}.to_not raise_error
expect(player.resources).to eq({
'metal' => metal,
'crystals' => crystals,
'credits' => credits
})
expect(planet.resources).to eq({
'food' => 0,
'energy' => 0,
'people' => 10
})
end
it 'Adds resources to the planet' do
player = Player.new()
planet = Planet.new()
type = 'Nuclear Plant'
building = Building.new(player, planet, type: type)
config = SpaceObject.new().get_config
expect(player.resources).to eq({'metal' => 0, 'crystals' => 0, 'credits' => 0})
expect{building.tick}.to_not raise_error
expect(player.resources).to eq({
'metal' => 0,
'crystals' => 0,
'credits' => 0
})
expect(planet.resources).to eq({
'food' => 0,
'energy' => 1000,
'people' => 10
})
end
end
end