Mark track state as not null and add default value

The regular tracks are marked as 'confirmed'
This commit is contained in:
AEtherC0r3 2017-07-15 19:55:45 +03:00 committed by Stella Rouzi
parent fd93b04f16
commit 0f154d07c9
8 changed files with 32 additions and 13 deletions

View file

@ -19,6 +19,7 @@ module Admin
def create
@track = @program.tracks.new(track_params)
@track.state = 'confirmed'
if @track.save
redirect_to admin_conference_program_tracks_path(conference_id: @conference.short_title),
notice: 'Track successfully created.'

View file

@ -18,7 +18,6 @@ class TracksController < ApplicationController
def create
@track = @program.tracks.new(track_params)
@track.submitter = current_user
@track.state = 'new'
@track.cfp_active = false
if @track.save
redirect_to conference_program_tracks_path(conference_id: @conference.short_title),

View file

@ -25,10 +25,10 @@ class Track < ActiveRecord::Base
inclusion: { in: %w(new to_accept accepted confirmed to_reject rejected canceled withdrawn) },
if: :self_organized?
validates :cfp_active, inclusion: { in: [true, false] }, if: :self_organized?
validates :start_date, presence: true, if: :accepted_or_confirmed?
validates :end_date, presence: true, if: :accepted_or_confirmed?
validates :room, presence: true, if: :accepted_or_confirmed?
validate :valid_dates, if: :accepted_or_confirmed?
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?
validate :valid_dates, if: :self_organized_and_accepted_or_confirmed?
before_validation :capitalize_color
@ -129,12 +129,12 @@ class Track < ActiveRecord::Base
end
##
# Checks if the track is accepted or confirmed
# Checks if a self-organized track is accepted or confirmed
# ====Returns
# * +true+ -> If the track's state is 'accepted' or 'confirmed'
# * +false+ -> If the track's state is neither 'accepted' nor 'confirmed'
def accepted_or_confirmed?
accepted? || confirmed?
def self_organized_and_accepted_or_confirmed?
self_organized? && (accepted? || confirmed?)
end
private

View file

@ -42,7 +42,7 @@
- if track.self_organized?
= track.state
- else
N/A
= track.state.humanize
%td
- if track.self_organized?
= check_box_tag "#{@conference.short_title}_#{track.short_name}", track.id, track.cfp_active,

View file

@ -0,0 +1,14 @@
class MakeTrackStateNotNullAndAddDefaultValue < ActiveRecord::Migration
class TmpTrack < ActiveRecord::Base
self.table_name = 'tracks'
end
def change
TmpTrack.where(state: nil).each do |track|
track.state = 'confirmed'
track.save!
end
change_column :tracks, :state, :string, null: false, default: 'new'
end
end

View file

@ -511,15 +511,15 @@ ActiveRecord::Schema.define(version: 20170807092805) do
end
create_table "tracks", force: :cascade do |t|
t.string "guid", null: false
t.string "name", null: false
t.string "guid", null: false
t.string "name", null: false
t.text "description"
t.string "color"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "program_id"
t.string "short_name", null: false
t.string "state"
t.string "short_name", null: false
t.string "state", default: "new", null: false
t.boolean "cfp_active"
t.integer "submitter_id"
t.integer "room_id"

View file

@ -80,6 +80,10 @@ describe Admin::TracksController do
it 'creates new track' do
expect(Track.find(assigns(:track).id)).to be_a Track
end
it 'the new tracks has the correct attributes' do
expect(assigns(:track).state).to eq 'confirmed'
end
end
context 'save fails' do

View file

@ -4,6 +4,7 @@ FactoryGirl.define do
description { Faker::Lorem.sentence }
color { Faker::Color.hex_color }
short_name { SecureRandom.urlsafe_base64(5) }
state 'confirmed'
program
trait :self_organized do