wedding-planner/spec/services/tables/wheel_swap_spec.rb

31 lines
1.0 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
module Tables
RSpec.describe WheelSwap do
context 'when the solution has three tables' do
let(:initial_solution) do
Distribution.new(min_per_table: 3, max_per_table: 3).tap do |distribution|
distribution.tables << Set[:a, :b, :c].to_table
distribution.tables << Set[:d, :e, :f].to_table
distribution.tables << Set[:g, :h, :i].to_table
end
end
it 'swaps a random guest from each table with a guest from another table', :aggregate_failures do
result = described_class.new(initial_solution).call
expect(result.tables.size).to eq(3)
expect(result.tables.map(&:size)).to all(eq(3))
# expect(result.tables).not_to include(initial_solution.tables[0])
# expect(result.tables).not_to include(initial_solution.tables[1])
# expect(result.tables).not_to include(initial_solution.tables[2])
expect(result.tables.map(&:to_a).flatten).to match_array((:a..:i).to_a)
end
end
end
end