Add relevance field for track requests

The requester can now provide more info about the track and himself
This commit is contained in:
AEtherC0r3 2017-07-26 14:54:10 +03:00 committed by Stella Rouzi
parent 3d250ecf75
commit 2ff4c6d6b2
10 changed files with 40 additions and 5 deletions

View file

@ -53,7 +53,7 @@ class TracksController < ApplicationController
private
def track_params
params.require(:track).permit(:name, :description, :color, :short_name, :start_date, :end_date)
params.require(:track).permit(:name, :description, :color, :short_name, :start_date, :end_date, :relevance)
end
def update_state(transition, notice)

View file

@ -27,6 +27,7 @@ class Track < ActiveRecord::Base
validates :start_date, presence: true, if: :self_organized_and_accepted_or_confirmed?
validates :end_date, presence: true, if: :self_organized_and_accepted_or_confirmed?
validates :room, presence: true, if: :self_organized_and_accepted_or_confirmed?
validates :relevance, presence: true, if: :self_organized?
validate :valid_dates
validate :valid_room, if: :self_organized_and_accepted_or_confirmed?

View file

@ -92,6 +92,12 @@
%b Description
%td
= markdown(@track.description)
- if @track.self_organized?
%tr
%td
%b Relevance
%td
= markdown(@track.relevance)
.tab-pane#events
.col-md-12

View file

@ -16,4 +16,5 @@
= f.input :start_date, as: :string, input_html: { id: 'registration-period-start-datepicker', start_date: @conference.start_date, end_date: @conference.end_date, readonly: 'readonly' }
= f.input :end_date, as: :string, input_html: { id: 'registration-period-end-datepicker', readonly: 'readonly' }
= f.input :description, input_html: {rows: 2, data: { provide: 'markdown-editable' } }, required: true, hint: "This will be public #{markdown_hint}".html_safe
= f.input :relevance, input_html: {rows: 5, data: { provide: 'markdown-editable' } }, required: true, hint: "Please explain here how this track relates to the conference, how you are related to it's content and why we should accept it. #{markdown_hint}".html_safe
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary' }

View file

@ -39,3 +39,7 @@
Description
%dd
= markdown(@track.description)
%dt
Relevance
%dd
= markdown(@track.relevance)

View file

@ -0,0 +1,5 @@
class AddRelevanceToTracks < ActiveRecord::Migration
def change
add_column :tracks, :relevance, :text
end
end

View file

@ -525,6 +525,7 @@ ActiveRecord::Schema.define(version: 20170807092805) do
t.integer "room_id"
t.date "start_date"
t.date "end_date"
t.text "relevance"
end
add_index "tracks", ["room_id"], name: "index_tracks_on_room_id"

View file

@ -60,7 +60,7 @@ describe TracksController do
describe 'POST #create' do
context 'saves successfuly' do
before :each do
post :create, track: attributes_for(:track, short_name: 'my_track'), conference_id: conference.short_title
post :create, track: attributes_for(:track, :self_organized, short_name: 'my_track'), conference_id: conference.short_title
end
it 'redirects to tracks index path' do
@ -86,7 +86,7 @@ describe TracksController do
context 'save fails' do
before :each do
allow_any_instance_of(Track).to receive(:save).and_return(false)
post :create, track: attributes_for(:track, short_name: 'my_track'), conference_id: conference.short_title
post :create, track: attributes_for(:track, :self_organized, short_name: 'my_track'), conference_id: conference.short_title
end
it 'assigns a new track with the correct conference' do
@ -126,7 +126,7 @@ describe TracksController do
describe 'PATCH #update' do
context 'updates successfully' do
before :each do
patch :update, track: attributes_for(:track, color: '#FF0000'),
patch :update, track: attributes_for(:track, :self_organized, color: '#FF0000'),
conference_id: conference.short_title,
id: self_organized_track.short_name
end
@ -152,7 +152,7 @@ describe TracksController do
context 'update fails' do
before :each do
allow_any_instance_of(Track).to receive(:save).and_return(false)
patch :update, track: attributes_for(:track, color: '#FF0000'),
patch :update, track: attributes_for(:track, :self_organized, color: '#FF0000'),
conference_id: conference.short_title,
id: self_organized_track.short_name
end

View file

@ -15,6 +15,7 @@ FactoryGirl.define do
start_date { Date.today }
end_date { Date.today }
room
relevance { Faker::Hipster.paragraph(2) }
end
end
end

View file

@ -48,6 +48,22 @@ describe Track do
it { is_expected.to_not validate_presence_of(:room) }
end
context 'when self_organized? returns true' do
before :each do
allow(subject).to receive(:self_organized?).and_return(true)
end
it { is_expected.to validate_presence_of(:relevance) }
end
context 'when self_organized? returns false' do
before :each do
allow(subject).to receive(:self_organized?).and_return(false)
end
it { is_expected.to_not validate_presence_of(:relevance) }
end
describe '#valid_dates' do
before :each do
@conference = create(:conference, start_date: 1.day.ago, end_date: 2.days.from_now)