From c47fb955cf61e6c0eb8bfb31711d71cf89ef7be1 Mon Sep 17 00:00:00 2001 From: "nedim.uka" Date: Tue, 19 Oct 2021 18:10:20 +0200 Subject: [PATCH] Added device jobs model --- app/controllers/device_jobs_controller.rb | 51 +++++++++++++++++++ app/models/device_job.rb | 2 + config/routes.rb | 1 + .../20211019160051_create_device_jobs.rb | 14 +++++ .../device_jobs_controller_test.rb | 38 ++++++++++++++ test/fixtures/device_jobs.yml | 15 ++++++ test/models/device_job_test.rb | 7 +++ 7 files changed, 128 insertions(+) create mode 100644 app/controllers/device_jobs_controller.rb create mode 100644 app/models/device_job.rb create mode 100644 db/migrate/20211019160051_create_device_jobs.rb create mode 100644 test/controllers/device_jobs_controller_test.rb create mode 100644 test/fixtures/device_jobs.yml create mode 100644 test/models/device_job_test.rb diff --git a/app/controllers/device_jobs_controller.rb b/app/controllers/device_jobs_controller.rb new file mode 100644 index 0000000..14dab8d --- /dev/null +++ b/app/controllers/device_jobs_controller.rb @@ -0,0 +1,51 @@ +class DeviceJobsController < ApplicationController + before_action :set_device_job, only: [:show, :update, :destroy] + + # GET /device_jobs + def index + @device_jobs = DeviceJob.all + + render json: @device_jobs + end + + # GET /device_jobs/1 + def show + render json: @device_job + end + + # POST /device_jobs + def create + @device_job = DeviceJob.new(device_job_params) + + if @device_job.save + render json: @device_job, status: :created, location: @device_job + else + render json: @device_job.errors, status: :unprocessable_entity + end + end + + # PATCH/PUT /device_jobs/1 + def update + if @device_job.update(device_job_params) + render json: @device_job + else + render json: @device_job.errors, status: :unprocessable_entity + end + end + + # DELETE /device_jobs/1 + def destroy + @device_job.destroy + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_device_job + @device_job = DeviceJob.find(params[:id]) + end + + # Only allow a list of trusted parameters through. + def device_job_params + params.require(:device_job).permit(:references, :references, :id, :job_id, :device_id) + end +end diff --git a/app/models/device_job.rb b/app/models/device_job.rb new file mode 100644 index 0000000..98d460e --- /dev/null +++ b/app/models/device_job.rb @@ -0,0 +1,2 @@ +class DeviceJob < ApplicationRecord +end diff --git a/config/routes.rb b/config/routes.rb index c104e09..9558992 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,5 @@ Rails.application.routes.draw do + resources :device_jobs resources :devices resources :jobs # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html diff --git a/db/migrate/20211019160051_create_device_jobs.rb b/db/migrate/20211019160051_create_device_jobs.rb new file mode 100644 index 0000000..0727a47 --- /dev/null +++ b/db/migrate/20211019160051_create_device_jobs.rb @@ -0,0 +1,14 @@ +class CreateDeviceJobs < ActiveRecord::Migration[6.1] + def change + create_table :device_jobs do |t| + t.Jobs :references + t.Devices :references + t.primary_key :id + t.integer :job_id + t.integer :device_id + + t.timestamps + add_index :device_jobs_index, [:job_id, :device_id] + end + end +end diff --git a/test/controllers/device_jobs_controller_test.rb b/test/controllers/device_jobs_controller_test.rb new file mode 100644 index 0000000..d291496 --- /dev/null +++ b/test/controllers/device_jobs_controller_test.rb @@ -0,0 +1,38 @@ +require "test_helper" + +class DeviceJobsControllerTest < ActionDispatch::IntegrationTest + setup do + @device_job = device_jobs(:one) + end + + test "should get index" do + get device_jobs_url, as: :json + assert_response :success + end + + test "should create device_job" do + assert_difference('DeviceJob.count') do + post device_jobs_url, params: { device_job: { device_id: @device_job.device_id, id: @device_job.id, job_id: @device_job.job_id, references: @device_job.references } }, as: :json + end + + assert_response 201 + end + + test "should show device_job" do + get device_job_url(@device_job), as: :json + assert_response :success + end + + test "should update device_job" do + patch device_job_url(@device_job), params: { device_job: { device_id: @device_job.device_id, id: @device_job.id, job_id: @device_job.job_id, references: @device_job.references } }, as: :json + assert_response 200 + end + + test "should destroy device_job" do + assert_difference('DeviceJob.count', -1) do + delete device_job_url(@device_job), as: :json + end + + assert_response 204 + end +end diff --git a/test/fixtures/device_jobs.yml b/test/fixtures/device_jobs.yml new file mode 100644 index 0000000..5226f66 --- /dev/null +++ b/test/fixtures/device_jobs.yml @@ -0,0 +1,15 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + references: + references: + id: + job_id: 1 + device_id: 1 + +two: + references: + references: + id: + job_id: 1 + device_id: 1 diff --git a/test/models/device_job_test.rb b/test/models/device_job_test.rb new file mode 100644 index 0000000..590c1f8 --- /dev/null +++ b/test/models/device_job_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class DeviceJobTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end