Add test for DevicesController (#12985)

* Add test for DevicesController

* Remove defensive calls
This commit is contained in:
Josh Puetz 2021-03-16 08:33:25 -05:00 committed by GitHub
parent dd988c0857
commit 7f164c2da3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 69 additions and 3 deletions

View file

@ -18,14 +18,14 @@ class DevicesController < ApplicationController
end
def destroy
device = Device.find_by(device_params)
device = Device.find_by(id: params[:id])
unless device
render json: { error: "Not Found", status: 404 }, status: :not_found
return
end
device&.destroy
if device&.destroyed?
device.destroy
if device.destroyed?
head :no_content
else
render json: { error: device.errors_as_sentence }, status: :bad_request

View file

@ -0,0 +1,66 @@
require "rails_helper"
RSpec.describe "Devices", type: :request do
let(:user) { create(:user) }
before do
allow(FeatureFlag).to receive(:enabled?).with(:mobile_notifications).and_return(true)
sign_in user
end
describe "POST /users/devices" do
context "when device persisted" do
it "increases device count" do
post "/users/devices", params: {
token: "123",
platform: "Android",
app_bundle: "hello"
}
expect(user.devices.count).to eq(1)
end
end
context "when device not persisted" do
let(:params) do
{
token: "123",
platform: "unknown",
app_bundle: "hello"
}
end
it "does not increase device count" do
post "/users/devices", params: params
expect(user.devices.count).to eq(0)
end
it "returns an error" do
post "/users/devices", params: params
expect(response.status).to eq(400)
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
it "returns an error" do
delete "/users/devices/123"
expect(response.status).to eq(404)
expect(response.parsed_body["error"]).to eq("Not Found")
expect(response.parsed_body["status"]).to eq(404)
end
end
context "when device deleted" do
it "deletes the device" do
delete "/users/devices/#{device.id}"
expect(user.devices.count).to eq(0)
expect(response.status).to eq(204)
expect(Device.find_by(id: device.id)).to be_nil
end
end
end
end