scinote-web/spec/models/views/datatables/datatables_report_spec.rb

81 lines
2.7 KiB
Ruby
Raw Normal View History

require 'rails_helper'
RSpec.describe Views::Datatables::DatatablesReport, type: :model do
describe 'Database table' do
it { should have_db_column :id }
it { should have_db_column :name }
it { should have_db_column :project_name }
it { should have_db_column :created_by }
it { should have_db_column :last_modified_by }
it { should have_db_column :created_at }
it { should have_db_column :updated_at }
it { should have_db_column :project_archived }
it { should have_db_column :project_visibility }
it { should have_db_column :project_id }
it { should have_db_column :team_id }
it { should have_db_column :users_with_team_read_permissions }
it { should have_db_column :users_with_project_read_permissions }
end
describe 'is readonly' do
let(:team) { create :team }
it do
expect {
Views::Datatables::DatatablesReport.create!(team: team)
}.to raise_error(
ActiveRecord::ReadOnlyRecord,
'Views::Datatables::DatatablesReport is marked as readonly'
)
end
end
describe '#tokenize/1' do
it 'returns an array of permission items' do
items = [[1, [1, 2]], [2, [3, 4]]]
tokenized = described_class.send('tokenize', items)
expect(tokenized.first).to have_attributes(report_id: 1,
users_ids: [1, 2])
expect(tokenized.last).to have_attributes(report_id: 2, users_ids: [3, 4])
end
end
describe '#for_admin/3' do
let!(:user) { create :user }
let!(:user_two) { create :user, email: 'user.two@asdf.com' }
let!(:team) { create :team }
let!(:project) do
create :project, created_by: user, last_modified_by: user, team: team
end
let!(:user_project) { create :user_project, project: project, user: user }
let!(:team_two) { create :team }
let!(:user_team) do
create :user_team, team: team_two, user: user_two, role: 0
end
let!(:user_team) { create :user_team, team: team, user: user, role: 2 }
let!(:project_two) do
create :project, created_by: user_two,
last_modified_by: user_two,
team: team_two
end
let!(:report_one) do
create :report, user: user,
team: team,
name: 'report one',
project: project
end
let!(:report_two) do
create :report, user: user,
team: team_two,
project: project_two,
name: 'report two'
end
it 'returns the reports ' do
reports = team.datatables_reports.visible_by(user, team)
expect(reports.length).to eq 1
expect(reports.first.id).to eq report_one.id
end
end
end