Merge branch 'master' into question-answer-documents
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
class Admin::Poll::Questions::Answers::VideosController < Admin::Poll::BaseController
|
||||||
|
before_action :load_answer, only: [:index, :new, :create]
|
||||||
|
before_action :load_video, only: [:edit, :update, :destroy]
|
||||||
|
|
||||||
|
def index
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@video = ::Poll::Question::Answer::Video.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@video = ::Poll::Question::Answer::Video.new(video_params)
|
||||||
|
|
||||||
|
if @video.save
|
||||||
|
redirect_to admin_answer_videos_path(@answer),
|
||||||
|
notice: t("flash.actions.create.poll_question_answer_video")
|
||||||
|
else
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @video.update(video_params)
|
||||||
|
redirect_to admin_answer_videos_path(@video.answer_id),
|
||||||
|
notice: t("flash.actions.save_changes.notice")
|
||||||
|
else
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
if @video.destroy
|
||||||
|
notice = t("flash.actions.destroy.poll_question_answer_video")
|
||||||
|
else
|
||||||
|
notice = t("flash.actions.destroy.error")
|
||||||
|
end
|
||||||
|
redirect_to :back, notice: notice
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def video_params
|
||||||
|
params.require(:poll_question_answer_video).permit(:title, :url, :answer_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def load_answer
|
||||||
|
@answer = ::Poll::Question::Answer.find(params[:answer_id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def load_video
|
||||||
|
@video = ::Poll::Question::Answer::Video.find(params[:id])
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -7,6 +7,7 @@ class Poll::Question::Answer < ActiveRecord::Base
|
|||||||
accepts_nested_attributes_for :documents, allow_destroy: true
|
accepts_nested_attributes_for :documents, allow_destroy: true
|
||||||
|
|
||||||
belongs_to :question, class_name: 'Poll::Question', foreign_key: 'question_id'
|
belongs_to :question, class_name: 'Poll::Question', foreign_key: 'question_id'
|
||||||
|
has_many :videos, class_name: 'Poll::Question::Answer::Video'
|
||||||
|
|
||||||
validates :title, presence: true
|
validates :title, presence: true
|
||||||
|
|
||||||
|
|||||||
16
app/models/poll/question/answer/video.rb
Normal file
16
app/models/poll/question/answer/video.rb
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
class Poll::Question::Answer::Video < ActiveRecord::Base
|
||||||
|
belongs_to :answer, class_name: 'Poll::Question::Answer', foreign_key: 'answer_id'
|
||||||
|
|
||||||
|
VIMEO_REGEX = /vimeo.*(staffpicks\/|channels\/|videos\/|video\/|\/)([^#\&\?]*).*/
|
||||||
|
YOUTUBE_REGEX = /youtu.*(be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/
|
||||||
|
|
||||||
|
validates :title, presence: true
|
||||||
|
validate :valid_url?
|
||||||
|
|
||||||
|
def valid_url?
|
||||||
|
return if url.blank?
|
||||||
|
return if url.match(VIMEO_REGEX)
|
||||||
|
return if url.match(YOUTUBE_REGEX)
|
||||||
|
errors.add(:url, :invalid)
|
||||||
|
end
|
||||||
|
end
|
||||||
21
app/views/admin/poll/questions/answers/videos/_form.html.erb
Normal file
21
app/views/admin/poll/questions/answers/videos/_form.html.erb
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<%= form_for(@video, url: form_url) do |f| %>
|
||||||
|
|
||||||
|
<%= render 'shared/errors', resource: @video %>
|
||||||
|
|
||||||
|
<%= f.hidden_field :answer_id, value: @video.answer_id || @answer.id %>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="small-12 column">
|
||||||
|
|
||||||
|
<%= f.text_field :title %>
|
||||||
|
<%= f.text_field :url %>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="actions small-12 medium-4 column margin-top">
|
||||||
|
<%= f.submit(class: "button expanded", value: t("shared.save")) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<%= back_link_to %>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<%= t("admin.answers.videos.edit.title") %>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="poll-question-answer-video-form">
|
||||||
|
<%= render "form", form_url: admin_video_path(@video) %>
|
||||||
|
</div>
|
||||||
47
app/views/admin/poll/questions/answers/videos/index.html.erb
Normal file
47
app/views/admin/poll/questions/answers/videos/index.html.erb
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<%= back_link_to admin_question_path(@answer.question_id) %>
|
||||||
|
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
<h2 class="inline-block">
|
||||||
|
<%= t("admin.answers.videos.index.title") %>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<%= link_to t("admin.answers.videos.index.add_video"),
|
||||||
|
new_admin_answer_video_path,
|
||||||
|
class: "button success float-right" %>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><%= t("admin.answers.videos.index.video_title") %></th>
|
||||||
|
<th><%= t("admin.answers.videos.index.video_url") %></th>
|
||||||
|
<th class="text-right">
|
||||||
|
<%= t("admin.actions.actions") %>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<% @answer.videos.each do |video| %>
|
||||||
|
<tr id="<%= dom_id(video) %>" class="poll_question_answer_video">
|
||||||
|
<td><%= video.title %></td>
|
||||||
|
<td><%= link_to "#{video.url}", video.url %></td>
|
||||||
|
<td class="text-right">
|
||||||
|
|
||||||
|
<%= link_to t("shared.edit"),
|
||||||
|
edit_admin_video_path(video),
|
||||||
|
class: "button hollow" %>
|
||||||
|
|
||||||
|
<%= link_to t("shared.delete"),
|
||||||
|
admin_video_path(video),
|
||||||
|
class: "button hollow alert",
|
||||||
|
method: :delete %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<%= back_link_to admin_answer_videos_path(@answer) %>
|
||||||
|
|
||||||
|
<h2>
|
||||||
|
<%= t('admin.answers.videos.new.title') %>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="poll-question-answer-video-form">
|
||||||
|
<%= render "form", form_url: admin_answer_videos_path %>
|
||||||
|
</div>
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
<table class="margin-top">
|
<table class="margin-top">
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4" scope="col" class="with-button">
|
<th colspan="5" scope="col" class="with-button">
|
||||||
<%= t('admin.questions.show.valid_answers') %>
|
<%= t('admin.questions.show.valid_answers') %>
|
||||||
<%= link_to t("admin.questions.show.add_answer"),
|
<%= link_to t("admin.questions.show.add_answer"),
|
||||||
new_admin_question_answer_path(@question),
|
new_admin_question_answer_path(@question),
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
<th scope="col" class="medium-7"><%= t("admin.questions.show.answers.description") %></th>
|
<th scope="col" class="medium-7"><%= t("admin.questions.show.answers.description") %></th>
|
||||||
<th scope="col" class="text-center"><%= t("admin.questions.show.answers.images") %></th>
|
<th scope="col" class="text-center"><%= t("admin.questions.show.answers.images") %></th>
|
||||||
<th scope="col" class="text-center"><%= t("admin.questions.show.answers.documents") %></th>
|
<th scope="col" class="text-center"><%= t("admin.questions.show.answers.documents") %></th>
|
||||||
|
<th scope="col" class="text-center"><%= t("admin.questions.show.answers.videos") %></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<% @question.question_answers.each do |answer| %>
|
<% @question.question_answers.each do |answer| %>
|
||||||
@@ -62,6 +63,11 @@
|
|||||||
<%= link_to t("admin.questions.show.answers.documents_list"),
|
<%= link_to t("admin.questions.show.answers.documents_list"),
|
||||||
admin_answer_documents_path(answer) %>
|
admin_answer_documents_path(answer) %>
|
||||||
</td>
|
</td>
|
||||||
|
<td class="text-center">
|
||||||
|
<%= link_to t("admin.questions.show.answers.video_list",
|
||||||
|
count: answer.videos.count),
|
||||||
|
admin_answer_videos_path(answer) %>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -213,9 +213,12 @@ en:
|
|||||||
image:
|
image:
|
||||||
title: Title
|
title: Title
|
||||||
attachment: Attachment
|
attachment: Attachment
|
||||||
poll/question_answer:
|
poll/question/answer:
|
||||||
title: "Answer"
|
title: "Answer"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
|
poll/question/answer/video:
|
||||||
|
title: Title
|
||||||
|
url: External video
|
||||||
errors:
|
errors:
|
||||||
models:
|
models:
|
||||||
user:
|
user:
|
||||||
|
|||||||
@@ -599,12 +599,14 @@ en:
|
|||||||
author: Author
|
author: Author
|
||||||
title: Title
|
title: Title
|
||||||
valid_answers: Valid answers
|
valid_answers: Valid answers
|
||||||
add_answer: "Add answer"
|
add_answer: Add answer
|
||||||
video_url: External video
|
video_url: External video
|
||||||
documents: Documents
|
documents: Documents
|
||||||
answers:
|
answers:
|
||||||
title: Answer
|
title: Answer
|
||||||
description: Description
|
description: Description
|
||||||
|
videos: Videos
|
||||||
|
video_list: Video list (%{count})
|
||||||
images: Images
|
images: Images
|
||||||
images_list: Images list
|
images_list: Images list
|
||||||
documents: Documents
|
documents: Documents
|
||||||
@@ -613,7 +615,17 @@ en:
|
|||||||
document_actions: Actions
|
document_actions: Actions
|
||||||
answers:
|
answers:
|
||||||
new:
|
new:
|
||||||
title: "New answer"
|
title: New answer
|
||||||
|
videos:
|
||||||
|
index:
|
||||||
|
title: Videos
|
||||||
|
add_video: Add video
|
||||||
|
video_title: Title
|
||||||
|
video_url: External video
|
||||||
|
new:
|
||||||
|
title: New video
|
||||||
|
edit:
|
||||||
|
title: Edit video
|
||||||
recounts:
|
recounts:
|
||||||
index:
|
index:
|
||||||
title: "Recounts"
|
title: "Recounts"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ en:
|
|||||||
poll: "Poll created successfully."
|
poll: "Poll created successfully."
|
||||||
poll_booth: "Booth created successfully."
|
poll_booth: "Booth created successfully."
|
||||||
poll_question_answer: "Answer created successfully"
|
poll_question_answer: "Answer created successfully"
|
||||||
|
poll_question_answer_video: "Video created successfully"
|
||||||
proposal: "Proposal created successfully."
|
proposal: "Proposal created successfully."
|
||||||
proposal_notification: "Your message has been sent correctly."
|
proposal_notification: "Your message has been sent correctly."
|
||||||
spending_proposal: "Spending proposal created successfully. You can access it from %{activity}"
|
spending_proposal: "Spending proposal created successfully. You can access it from %{activity}"
|
||||||
@@ -31,3 +32,4 @@ en:
|
|||||||
budget_investment: "Investment project deleted succesfully."
|
budget_investment: "Investment project deleted succesfully."
|
||||||
error: "Could not delete"
|
error: "Could not delete"
|
||||||
topic: "Topic deleted successfully."
|
topic: "Topic deleted successfully."
|
||||||
|
poll_question_answer_video: "Answer video deleted successfully."
|
||||||
|
|||||||
@@ -207,9 +207,12 @@ es:
|
|||||||
image:
|
image:
|
||||||
title: Título
|
title: Título
|
||||||
attachment: Archivo adjunto
|
attachment: Archivo adjunto
|
||||||
poll/question_answer:
|
poll/question/answer:
|
||||||
title: "Respuesta"
|
title: "Respuesta"
|
||||||
description: "Descripción"
|
description: "Descripción"
|
||||||
|
poll/question/answer/video:
|
||||||
|
title: Título
|
||||||
|
url: Vídeo externo
|
||||||
errors:
|
errors:
|
||||||
models:
|
models:
|
||||||
user:
|
user:
|
||||||
|
|||||||
@@ -599,13 +599,14 @@ es:
|
|||||||
author: Autor
|
author: Autor
|
||||||
title: Título
|
title: Título
|
||||||
valid_answers: Respuestas válidas
|
valid_answers: Respuestas válidas
|
||||||
add_answer: "Añadir respuesta"
|
add_answer: Añadir respuesta
|
||||||
description: Descripción
|
|
||||||
video_url: Video externo
|
video_url: Video externo
|
||||||
documents: Documentos
|
documents: Documentos
|
||||||
answers:
|
answers:
|
||||||
title: Respuesta
|
title: Respuesta
|
||||||
description: Descripción
|
description: Descripción
|
||||||
|
videos: Vídeos
|
||||||
|
video_list: Lista de vídeos (%{count})
|
||||||
images: Imágenes
|
images: Imágenes
|
||||||
images_list: Lista de imágenes
|
images_list: Lista de imágenes
|
||||||
documents: Documentos
|
documents: Documentos
|
||||||
@@ -617,6 +618,16 @@ es:
|
|||||||
title: "Nueva respuesta"
|
title: "Nueva respuesta"
|
||||||
video_url: Video externo
|
video_url: Video externo
|
||||||
documents: Documentos (1)
|
documents: Documentos (1)
|
||||||
|
videos:
|
||||||
|
index:
|
||||||
|
title: Vídeos
|
||||||
|
add_video: Añadir vídeo
|
||||||
|
video_title: Título
|
||||||
|
video_url: External video
|
||||||
|
new:
|
||||||
|
title: Nuevo video
|
||||||
|
edit:
|
||||||
|
title: Editar vídeo
|
||||||
recounts:
|
recounts:
|
||||||
index:
|
index:
|
||||||
title: "Recuentos"
|
title: "Recuentos"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ es:
|
|||||||
poll: "Votación creada correctamente."
|
poll: "Votación creada correctamente."
|
||||||
poll_booth: "Urna creada correctamente."
|
poll_booth: "Urna creada correctamente."
|
||||||
poll_question_answer: "Respuesta creada correctamente"
|
poll_question_answer: "Respuesta creada correctamente"
|
||||||
|
poll_question_answer_video: "Vídeo creado correctamente"
|
||||||
proposal: "Propuesta creada correctamente."
|
proposal: "Propuesta creada correctamente."
|
||||||
proposal_notification: "Tu message ha sido enviado correctamente."
|
proposal_notification: "Tu message ha sido enviado correctamente."
|
||||||
spending_proposal: "Propuesta de inversión creada correctamente. Puedes acceder a ella desde %{activity}"
|
spending_proposal: "Propuesta de inversión creada correctamente. Puedes acceder a ella desde %{activity}"
|
||||||
@@ -31,3 +32,4 @@ es:
|
|||||||
budget_investment: "Propuesta de inversión eliminada."
|
budget_investment: "Propuesta de inversión eliminada."
|
||||||
error: "No se pudo borrar"
|
error: "No se pudo borrar"
|
||||||
topic: "Tema eliminado."
|
topic: "Tema eliminado."
|
||||||
|
poll_question_answer_video: "Vídeo de respuesta eliminado."
|
||||||
|
|||||||
@@ -147,9 +147,12 @@ fr:
|
|||||||
name: Nom
|
name: Nom
|
||||||
locale: Langue
|
locale: Langue
|
||||||
body: Contenu
|
body: Contenu
|
||||||
poll/question_answer:
|
poll/question/answer:
|
||||||
title: "Réponse"
|
title: "Réponse"
|
||||||
description: "Description"
|
description: "Description"
|
||||||
|
poll/question/answer/video:
|
||||||
|
title: Titre
|
||||||
|
url: Vidéo externe
|
||||||
errors:
|
errors:
|
||||||
models:
|
models:
|
||||||
user:
|
user:
|
||||||
|
|||||||
@@ -382,13 +382,27 @@ fr:
|
|||||||
author: Auteur
|
author: Auteur
|
||||||
title: Titre
|
title: Titre
|
||||||
valid_answers: Réponses valides
|
valid_answers: Réponses valides
|
||||||
add_answer: "Ajouter une réponse"
|
add_answer: Ajouter une réponse
|
||||||
answer: "Réponse"
|
documents: Documents (1)
|
||||||
description: Description
|
|
||||||
preview: Voir l'aperçu
|
preview: Voir l'aperçu
|
||||||
|
answers:
|
||||||
|
title: Réponse
|
||||||
|
description: Description
|
||||||
|
videos: Vidéos
|
||||||
|
video_list: Liste des vidéos (%{count})
|
||||||
answers:
|
answers:
|
||||||
new:
|
new:
|
||||||
title: "Nouvelle réponse"
|
title: "Nouvelle réponse"
|
||||||
|
videos:
|
||||||
|
index:
|
||||||
|
title: Vidéos
|
||||||
|
add_video: Ajouter une vidéo
|
||||||
|
video_title: Titre
|
||||||
|
video_url: Vidéo externe
|
||||||
|
new:
|
||||||
|
title: Nouveau vidéo
|
||||||
|
edit:
|
||||||
|
title: Modifier la vidéo
|
||||||
recounts:
|
recounts:
|
||||||
index:
|
index:
|
||||||
title: "Dépouillements"
|
title: "Dépouillements"
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ fr:
|
|||||||
direct_message: "Votre message a été envoyé avec succès."
|
direct_message: "Votre message a été envoyé avec succès."
|
||||||
poll: "Vote créé avec succès."
|
poll: "Vote créé avec succès."
|
||||||
poll_booth: "Urne créée avec succès."
|
poll_booth: "Urne créée avec succès."
|
||||||
|
poll_question_answer: "Réponse créée avec succès"
|
||||||
|
poll_question_answer_video: "Vidéo créée avec succès"
|
||||||
proposal: "Proposition créée avec succès."
|
proposal: "Proposition créée avec succès."
|
||||||
proposal_notification: "Votre message a correctement été envoyé."
|
proposal_notification: "Votre message a correctement été envoyé."
|
||||||
spending_proposal: "Proposition de dépense créée avec succès. Vous pouvez y accéder depuis %{activity}"
|
spending_proposal: "Proposition de dépense créée avec succès. Vous pouvez y accéder depuis %{activity}"
|
||||||
@@ -27,3 +29,4 @@ fr:
|
|||||||
spending_proposal: "Proposition de dépense supprimée avec succès."
|
spending_proposal: "Proposition de dépense supprimée avec succès."
|
||||||
budget_investment: "Budget d'investissement supprimé avec succès."
|
budget_investment: "Budget d'investissement supprimé avec succès."
|
||||||
error: "Suppression impossible"
|
error: "Suppression impossible"
|
||||||
|
poll_question_answer_video: "Réponse vidéo supprimée avec succès."
|
||||||
|
|||||||
@@ -303,6 +303,7 @@ Rails.application.routes.draw do
|
|||||||
resources :questions do
|
resources :questions do
|
||||||
resources :answers, only: [:new, :create, :update], controller: 'questions/answers', shallow: true do
|
resources :answers, only: [:new, :create, :update], controller: 'questions/answers', shallow: true do
|
||||||
resources :images, controller: 'questions/answers/images'
|
resources :images, controller: 'questions/answers/images'
|
||||||
|
resources :videos, controller: 'questions/answers/videos'
|
||||||
get :documents, to: 'questions/answers#documents'
|
get :documents, to: 'questions/answers#documents'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -559,7 +559,6 @@ print "Creating Poll Questions"
|
|||||||
open_at = rand(2.months.ago..2.months.from_now)
|
open_at = rand(2.months.ago..2.months.from_now)
|
||||||
question = Poll::Question.create!(author: author,
|
question = Poll::Question.create!(author: author,
|
||||||
title: Faker::Lorem.sentence(3).truncate(60),
|
title: Faker::Lorem.sentence(3).truncate(60),
|
||||||
description: description,
|
|
||||||
valid_answers: Faker::Lorem.words((2..7).to_a.sample).join(', '),
|
valid_answers: Faker::Lorem.words((2..7).to_a.sample).join(', '),
|
||||||
poll: poll)
|
poll: poll)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
class CreatePollQuestionAnswerVideos < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :poll_question_answer_videos do |t|
|
||||||
|
t.string :title
|
||||||
|
t.string :url
|
||||||
|
t.integer :answer_id, index: true
|
||||||
|
end
|
||||||
|
|
||||||
|
add_foreign_key :poll_question_answer_videos, :poll_question_answers, column: :answer_id
|
||||||
|
end
|
||||||
|
end
|
||||||
11
db/schema.rb
11
db/schema.rb
@@ -11,7 +11,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20171004151553) do
|
ActiveRecord::Schema.define(version: 20171004210108) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
@@ -668,6 +668,14 @@ ActiveRecord::Schema.define(version: 20171004151553) do
|
|||||||
add_index "poll_partial_results", ["origin"], name: "index_poll_partial_results_on_origin", using: :btree
|
add_index "poll_partial_results", ["origin"], name: "index_poll_partial_results_on_origin", using: :btree
|
||||||
add_index "poll_partial_results", ["question_id"], name: "index_poll_partial_results_on_question_id", using: :btree
|
add_index "poll_partial_results", ["question_id"], name: "index_poll_partial_results_on_question_id", using: :btree
|
||||||
|
|
||||||
|
create_table "poll_question_answer_videos", force: :cascade do |t|
|
||||||
|
t.string "title"
|
||||||
|
t.string "url"
|
||||||
|
t.integer "answer_id"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "poll_question_answer_videos", ["answer_id"], name: "index_poll_question_answer_videos_on_answer_id", using: :btree
|
||||||
|
|
||||||
create_table "poll_question_answers", force: :cascade do |t|
|
create_table "poll_question_answers", force: :cascade do |t|
|
||||||
t.string "title"
|
t.string "title"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
@@ -1152,6 +1160,7 @@ ActiveRecord::Schema.define(version: 20171004151553) do
|
|||||||
add_foreign_key "poll_partial_results", "poll_officer_assignments", column: "officer_assignment_id"
|
add_foreign_key "poll_partial_results", "poll_officer_assignments", column: "officer_assignment_id"
|
||||||
add_foreign_key "poll_partial_results", "poll_questions", column: "question_id"
|
add_foreign_key "poll_partial_results", "poll_questions", column: "question_id"
|
||||||
add_foreign_key "poll_partial_results", "users", column: "author_id"
|
add_foreign_key "poll_partial_results", "users", column: "author_id"
|
||||||
|
add_foreign_key "poll_question_answer_videos", "poll_question_answers", column: "answer_id"
|
||||||
add_foreign_key "poll_question_answers", "poll_questions", column: "question_id"
|
add_foreign_key "poll_question_answers", "poll_questions", column: "question_id"
|
||||||
add_foreign_key "poll_questions", "polls"
|
add_foreign_key "poll_questions", "polls"
|
||||||
add_foreign_key "poll_questions", "proposals"
|
add_foreign_key "poll_questions", "proposals"
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
feature 'Videos' do
|
||||||
|
|
||||||
|
background do
|
||||||
|
admin = create(:administrator)
|
||||||
|
login_as(admin.user)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Create" do
|
||||||
|
question = create(:poll_question)
|
||||||
|
answer = create(:poll_question_answer, question: question)
|
||||||
|
video_title = "'Magical' by Junko Ohashi"
|
||||||
|
video_url = "https://www.youtube.com/watch?v=-JMf43st-1A"
|
||||||
|
|
||||||
|
visit admin_question_path(question)
|
||||||
|
|
||||||
|
within("#poll_question_answer_#{answer.id}") do
|
||||||
|
click_link "Video list (#{answer.videos.count})"
|
||||||
|
end
|
||||||
|
|
||||||
|
click_link "Add video"
|
||||||
|
|
||||||
|
fill_in 'poll_question_answer_video_title', with: video_title
|
||||||
|
fill_in 'poll_question_answer_video_url', with: video_url
|
||||||
|
|
||||||
|
click_button "Save"
|
||||||
|
|
||||||
|
expect(page).to have_content(video_title)
|
||||||
|
expect(page).to have_content(video_url)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user