docbrown/spec/requests/devices_spec.rb
Anna Buianova 455399bdba
Rubocop fixes (#18461)
* Rubocop fixes

* Fixed most Capybara/SpecificMatcher violations

* Moved flash notice texts to locales
2022-09-16 15:25:48 +03:00

93 lines
2.4 KiB
Ruby

require "rails_helper"
RSpec.describe "Devices", type: :request do
let(:user) { create(:user) }
let(:consumer_app) { create(:consumer_app) }
before do
sign_in user
end
describe "POST /users/devices" do
context "when device persisted" do
it "increases device count" do
post devices_path, params: {
token: "123",
platform: "ios",
app_bundle: consumer_app.app_bundle
}
expect(user.devices.count).to eq(1)
expect(response).to have_http_status(:created)
end
end
context "when device not persisted" do
let(:params) do
{
token: "123",
platform: "unknown",
app_bundle: consumer_app.app_bundle
}
end
it "does not increase device count" do
post devices_path, params: params
expect(user.devices.count).to eq(0)
end
it "returns an error" do
post devices_path, params: params
expect(response).to have_http_status(:unprocessable_entity)
expect(response.body).to include("error")
end
end
end
describe "DELETE /users/devices/:id" do
let(:device) { create(:device, user: user) }
context "when device not found" do
let(:incomplete_params) do
{
platform: device.platform,
app_bundle: device.consumer_app.app_bundle
}
end
it "returns an error" do
delete device_path(123)
expect(response).to have_http_status(:not_found)
expect(response.parsed_body["error"]).to eq("Not Found")
expect(response.parsed_body["status"]).to eq(404)
end
it "return an error if device id doesn't match params" do
delete device_path(123), params: incomplete_params
expect(response).to have_http_status(:not_found)
expect(response.parsed_body["error"]).to eq("Not Found")
expect(response.parsed_body["status"]).to eq(404)
end
end
context "when device deleted" do
let(:params) do
{
token: device.token,
platform: device.platform,
app_bundle: device.consumer_app.app_bundle
}
end
it "deletes the device" do
delete device_path(device.user.id), params: params
expect(user.devices.count).to eq(0)
expect(response).to have_http_status(:no_content)
expect(Device.find_by(id: device.id)).to be_nil
end
end
end
end