Skip to content

Commit

Permalink
Feature: Hide live preview input and button (TheOdinProject#3968)
Browse files Browse the repository at this point in the history
Because:
* Some solutions do not accept previews - for example the early Ruby
projects.

This commit:
* If the project does not accept live previews...
  * Hide the live preview input.
  * hide the live preview button
  • Loading branch information
KevinMulhern authored and Mclilzee committed Aug 2, 2023
1 parent 2ae740d commit 250802a
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 10 deletions.
5 changes: 4 additions & 1 deletion app/components/project_submissions/item_component.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@

<div class="flex flex-row md:items-center">
<%= link_to 'View code', project_submission.repo_url, target: '_blank', rel: 'noreferrer', class: 'button button--gray font-semibold mr-4', data: { test_id: 'view-code-btn' } %>
<%= link_to 'Live preview', project_submission.live_preview_url, target: '_blank', rel: 'noreferrer', class: 'button button--gray font-semibold mr-4', data: { test_id: 'live-preview-btn' } %>
<% if project_submission.lesson.has_live_preview? %>
<%= link_to 'Live preview', project_submission.live_preview_url, target: '_blank', rel: 'noreferrer', class: 'button button--gray font-semibold mr-4', data: { test_id: 'live-preview-btn' } %>
<% end %>

<div class="flex-none absolute top-7 right-0 md:relative md:top-auto md:right-auto" data-controller="visibility" data-action="visibility:click:outside->visibility#off" data-visibility-visible-value="false">
<button type="button" data-action="click->visibility#toggle" data-test-id="submission-action-menu-btn" class="-m-2.5 block p-2.5 text-gray-500 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100" id="options-menu-0-button" aria-expanded="false" aria-haspopup="true">
Expand Down
14 changes: 8 additions & 6 deletions app/views/lessons/v2_project_submissions/_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
<% end %>
</div>

<div>
<%= form.label :live_preview_url, 'Live preview (optional)' %>
<%= form.text_field :live_preview_url, leading_icon: true, placeholder: 'http://example.com', class: 'text-sm', data: { test_id: 'live-preview-url-field' } do %>
<%= inline_svg_tag 'icons/link.svg', class: 'h-5 w-5 text-gray-400', aria: true, title: 'Project live preview', desc: 'Link icon' %>
<% end %>
</div>
<% if project_submission.lesson.has_live_preview? %>
<div>
<%= form.label :live_preview_url, 'Live preview (optional)' %>
<%= form.text_field :live_preview_url, leading_icon: true, placeholder: 'http://example.com', class: 'text-sm', data: { test_id: 'live-preview-url-field' } do %>
<%= inline_svg_tag 'icons/link.svg', class: 'h-5 w-5 text-gray-400', aria: true, title: 'Project live preview', desc: 'Link icon' %>
<% end %>
</div>
<% end %>

<fieldset class="mt-2">
<legend class="text-sm font-medium leading-6 text-gray-900 dark:text-white">Privacy</legend>
Expand Down
3 changes: 2 additions & 1 deletion spec/support/pages/project_submissions/form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class Form

option :repo_url, default: -> { 'https://github.com/myname/my-project' }
option :live_preview_url, default: -> { 'https://myprojectlivepreview.com' }
option :has_live_preview, default: -> { true }

def self.fill_in_and_submit(**args)
new(**args)
Expand All @@ -22,7 +23,7 @@ def open

def fill_in
find(:test_id, 'repo-url-field').fill_in(with: @repo_url)
find(:test_id, 'live-preview-url-field').fill_in(with: @live_preview_url)
find(:test_id, 'live-preview-url-field').fill_in(with: @live_preview_url) if @has_live_preview
self
end

Expand Down
28 changes: 26 additions & 2 deletions spec/system/v2_lesson_project_submissions/add_submission_spec.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
require 'rails_helper'

RSpec.describe 'Add a Project Submission' do
let(:lesson) { create(:lesson, :project) }

before do
Flipper.enable(:v2_project_submissions)
end
Expand All @@ -12,6 +10,7 @@
end

context 'when a user is signed in' do
let(:lesson) { create(:lesson, :project) }
let(:user) { create(:user) }
let(:another_user) { create(:user) }

Expand Down Expand Up @@ -55,8 +54,33 @@
end
end

context 'when lesson does not allow previews' do
let(:lesson) { create(:lesson, :project, has_live_preview: false) }
let(:user) { create(:user) }

before do
sign_in(user)
visit lesson_path(lesson)
end

it 'adds the submission without a preview' do
Pages::ProjectSubmissions::Form
.new(has_live_preview: false)
.open
.fill_in
.submit

within(:test_id, 'submissions-list') do
expect(page).to have_content(user.username)
expect(page).to have_link('View code')
expect(page).not_to have_link('Live preview')
end
end
end

context 'when a user is not signed in' do
it 'they cannot add a project submission' do
lesson = create(:lesson, :project)
visit lesson_path(lesson)

expect(page).not_to have_button('Add Solution')
Expand Down

0 comments on commit 250802a

Please sign in to comment.