# frozen_string_literal: true
describe ESM::Command::My::Aliases, category: "command" do
include_context "command"
include_examples "validate_command"
it "is a player command" do
expect(command.type).to eq(:player)
end
describe "#on_execute/#on_response" do
context "when the user has no aliases" do
it "informs the user" do
execute!
latest_message.tap do |embed|
expect(embed.title).to eq("My aliases")
expect(embed.description).to eq(
"You do not have any aliases, yet. *Aliases can be managed from the [player dashboard](https://esmbot.com/users/#{user.discord_id}/edit#id_aliases)*"
)
end
end
end
context "when the user has server aliases" do
let!(:user_alias) { create(:user_alias, user: user, server: server) }
it "shows the server aliases in a table" do
execute!
latest_message.tap do |embed|
expect(embed.title).to eq("My aliases")
expect(embed.description).to include(
user_alias.value,
server.server_id,
server.server_name,
"Aliases can be managed"
)
expect(embed.description).not_to include("Communities")
end
end
end
context "when the user has community aliases" do
let!(:user_alias) { create(:user_alias, user: user, community: community) }
it "shows the community aliases in a table" do
execute!
latest_message.tap do |embed|
expect(embed.title).to eq("My aliases")
expect(embed.description).to include(
user_alias.value,
community.community_id,
community.community_name,
"Aliases can be managed"
)
expect(embed.description).not_to include("Servers")
end
end
end
context "when the user has server and community aliases" do
let!(:community_alias) { create(:user_alias, user: user, community: community) }
let!(:server_alias) { create(:user_alias, user: user, server: server) }
it "shows both the community and server aliases in separate tables" do
execute!
latest_message.tap do |embed|
expect(embed.title).to eq("My aliases")
expect(embed.description).to include(
"Community Aliases",
community_alias.value,
community.community_id,
community.community_name,
"Server Aliases",
server_alias.value,
server.server_id,
server.server_name,
"Aliases can be managed"
)
end
end
end
end
end