Add test for DevicesController (#12985)
* Add test for DevicesController * Remove defensive calls
This commit is contained in:
parent
dd988c0857
commit
7f164c2da3
2 changed files with 69 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
66
spec/requests/devices_spec.rb
Normal file
66
spec/requests/devices_spec.rb
Normal 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
|
||||
Loading…
Add table
Reference in a new issue