68 lines
2.4 KiB
Ruby
68 lines
2.4 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe Directory, type: :model do
|
|
describe "associations" do
|
|
it { is_expected.to belong_to(:project) }
|
|
it { is_expected.to belong_to(:user) }
|
|
end
|
|
|
|
describe "validations" do
|
|
it { is_expected.to validate_presence_of(:name) }
|
|
|
|
describe "#name uniqueness validation" do
|
|
subject { build(:directory) }
|
|
it { is_expected.to validate_uniqueness_of(:name).scoped_to(:project_id) }
|
|
end
|
|
end
|
|
|
|
describe "enums" do
|
|
it { is_expected.to define_enum_for(:permissions).with_values("Everyone": 0, "Account Managers & Project Managers": 1, "Account Managers Only": 2) }
|
|
it { is_expected.to define_enum_for(:category).with_values("Other": 0, "Finance": 1, "Scripts": 2, "Call Sheets": 3, "Photos": 4, "Videos": 5) }
|
|
end
|
|
|
|
describe "scopes" do
|
|
it "should return directories in alphabetical order" do
|
|
directory = create(:directory, name: "Payrolls", category: "Finance")
|
|
directory_2 = create(:directory, name: "Actors", category: "Videos")
|
|
|
|
directories = Directory.order_by_name
|
|
|
|
# Directory one was created earlier than Directory 2
|
|
expect(directory.created_at < directory_2.created_at).to be true
|
|
|
|
# Directories ordered in alphabetical order
|
|
expect(directories.first.name).to eq "Actors"
|
|
expect(directories.last.name).to eq "Payrolls"
|
|
end
|
|
|
|
it "should return directories with permission 'Everyone'" do
|
|
directory = create(:directory, name: "Payrolls", category: "Finance")
|
|
directory_2 = create(:directory, :for_manager, name: "Actors", category: "Videos")
|
|
|
|
directories = Directory.for_associates
|
|
|
|
expect(directories).to include(directory)
|
|
expect(directories).not_to include(directory_2)
|
|
end
|
|
|
|
it "should return directories with permission 'Account Managers & Project Managers'" do
|
|
directory = create(:directory, name: "Payrolls", category: "Finance")
|
|
directory_2 = create(:directory, :for_manager, name: "Actors", category: "Videos")
|
|
|
|
directories = Directory.for_project_managers
|
|
|
|
expect(directories).to include(directory)
|
|
expect(directories).to include(directory_2)
|
|
end
|
|
end
|
|
|
|
describe "search_files" do
|
|
it "should return directories in alphabetical order" do
|
|
directory = create(:directory, :with_files)
|
|
results = directory.search_files('loc')
|
|
|
|
expect(results.first.filename).to eq "location_photo.png"
|
|
end
|
|
end
|
|
end
|