Merge pull request #4 from turniere/ticket/TURNIERE-88
Implement MatchController
This commit is contained in:
commit
a045b6c425
2
Gemfile
2
Gemfile
|
|
@ -34,6 +34,8 @@ gem 'devise_token_auth'
|
||||||
|
|
||||||
gem 'rack-cors'
|
gem 'rack-cors'
|
||||||
|
|
||||||
|
gem 'active_model_serializers'
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
||||||
gem 'byebug', platforms: %i[mri mingw x64_mingw]
|
gem 'byebug', platforms: %i[mri mingw x64_mingw]
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,11 @@ GEM
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||||
|
active_model_serializers (0.10.8)
|
||||||
|
actionpack (>= 4.1, < 6)
|
||||||
|
activemodel (>= 4.1, < 6)
|
||||||
|
case_transform (>= 0.2)
|
||||||
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
activejob (5.2.1)
|
activejob (5.2.1)
|
||||||
activesupport (= 5.2.1)
|
activesupport (= 5.2.1)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
|
|
@ -49,6 +54,8 @@ GEM
|
||||||
msgpack (~> 1.0)
|
msgpack (~> 1.0)
|
||||||
builder (3.2.3)
|
builder (3.2.3)
|
||||||
byebug (10.0.2)
|
byebug (10.0.2)
|
||||||
|
case_transform (0.2)
|
||||||
|
activesupport
|
||||||
coderay (1.1.2)
|
coderay (1.1.2)
|
||||||
concurrent-ruby (1.1.3)
|
concurrent-ruby (1.1.3)
|
||||||
coveralls (0.7.1)
|
coveralls (0.7.1)
|
||||||
|
|
@ -90,6 +97,7 @@ GEM
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jaro_winkler (1.5.1)
|
jaro_winkler (1.5.1)
|
||||||
json (2.1.0)
|
json (2.1.0)
|
||||||
|
jsonapi-renderer (0.2.0)
|
||||||
kramdown (1.17.0)
|
kramdown (1.17.0)
|
||||||
listen (3.1.5)
|
listen (3.1.5)
|
||||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||||
|
|
@ -246,6 +254,7 @@ PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
active_model_serializers
|
||||||
bootsnap (>= 1.1.0)
|
bootsnap (>= 1.1.0)
|
||||||
byebug
|
byebug
|
||||||
coveralls
|
coveralls
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class MatchesController < ApplicationController
|
||||||
|
# GET /matches/1
|
||||||
|
def show
|
||||||
|
render json: Match.find(params[:id]), include: ['scores.score', 'scores.team'], status: status
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def match_params
|
||||||
|
ActiveModelSerializers::Deserialization.jsonapi_parse(params, only: [:state])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ApplicationSerializer < ActiveModel::Serializer
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class MatchSerializer < ApplicationSerializer
|
||||||
|
attributes :state
|
||||||
|
|
||||||
|
has_many :scores
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ScoreSerializer < ApplicationSerializer
|
||||||
|
attributes :score
|
||||||
|
|
||||||
|
has_one :team
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class TeamSerializer < ApplicationSerializer
|
||||||
|
attributes :name
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
ActiveModelSerializers.config.adapter = :json_api
|
||||||
|
|
@ -2,4 +2,6 @@
|
||||||
|
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
mount_devise_token_auth_for 'User', at: 'users'
|
mount_devise_token_auth_for 'User', at: 'users'
|
||||||
|
|
||||||
|
resources :matches, only: %i[show]
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe MatchesController, type: :controller do
|
||||||
|
let(:valid_attributes) do
|
||||||
|
skip('Add a hash of attributes valid for your model')
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:invalid_attributes) do
|
||||||
|
skip('Add a hash of attributes invalid for your model')
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:valid_session) { {} }
|
||||||
|
|
||||||
|
before do
|
||||||
|
@match = create(:match)
|
||||||
|
@match.scores = create_pair(:score)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'GET #show' do
|
||||||
|
it 'should return success' do
|
||||||
|
get :show, params: { id: @match.to_param }
|
||||||
|
expect(response).to be_successful
|
||||||
|
expect(response.content_type).to eq('application/json')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should return the correct state' do
|
||||||
|
get :show, params: { id: @match.to_param }
|
||||||
|
body = ActiveModelSerializers::Deserialization.jsonapi_parse(JSON.parse(response.body))
|
||||||
|
expect(body[:state]).to be(@match.state)
|
||||||
|
expect(body[:score_ids]).to eq(@match.scores.map { |score| score.id.to_s })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe MatchesController, type: :routing do
|
||||||
|
describe 'routing' do
|
||||||
|
it 'routes to #show' do
|
||||||
|
expect(get: '/matches/1').to route_to('matches#show', id: '1')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue