mirror of
https://github.com/openSUSE/osem.git
synced 2026-01-25 14:29:51 -05:00
In CSS IDs may not begin with a number: - https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
145 lines
3.8 KiB
Ruby
145 lines
3.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
describe UserDatatable do
|
|
subject! do
|
|
described_class.new({}, view_context: view)
|
|
end
|
|
|
|
let(:data_cols) do
|
|
[:id, :confirmed_at, :email, :name, :attended, :roles, :view_url, :edit_url, :DT_RowId]
|
|
end
|
|
let(:view) do
|
|
view = double(
|
|
'view',
|
|
params: {
|
|
'draw' => '1',
|
|
'columns' => {
|
|
'0' => {
|
|
'data' => 'id',
|
|
'name' => '',
|
|
'searchable' => 'true',
|
|
'orderable' => 'true',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
},
|
|
'1' => {
|
|
'data' => 'confirmed_at',
|
|
'name' => '',
|
|
'searchable' => 'false',
|
|
'orderable' => 'true',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
},
|
|
'2' => {
|
|
'data' => 'email',
|
|
'name' => '',
|
|
'searchable' => 'true',
|
|
'orderable' => 'true',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
},
|
|
'3' => {
|
|
'data' => 'name',
|
|
'name' => '',
|
|
'searchable' => 'true',
|
|
'orderable' => 'true',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
},
|
|
'4' => {
|
|
'data' => 'attended',
|
|
'name' => '',
|
|
'searchable' => 'true',
|
|
'orderable' => 'true',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
},
|
|
'5' => {
|
|
'data' => 'roles',
|
|
'name' => '',
|
|
'searchable' => 'true',
|
|
'orderable' => 'true',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
},
|
|
'6' => {
|
|
'data' => '',
|
|
'name' => '',
|
|
'searchable' => 'true',
|
|
'orderable' => 'false',
|
|
'search' => { 'value' => '', 'regex' => 'false' }
|
|
}
|
|
},
|
|
'order' => { '0' => { 'column' => '0', 'dir' => 'asc' } },
|
|
'start' => '0',
|
|
'length' => '10',
|
|
'search' => { 'value' => '', 'regex' => 'false' },
|
|
'_' => '1532637360488'
|
|
}.with_indifferent_access
|
|
)
|
|
allow(view).to receive(:admin_user_path) do |arg|
|
|
"/admin/users/#{arg.to_param}"
|
|
end
|
|
allow(view).to receive(:dom_id) do |user|
|
|
"user_#{user.id}"
|
|
end
|
|
allow(view).to receive(:edit_admin_user_path) do |arg|
|
|
"/admin/users/#{arg.to_param}/edit"
|
|
end
|
|
return view
|
|
end
|
|
|
|
before do
|
|
allow(AjaxDatatablesRails).to receive(:old_rails?).and_return(true)
|
|
end
|
|
|
|
describe 'implements AjaxDatatablesRails::Base' do
|
|
it { is_expected.to respond_to(:view_columns) }
|
|
end
|
|
|
|
context 'outputs' do
|
|
let(:user) { User.first }
|
|
let(:output) { subject.as_json }
|
|
|
|
it 'recordsTotal' do
|
|
expect(output[:recordsTotal]).to eq(1)
|
|
end
|
|
|
|
it 'recordsFiltered' do
|
|
expect(output[:recordsFiltered]).to eq(1)
|
|
end
|
|
|
|
it 'data length' do
|
|
expect(output[:data].length).to eq(1)
|
|
end
|
|
|
|
it 'has expected data columns' do
|
|
expect(output[:data].first.keys).to eq(data_cols)
|
|
end
|
|
|
|
context 'data columns:' do
|
|
let(:user_data) { output[:data].first }
|
|
|
|
it 'id' do
|
|
expect(user_data[:id].to_i).to eq(user.id)
|
|
end
|
|
|
|
it 'name' do
|
|
expect(user_data[:name]).to eq(user.name)
|
|
end
|
|
|
|
it 'email' do
|
|
expect(user_data[:email]).to eq(user.email)
|
|
end
|
|
|
|
it 'confirmed_at' do
|
|
expect(Date.parse(user_data[:confirmed_at])).to eq(user.confirmed_at.to_date)
|
|
end
|
|
|
|
it 'attended' do
|
|
expect(user_data[:attended].to_i).to eq(user.attended_count)
|
|
end
|
|
|
|
it 'roles' do
|
|
expect(user_data[:roles]).to eq('None')
|
|
end
|
|
end
|
|
end
|
|
end
|