Skip to content

Commit

Permalink
update manage_submission routes, DB migration text col
Browse files Browse the repository at this point in the history
  • Loading branch information
stepchud committed Nov 11, 2024
1 parent adcfae4 commit 6d3e79a
Show file tree
Hide file tree
Showing 16 changed files with 67 additions and 54 deletions.
21 changes: 21 additions & 0 deletions app/controllers/manage_phases_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# frozen_string_literal: true

class ManagePhasesController < ApplicationController
before_action -> { authorize_user('challenge_manager') }
before_action :set_phase, except: [:index]

def index
@challenges = current_user.challenge_manager_challenges
end

def submissions
@submissions = @phase.submissions
end

private

def set_phase
@phase = Phase.where(challenge: current_user.challenge_manager_challenges).find(params[:id])
@challenge = @phase.challenge
end
end
23 changes: 8 additions & 15 deletions app/controllers/manage_submissions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,11 @@

class ManageSubmissionsController < ApplicationController
before_action -> { authorize_user('challenge_manager') }
def index
@challenges = current_user.challenge_manager_challenges
end
before_action :set_submission, only: [:show, :update]

def show
@challenge = current_user.challenge_manager_challenges.find(params[:challenge_id])
@phase = @challenge.phases.find(params[:phase_id])
@submission = @phase.submissions.find(params[:id])
end
def show; end

def update
@submission = Submission.find(params[:id])

if @submission.update!(submission_params)
flash.now[:success] = I18n.t("comments_saved")
render :show, submission: @submission
Expand All @@ -23,13 +15,14 @@ def update
end
end

def by_challenge_phase
@challenge = current_user.challenge_manager_challenges.find(params[:challenge_id])
@phase = @challenge.phases.find(params[:id])
@submissions = @phase.submissions
end
private

def submission_params
params.require(:submission).permit(:comments)
end

# User access enforced through their assigned challenge_manager_challenges
def set_submission
@submission = Submission.where(challenge: current_user.challenge_manager_challenges).find(params[:id])
end
end
2 changes: 1 addition & 1 deletion app/helpers/dashboard_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ def dashboard_cards_by_role
challenge_manager: [
{ image_path: 'emoji_events', href: Rails.configuration.phx_interop[:phx_uri],
alt: 'challenges', title: 'Challenges', subtitle: 'Create and manage challenges.' },
{ image_path: 'star_half', href: 'manage_submissions',
{ image_path: 'star_half', href: 'manage_phases',
alt: 'submissions and evaluations', title: 'Submissions & Evaluations', subtitle:
'Manage submissions, evaluations, and evaluators.' },
{ image_path: 'check_circle_outline', href: 'evaluation_forms',
Expand Down
7 changes: 0 additions & 7 deletions app/helpers/manage_submissions_helper.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
# frozen_string_literal: true

module ManageSubmissionsHelper
def eligible_for_evaluation?(submission)
submission.judging_status.in?(%w[selected winner])
end

def selected_to_advance?(submission)
submission.judging_status.in?(%w[winner])
end
end
8 changes: 8 additions & 0 deletions app/models/submission.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,12 @@ class Submission < ApplicationRecord

# Validations
validates :title, presence: true

def eligible_for_evaluation?
selected? or winner?
end

def selected_to_advance?
winner?
end
end
2 changes: 1 addition & 1 deletion app/views/layouts/_utility_menu.erb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<%= utility_menu_link('grid_view', dashboard_path, 'dashboard', 'Dashboard') %>
<% if current_user.role == "challenge_manager" %>
<%= utility_menu_link('emoji_events', Rails.configuration.phx_interop[:phx_uri], 'challenges', 'Challenges') %>
<%= utility_menu_link('star_half', manage_submissions_path, 'Manage Submissions and Evaluations', 'Submissions & Evaluations') %>
<%= utility_menu_link('star_half', manage_phases_path, 'Manage Submissions and Evaluations', 'Submissions & Evaluations') %>
<%= utility_menu_link('check_circle_outline', evaluation_forms_path, 'Evaluation Forms', 'Evaluation Forms') %>
<% end %>
<% if current_user.role == "evaluator" %>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
Manage Evaluators
</button>
<% unless phase.submissions.empty? %>
<%= link_to(challenge_manage_submission_path(challenge, phase)) do %>
<%= link_to(submissions_manage_phase_path(phase)) do %>
<button class="usa-button font-body-2xs text-no-wrap">
View Submissions
</button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
</th>
<td data-label="Eligible for Evaluation">
<div class="display-flex flex-align-center">
<% if eligible_for_evaluation?(submission) %>
<% if submission.eligible_for_evaluation? %>
<input type="checkbox" disabled checked class="display-none mobile-lg:display-block">
<div class="mobile-lg:display-none">
<%= image_tag(
Expand All @@ -41,7 +41,7 @@
</td>
<td data-label="Selected to Advance">
<div class="display-flex flex-align-center">
<% if selected_to_advance?(submission) %>
<% if submission.selected_to_advance? %>
<input type="checkbox" disabled checked class="display-none mobile-lg:display-block">
<div class="mobile-lg:display-none">
<%= image_tag(
Expand Down Expand Up @@ -72,7 +72,7 @@
</td>
<td>
<div class="display-flex flex-no-wrap grid-row grid-gap-1">
<%= link_to challenge_manage_submission_path(@challenge, submission, phase_id: @phase.id) do %>
<%= link_to manage_submission_path(submission) do %>
<button class="usa-button font-body-2xs text-no-wrap">
View Submission
</button>
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions app/views/manage_submissions/_comment_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<%= form_with(model: @submission, url: challenge_manage_submission_path(@challenge, @submission, phase_id: @phase.id), class: "width-mobile-lg") do |form| %>
<%= form_with(model: @submission, url: manage_submission_path(@submission), class: "width-mobile-lg") do |form| %>
<div class="usa-form-group">
<%= form.label :comments, class: "usa-label" %>
<%= form.label :comments, "Comments and notes:", class: "usa-label" %>
<%= form.text_area :comments, class: "usa-textarea", default: @submission.comments %>
</div>
<button type="submit" name="commit" class="usa-button font-body-2xs text-no-wrap margin-y-2">
Expand Down
10 changes: 4 additions & 6 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@
post 'clone'
end
end
resources :manage_submissions, only: [:index]
resources :challenges, only: [] do
resources :manage_submissions, only: [:show, :update] do
member do
get 'by_challenge_phase'
end
resources :manage_phases, only: [:index] do
member do
get :submissions
end
end
resources :manage_submissions, only: [:index, :show, :update]

# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
# Can be used by load balancers and uptime monitors to verify that the app is live.
Expand Down
2 changes: 1 addition & 1 deletion db/migrate/20241107161811_add_comments_to_submissions.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
class AddCommentsToSubmissions < ActiveRecord::Migration[7.2]
def change
add_column :submissions, :comments, :string, null: true
add_column :submissions, :comments, :text, limit: 3000, null: true
end
end
4 changes: 2 additions & 2 deletions db/structure.sql
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,7 @@ CREATE TABLE public.oban_jobs (
attempted_by text[],
discarded_at timestamp without time zone,
priority integer DEFAULT 0 NOT NULL,
tags character varying(255)[] DEFAULT ARRAY[]::character varying[],
tags text[] DEFAULT ARRAY[]::text[],
meta jsonb DEFAULT '{}'::jsonb,
cancelled_at timestamp without time zone,
CONSTRAINT attempt_range CHECK (((attempt >= 0) AND (attempt <= max_attempts))),
Expand Down Expand Up @@ -1034,7 +1034,7 @@ CREATE TABLE public.submissions (
description_delta text,
brief_description_delta text,
pdf_reference character varying(255),
comments character varying
comments text
);


Expand Down
24 changes: 12 additions & 12 deletions spec/requests/manage_submissions_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
end

it "redirects to the phoenix app" do
get manage_submissions_path
get manage_phases_path

expect(response).to redirect_to(ENV.fetch("PHOENIX_URI", nil))
end
Expand All @@ -20,7 +20,7 @@
end

it "redirects to the phoenix app" do
get manage_submissions_path
get manage_phases_path

expect(response).to redirect_to(ENV.fetch("PHOENIX_URI", nil))
end
Expand All @@ -32,15 +32,15 @@
before { log_in_user(challenge_user) }

it "renders the index view with the correct header" do
get manage_submissions_path
get manage_phases_path

expect(response).to have_http_status(:success)
expect(response.body).to include("Submissions & Evaluations")
expect(response.body).to include("View challenge submissions")
end

it "renders an empty list" do
get manage_submissions_path
get manage_phases_path

expect(response.body).to include("You currently do not have any challenges.")
end
Expand All @@ -52,7 +52,7 @@
ChallengeManager.create(user: challenge_user, challenge:)
create_evaluation_form(title: "Frodo", challenge_id: challenge.id, phase_id: phase.id)

get manage_submissions_path
get manage_phases_path
expect(response.body).to include("Turning monster energy into pepto bismol")
expect(response.body).to include("Frodo")
end
Expand All @@ -61,7 +61,7 @@
challenge = create_challenge(user: challenge_user, title: "Boston Tea Party Cleanup")
phase = create_phase(challenge_id: challenge.id)

get by_challenge_phase_challenge_manage_submission_path(challenge, phase)
get submissions_manage_phase_path(phase)
expect(response.body).to include("Boston Tea Party Cleanup")

expect(response.body).to include("This challenge phase does not currently have any submissions.")
Expand All @@ -72,7 +72,7 @@
phase = create_phase(challenge_id: challenge.id)
submission = create(:submission, challenge: challenge, phase: phase)

get by_challenge_phase_challenge_manage_submission_path(challenge, phase)
get submissions_manage_phase_path(phase)
expect(response.body).to include("Boston Tea Party Cleanup")
expect(response.body).to include(submission.id.to_s)
end
Expand All @@ -81,7 +81,7 @@
challenge = create_challenge(title: "Star Spangled Banister")
phase = create_phase(challenge_id: challenge.id)

get by_challenge_phase_challenge_manage_submission_path(challenge, phase)
get submissions_manage_phase_path(phase)
expect(response).to have_http_status(:not_found)
end

Expand All @@ -90,7 +90,7 @@
phase = create_phase(challenge_id: challenge.id)
submission = create(:submission, challenge: phase.challenge, brief_description: "This submission has legs.")

get challenge_manage_submission_path(challenge, submission, phase_id: phase.id)
get manage_submission_path(submission)
expect(response.body).to include(submission.id.to_s)
expect(response.body).to include(submission.brief_description)
end
Expand All @@ -100,7 +100,7 @@
phase = create_phase(challenge_id: challenge.id)
submission = create(:submission, challenge: phase.challenge, brief_description: "This submission has teeth.")

get challenge_manage_submission_path(challenge, submission, phase_id: phase.id)
get manage_submission_path(submission)
expect(response).to have_http_status(:not_found)
end
end
Expand All @@ -111,7 +111,7 @@
end

it "redirects to the dashboard" do
get manage_submissions_path
get manage_phases_path

expect(response).to redirect_to(dashboard_path)
end
Expand All @@ -123,7 +123,7 @@
end

it "redirects to the phoenix app" do
get manage_submissions_path
get manage_phases_path

expect(response).to redirect_to(ENV.fetch("PHOENIX_URI", nil))
end
Expand Down
6 changes: 3 additions & 3 deletions spec/system/manage_submissions_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
let(:user) { create_user(role: "challenge_manager") }

it "manage submissions index page is accessible with no challenges" do
visit manage_submissions_path
visit manage_phases_path
expect(user.role).to eq("challenge_manager")
expect(page).to(be_axe_clean)
end
Expand All @@ -22,7 +22,7 @@
challenge = create_challenge(user: user, title: "Boston Tea Party Cleanup")
create_phase(challenge_id: challenge.id)

visit manage_submissions_path
visit manage_phases_path
expect(user.role).to eq("challenge_manager")
expect(page).to have_content("Boston Tea Party Cleanup")
expect(page).to(be_axe_clean)
Expand All @@ -32,7 +32,7 @@
challenge = create_challenge(user: user, title: "Boston Tea Party Cleanup")
phase = create_phase(challenge_id: challenge.id)

visit by_challenge_phase_challenge_manage_submission_path(challenge, phase)
visit submissions_manage_phase_path(phase)
expect(user.role).to eq("challenge_manager")
expect(page).to have_content("Boston Tea Party Cleanup")
expect(page).to(be_axe_clean)
Expand Down

0 comments on commit 6d3e79a

Please sign in to comment.