# frozen_string_literal: true
describe ESM::Websocket::Request do
let(:user) { create(:user) }
it "accepts string for command name" do
request = ESM::Websocket::Request.new(
command_name: "testing",
user: nil,
parameters: nil,
channel: nil
)
expect(request).not_to be_nil
expect(request.command_name).to eq("testing")
end
it "accepts ESM::Command for command" do
request = ESM::Websocket::Request.new(
command: ESM::Command::Test::BaseV1.new,
user: nil,
parameters: nil,
channel: nil
)
expect(request).not_to be_nil
expect(request.command_name).to eq("base_v1")
end
it "accepts nil for user" do
request = ESM::Websocket::Request.new(
command_name: "testing",
user: nil,
parameters: nil,
channel: nil
)
expect(request).not_to be_nil
expect(request.user).to be_nil
expect(request.user_info).to eq(["", ""])
end
it "accepts a valid user" do
discord_user = user.discord_user
request = ESM::Websocket::Request.new(
command_name: "testing",
user: discord_user,
parameters: nil,
channel: nil
)
expect(request).not_to be_nil
expect(request.user).not_to be_nil
expect(request.user_info).to eq([discord_user.mention, discord_user.id])
end
describe "#to_s" do
it "is valid" do
params = {
foo: "Foo",
bar: ["Bar"],
baz: false
}
request = create_request(**params)
user = request.user
valid_hash_string = {
"command" => "base_v1",
"commandID" => request.id,
"authorInfo" => [user.mention, user.id],
"parameters" => params
}.to_json
expect(request.to_s).to eq(valid_hash_string)
end
end
describe "#timed_out?" do
it "timed out" do
request = ESM::Websocket::Request.new(command_name: "testing", user: nil, channel: nil, command: nil, parameters: nil, timeout: 0)
expect(request.timed_out?).to be(true)
end
it "didn't time out" do
request = ESM::Websocket::Request.new(command_name: "testing", user: nil, channel: nil, command: nil, parameters: nil)
expect(request.timed_out?).to be(false)
end
end
end