mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-01-08 00:23:01 +08:00
80 lines
2.7 KiB
Ruby
80 lines
2.7 KiB
Ruby
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
|