
* User can create programming group with other users for exercise * Submission is shared in a group * Also adjust specs
49 lines
1.6 KiB
Ruby
49 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe 'exercises/implement.html.slim' do
|
|
let(:exercise) { create(:fibonacci) }
|
|
let(:files) { exercise.files.visible }
|
|
let(:non_binary_files) { files.reject {|file| file.file_type.binary? } }
|
|
let(:user) { create(:admin) }
|
|
|
|
before do
|
|
without_partial_double_verification do
|
|
allow(view).to receive_messages(current_user: user, current_contributor: user)
|
|
end
|
|
assign(:exercise, exercise)
|
|
assign(:files, files)
|
|
assign(:paths, [])
|
|
assign(:embed_options, {})
|
|
render
|
|
end
|
|
|
|
it 'contains the required editor data attributes' do
|
|
expect(rendered).to have_css("#editor[data-exercise-id='#{exercise.id}']")
|
|
expect(rendered).to have_css('#editor[data-message-timeout]')
|
|
expect(rendered).to have_css("#editor[data-submissions-url='#{submissions_path}']")
|
|
end
|
|
|
|
it 'contains the required file tree data attributes' do
|
|
expect(rendered).to have_css('#files[data-entries]')
|
|
end
|
|
|
|
it 'contains a frame for every file' do
|
|
expect(rendered).to have_css('.frame', count: files.length)
|
|
end
|
|
|
|
it 'assigns the correct code to every editor' do
|
|
non_binary_files.each do |file|
|
|
expect(rendered).to include(file.content)
|
|
end
|
|
end
|
|
|
|
it 'assigns the correct data attributes to every frame' do
|
|
non_binary_files.each do |file|
|
|
expect(rendered).to have_css(".editor[data-file-id='#{file.id}'][data-indent-size='#{file.file_type.indent_size}'][data-mode='#{file.file_type.editor_mode}']")
|
|
expect(rendered).to have_css(".frame[data-filename='#{file.name_with_extension}']")
|
|
end
|
|
end
|
|
end
|