SQL Conversion complete. Needs tweaks still
parent
00d7f56643
commit
d9fa96b46b
|
@ -8,7 +8,6 @@ module Api
|
|||
current_device
|
||||
.if_null { create }
|
||||
.if_not_null { render json: current_device }
|
||||
# .if_null { render json: {error: "add device to account"}, status: 404 }
|
||||
end
|
||||
|
||||
# POST /api/device
|
||||
|
@ -25,10 +24,8 @@ module Api
|
|||
|
||||
# DELETE /api/devices/1
|
||||
def destroy
|
||||
if current_device.users.include?(current_user)
|
||||
current_device.destroy
|
||||
render nothing: true, status: 204
|
||||
end
|
||||
Devices::Destroy.run!(user: current_user, device: current_device)
|
||||
render nothing: true, status: 204
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -12,7 +12,6 @@ module Api
|
|||
end
|
||||
|
||||
def create
|
||||
#binding.pry
|
||||
mutate Sequences::Create.run(params, device: current_device)
|
||||
end
|
||||
|
||||
|
|
|
@ -5,18 +5,4 @@ class User < ActiveRecord::Base
|
|||
devise :database_authenticatable, :registerable, :recoverable, :rememberable,
|
||||
:trackable, :validatable
|
||||
|
||||
# # Lazy load a device into the account. Prevents weird edge cases, such as
|
||||
# # device === nil on first login.
|
||||
# TODO THIS NEEDS TO NOT EXIST!!!
|
||||
def device
|
||||
# Device.where(id: self[:device]).first || Devices::Create.run!(user: self,
|
||||
# uuid: SecureRandom.uuid,
|
||||
# token: SecureRandom.hex)
|
||||
super || Devices::Create.run!(user: self, uuid: SecureRandom.uuid, token: SecureRandom.hex)
|
||||
end
|
||||
|
||||
# def device_id
|
||||
# self[:device_id] || device.id
|
||||
# end
|
||||
|
||||
end
|
||||
|
|
|
@ -4,24 +4,32 @@ module Devices
|
|||
|
||||
required do
|
||||
model :user, class: User
|
||||
string :uuid
|
||||
string :token
|
||||
end
|
||||
|
||||
optional do
|
||||
string :name, default: nil
|
||||
string :uuid
|
||||
string :token
|
||||
string :name
|
||||
end
|
||||
|
||||
def execute
|
||||
inputs["name"] ||= Haikunator.haikunate(9999)
|
||||
dev = Device.find_or_initialize_by(uuid: uuid)
|
||||
merge_default_values
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
dev.update_attributes!(inputs.except(:user))
|
||||
user.update_attributes!(device_id: dev.id)
|
||||
end
|
||||
device.update_attributes(inputs.except(:user))
|
||||
user.update_attributes(device_id: device.id)
|
||||
|
||||
dev
|
||||
device
|
||||
end
|
||||
private
|
||||
|
||||
def merge_default_values
|
||||
inputs[:uuid] ||= SecureRandom.uuid
|
||||
inputs[:token] ||= SecureRandom.hex
|
||||
inputs[:name] ||= Haikunator.haikunate(9999)
|
||||
end
|
||||
|
||||
def device
|
||||
@device ||= Device.find_by(uuid: uuid) || Device.new(uuid: uuid)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
module Devices
|
||||
class Destroy < Mutations::Command
|
||||
required do
|
||||
model :user, class: User
|
||||
model :device, class: Device
|
||||
end
|
||||
|
||||
def execute
|
||||
ActiveRecord::Base.transaction do
|
||||
user.update_attributes!(device: Devices::Create.run!(user: user))
|
||||
device.destroy! if device.reload.users.count < 1
|
||||
end
|
||||
true
|
||||
end
|
||||
end
|
||||
end
|
|
@ -20,8 +20,6 @@ module Schedules
|
|||
create(Schedule, inputs) do |sched|
|
||||
sched.next_time = sched.calculate_next_occurence
|
||||
end
|
||||
rescue Exception => e
|
||||
binding.pry
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,6 +21,8 @@ module Users
|
|||
password_confirmation: password_confirmation,
|
||||
name: name)
|
||||
|
||||
device = Devices::Create.run!(user: resp[:user])
|
||||
|
||||
resp.merge!(Auth::CreateToken.run!(email: email,
|
||||
password: password,
|
||||
host: "http://localhost:3000"))
|
||||
|
|
|
@ -6,8 +6,8 @@ describe Api::DevicesController do
|
|||
|
||||
describe '#create' do
|
||||
|
||||
let(:user) { FactoryGirl.create(:user) }
|
||||
let(:user2) { FactoryGirl.create(:user) }
|
||||
let!(:user) { FactoryGirl.create(:user) }
|
||||
let!(:user2) { FactoryGirl.create(:user) }
|
||||
|
||||
it 'creates a new device for a user' do
|
||||
sign_in user
|
||||
|
@ -23,12 +23,11 @@ describe Api::DevicesController do
|
|||
it 'shares devices between two users' do
|
||||
bot = user.device
|
||||
sign_in user2
|
||||
params = {name: 'Frank', uuid: bot.uuid, token: bot.token}
|
||||
params = {name: 'QQQ', uuid: bot.uuid, token: bot.token}
|
||||
post :create, params
|
||||
user.reload
|
||||
user2.reload
|
||||
binding.pry
|
||||
expect(user.device.id).to eq(user2.device.id)
|
||||
expect(user.reload.device.reload.name).to eq("QQQ")
|
||||
expect(user2.reload.device.reload.name).to eq("QQQ")
|
||||
expect(user.device_id).to eq(user2.device_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -19,7 +19,6 @@ describe Api::SchedulesController do
|
|||
.map(&:id)
|
||||
.sort
|
||||
get :index
|
||||
#binding.pry
|
||||
expect(response.status).to eq(200)
|
||||
expect(json.length).to eq(2)
|
||||
expect(json.map { |s| s[:id] }.sort).to eq(schedule_ids)
|
||||
|
|
|
@ -3,8 +3,8 @@ require 'securerandom'
|
|||
|
||||
FactoryGirl.define do
|
||||
factory :device do
|
||||
name Faker::Internet.user_name
|
||||
uuid SecureRandom.uuid
|
||||
token SecureRandom.urlsafe_base64
|
||||
name { Faker::Internet.user_name }
|
||||
uuid { SecureRandom.uuid }
|
||||
token { SecureRandom.urlsafe_base64 }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,6 +6,6 @@ FactoryGirl.define do
|
|||
name { Faker::Name.name }
|
||||
email { Faker::Internet.email }
|
||||
password { Faker::Internet.password(8) }
|
||||
after(:create) { |user| user.device ||= FactoryGirl.create(:device) }
|
||||
after(:create) { |user| user.device ||= Devices::Create.run!(user: resp[:user]) }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -50,7 +50,6 @@ RSpec.configure do |config|
|
|||
end
|
||||
|
||||
config.after(:suite) do
|
||||
ActiveRecord::Base.subclasses.map(&:delete_all)
|
||||
SmarfDoc.finish!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue