Test coverage up

pull/203/head
Rick Carlino 2015-07-10 17:56:09 -05:00
parent df46b9e6a7
commit dd9bf1b327
7 changed files with 57 additions and 6 deletions

View File

@ -25,7 +25,7 @@ private
def null_device
@null_device ||= NullDevice.new(name: 'null_device',
uuid: '-',
uuid: '-',
token: '-')
end

View File

@ -12,10 +12,7 @@ module Api
# POST /api/device
def create
# TODO: Make a service that deletes old devices when they become 'orphans'
if current_user.update_attributes(device: Device.create(device_params))
render json: current_device
end
mutate Devices::Create.run(device_params, user: current_user)
end
# PATCH/PUT /api/device
@ -29,6 +26,7 @@ module Api
# DELETE /api/devices/1
def destroy
# TODO: Make a service that deletes old devices when they become 'orphans'
if current_device.users.include?(current_user)
current_device.destroy
render nothing: true, status: 204

View File

@ -8,7 +8,7 @@ class NullDevice < Device
end
def no(method)
raise 'Cant call #{method} on a NullDevice'
raise "Cant call #{method} on a NullDevice"
end
def if_not_null

View File

@ -0,0 +1,21 @@
module Devices
class Create < Mutations::Command
using MongoidRefinements
required do
model :user, class: User
end
optional do
string :name, default: 'Not set.'
string :uuid, default: 'Not set.'
string :token, default: 'Not set.'
end
def execute
create Device, inputs.except(:user) do |dev|
user.update_attributes(device: dev)
end
end
end
end

View File

@ -4,6 +4,15 @@ describe Api::DevicesController do
include Devise::TestHelpers
let(:user) { FactoryGirl.create(:user) }
describe '#show' do
it 'handles deviceless requests' do
user.update_attributes(device: nil)
sign_in user
get :show, {}, format: :json
expect(json[:error]).to eq("add device to account")
expect(response.status).to eq(404)
end
end
end

View File

@ -20,5 +20,17 @@ describe Api::DevicesController do
expect(device.name).to eq(fake_name)
expect(response.status).to eq(200)
end
it 'creates a new device if you dont have one' do
user.update_attributes(device: nil)
sign_in user
fake_name = Faker::Name.name
put :update, {}, format: :json
user.reload
expect(user.device).to be_kind_of(Device)
[:uuid, :token, :name].each do |key|
expect(user.device[key]).to eq('Not set.')
end
end
end
end

View File

@ -0,0 +1,11 @@
# require 'spec_helper'
describe NullDevice do
let(:device) { NullDevice.new }
it 'indicates next_occurrence' do
[:save, :save!].each do |meth| # not even once.
expect { device.send(meth) }.to raise_error(
"Cant call #{meth} on a NullDevice")
end
end
end