You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							84 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							84 lines
						
					
					
						
							2.3 KiB
						
					
					
				require "rails_helper" | 
						|
 | 
						|
RSpec.describe AdminUser, type: :model do | 
						|
  describe "#new" do | 
						|
    it "requires a phone number" do | 
						|
      expect { | 
						|
        described_class.create!( | 
						|
          email: "admin_test@example.com", | 
						|
          password: "password123", | 
						|
        ) | 
						|
      }.to raise_error(ActiveRecord::RecordInvalid) | 
						|
    end | 
						|
 | 
						|
    it "requires a numerical phone number" do | 
						|
      expect { | 
						|
        described_class.create!( | 
						|
          email: "admin_test@example.com", | 
						|
          password: "password123", | 
						|
          phone: "string", | 
						|
        ) | 
						|
      }.to raise_error(ActiveRecord::RecordInvalid) | 
						|
    end | 
						|
 | 
						|
    it "requires an email" do | 
						|
      expect { | 
						|
        described_class.create!( | 
						|
          password: "password123", | 
						|
          phone: "075752137", | 
						|
        ) | 
						|
      }.to raise_error(ActiveRecord::RecordInvalid) | 
						|
    end | 
						|
 | 
						|
    it "requires a password" do | 
						|
      expect { | 
						|
        described_class.create!( | 
						|
          email: "admin_test@example.com", | 
						|
          phone: "075752137", | 
						|
        ) | 
						|
      }.to raise_error(ActiveRecord::RecordInvalid) | 
						|
    end | 
						|
 | 
						|
    it "can be created" do | 
						|
      expect { | 
						|
        described_class.create!( | 
						|
          email: "admin_test@example.com", | 
						|
          password: "password123", | 
						|
          phone: "075752137", | 
						|
        ) | 
						|
      }.to change(described_class, :count).by(1) | 
						|
    end | 
						|
  end | 
						|
 | 
						|
  describe "paper trail" do | 
						|
    let(:admin_user) { FactoryBot.create(:admin_user) } | 
						|
 | 
						|
    it "creates a record of changes to a log" do | 
						|
      expect { admin_user.update!(phone: "09673867853") }.to change(admin_user.versions, :count).by(1) | 
						|
    end | 
						|
 | 
						|
    it "allows case logs to be restored to a previous version" do | 
						|
      admin_user.update!(phone: "09673867853") | 
						|
      expect(admin_user.paper_trail.previous_version.phone).to eq("07563867654") | 
						|
    end | 
						|
 | 
						|
    it "signing in does not create a new version" do | 
						|
      expect { | 
						|
        admin_user.update!( | 
						|
          last_sign_in_at: Time.zone.now, | 
						|
          current_sign_in_at: Time.zone.now, | 
						|
          current_sign_in_ip: "127.0.0.1", | 
						|
          last_sign_in_ip: "127.0.0.1", | 
						|
          failed_attempts: 3, | 
						|
          unlock_token: "dummy", | 
						|
          locked_at: Time.zone.now, | 
						|
          reset_password_token: "dummy", | 
						|
          reset_password_sent_at: Time.zone.now, | 
						|
          remember_created_at: Time.zone.now, | 
						|
          sign_in_count: 5, | 
						|
          updated_at: Time.zone.now, | 
						|
        ) | 
						|
      }.not_to change(admin_user.versions, :count) | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |