|
1 | | -require 'spec_helper' |
| 1 | +require "spec_helper" |
2 | 2 |
|
3 | | -describe Role, :type => :model do |
4 | | - skip "add some examples to (or delete) #{__FILE__}" |
| 3 | +describe Role do |
| 4 | + let(:person) { create(:person) } |
| 5 | + |
| 6 | + describe "validations" do |
| 7 | + it { should validate_presence_of(:person) } |
| 8 | + it { should validate_uniqueness_of(:name).scoped_to(:person_id) } |
| 9 | + it { should validate_inclusion_of(:name).in_array(%w(admin spotlight)) } |
| 10 | + end |
| 11 | + |
| 12 | + describe "associations" do |
| 13 | + it { should belong_to(:person) } |
| 14 | + end |
| 15 | + |
| 16 | + describe "scopes" do |
| 17 | + let!(:admin_role) { person.roles.create(name: "admin") } |
| 18 | + let!(:spotlight_role) { person.roles.create(name: "spotlight") } |
| 19 | + |
| 20 | + describe ".admins" do |
| 21 | + it "includes admin roles" do |
| 22 | + expect(Role.admins).to match_array([admin_role]) |
| 23 | + end |
| 24 | + end |
| 25 | + end |
| 26 | + |
| 27 | + describe ".is_admin?" do |
| 28 | + it "defaults to false" do |
| 29 | + expect(Role.is_admin?(person)).to be false |
| 30 | + end |
| 31 | + |
| 32 | + context "when the person is an admin" do |
| 33 | + before { person.roles.create(name: "admin") } |
| 34 | + |
| 35 | + it "is true" do |
| 36 | + expect(Role.is_admin?(person)).to be true |
| 37 | + end |
| 38 | + end |
| 39 | + end |
| 40 | + |
| 41 | + describe ".add_admin" do |
| 42 | + it "creates the admin role" do |
| 43 | + Role.add_admin(person) |
| 44 | + expect(person.roles.where(name: "admin")).to exist |
| 45 | + end |
| 46 | + end |
| 47 | + |
| 48 | + describe ".add_spotlight" do |
| 49 | + it "creates the spotlight role" do |
| 50 | + Role.add_spotlight(person) |
| 51 | + expect(person.roles.where(name: "spotlight")).to exist |
| 52 | + end |
| 53 | + end |
5 | 54 | end |
0 commit comments