Add track type to admin dashboard

This commit is contained in:
Rishabh Singh 2019-06-22 19:23:40 +05:30
parent 770a63e15c
commit abc59bb3d7
18 changed files with 252 additions and 2 deletions

View file

@ -0,0 +1,9 @@
# frozen_string_literal: true
FactoryBot.define do
factory :track_type do
title { 'Example Track Type' }
description { 'test description' }
program
end
end

View file

@ -42,6 +42,7 @@ feature 'Has correct abilities' do
expect(page).to have_link('Events', href: "/admin/conferences/#{conference.short_title}/program/events")
expect(page).to have_link('Tracks', href: "/admin/conferences/#{conference.short_title}/program/tracks")
expect(page).to have_link('Event Types', href: "/admin/conferences/#{conference.short_title}/program/event_types")
expect(page).to have_link('Track Types', href: "/admin/conferences/#{conference.short_title}/program/track_types")
expect(page).to have_link('Difficulty Levels', href: "/admin/conferences/#{conference.short_title}/program/difficulty_levels")
expect(page).to have_link('Schedules', href: "/admin/conferences/#{conference.short_title}/schedules")
expect(page).to have_link('Reports', href: "/admin/conferences/#{conference.short_title}/program/reports")
@ -167,6 +168,16 @@ feature 'Has correct abilities' do
visit edit_admin_conference_program_event_type_path(conference.short_title, conference.program.event_types.first)
expect(current_path).to eq(edit_admin_conference_program_event_type_path(conference.short_title, conference.program.event_types.first))
visit admin_conference_program_track_types_path(conference.short_title)
expect(current_path).to eq(admin_conference_program_track_types_path(conference.short_title))
visit new_admin_conference_program_track_type_path(conference.short_title)
expect(current_path).to eq(new_admin_conference_program_track_type_path(conference.short_title))
create(:track_type, program: conference.program)
visit edit_admin_conference_program_track_type_path(conference.short_title, conference.program.track_types.first)
expect(current_path).to eq(edit_admin_conference_program_track_type_path(conference.short_title, conference.program.track_types.first))
visit admin_conference_program_difficulty_levels_path(conference.short_title)
expect(current_path).to eq(admin_conference_program_difficulty_levels_path(conference.short_title))

View file

@ -45,6 +45,7 @@ feature 'Has correct abilities' do
expect(page).to have_link('Events', href: "/admin/conferences/#{conference.short_title}/program/events")
expect(page).to have_link('Tracks', href: "/admin/conferences/#{conference.short_title}/program/tracks")
expect(page).to have_link('Event Types', href: "/admin/conferences/#{conference.short_title}/program/event_types")
expect(page).to have_link('Track Types', href: "/admin/conferences/#{conference.short_title}/program/track_types")
expect(page).to have_link('Difficulty Levels', href: "/admin/conferences/#{conference.short_title}/program/difficulty_levels")
expect(page).to have_link('Schedules', href: "/admin/conferences/#{conference.short_title}/schedules")
expect(page).to have_link('Reports', href: "/admin/conferences/#{conference.short_title}/program/reports")
@ -173,6 +174,16 @@ feature 'Has correct abilities' do
visit edit_admin_conference_program_event_type_path(conference.short_title, conference.program.event_types.first)
expect(current_path).to eq(edit_admin_conference_program_event_type_path(conference.short_title, conference.program.event_types.first))
visit admin_conference_program_track_types_path(conference.short_title)
expect(current_path).to eq(admin_conference_program_track_types_path(conference.short_title))
visit new_admin_conference_program_track_type_path(conference.short_title)
expect(current_path).to eq(new_admin_conference_program_track_type_path(conference.short_title))
create(:track_type, program: conference.program)
visit edit_admin_conference_program_track_type_path(conference.short_title, conference.program.track_types.first)
expect(current_path).to eq(edit_admin_conference_program_track_type_path(conference.short_title, conference.program.track_types.first))
visit admin_conference_program_difficulty_levels_path(conference.short_title)
expect(current_path).to eq(admin_conference_program_difficulty_levels_path(conference.short_title))

View file

@ -0,0 +1,49 @@
# frozen_string_literal: true
require 'spec_helper'
feature TrackType do
let!(:conference) { create(:conference) }
let!(:organizer) { create(:organizer, resource: conference) }
shared_examples 'track types' do
scenario 'adds and updates track type', feature: true do
sign_in organizer
visit admin_conference_program_track_types_path(
conference_id: conference.short_title)
# Add event type
click_link 'Add Track Type'
fill_in 'track_type_title', with: '2 day devroom'
fill_in 'track_type_description', with: 'Devroom that spans two days'
click_button 'Create Track type'
page.find('#flash')
# Validations
expect(flash).to eq('Track type successfully created.')
within('table#track-types') do
expect(page.has_content?('2 day devroom')).to be true
expect(page.has_content?('Devroom that spans two days')).to be true
expect(page.assert_selector('tr', count: 1)).to be true
end
# Remove track type
within('tr', text: '2 day devroom') do
click_link 'Delete'
end
page.find('#flash')
expect(flash).to eq('Track type successfully deleted.')
within('table#track-types') do
expect(page.assert_selector('tr', count: 0)).to be true
expect(page.has_content?('2 day devroom')).to be false
end
end
end
describe 'organizer' do
it_behaves_like 'track types'
end
end

View file

@ -0,0 +1,21 @@
# frozen_string_literal: true
require 'spec_helper'
describe TrackType do
let(:conference) { create(:conference) }
let(:track_type) { create(:track_type, program: conference.program) }
describe 'association' do
it { is_expected.to belong_to :program }
end
describe 'validation' do
it 'has a valid factory' do
expect(build(:track_type)).to be_valid
end
it { is_expected.to validate_presence_of(:title) }
end
end