mirror of
				https://github.com/scinote-eln/scinote-web.git
				synced 2025-11-01 00:56:05 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'rails_helper'
 | |
| 
 | |
| describe UserNotification, type: :model do
 | |
|   let(:user) { create :user }
 | |
|   let(:user_notification) { build :user_notification }
 | |
| 
 | |
|   it 'is valid' do
 | |
|     expect(user_notification).to be_valid
 | |
|   end
 | |
| 
 | |
|   it 'should be of class UserNotification' do
 | |
|     expect(subject.class).to eq UserNotification
 | |
|   end
 | |
| 
 | |
|   describe 'Database table' do
 | |
|     it { should have_db_column :user_id }
 | |
|     it { should have_db_column :notification_id }
 | |
|     it { should have_db_column :checked }
 | |
|     it { should have_db_column :created_at }
 | |
|     it { should have_db_column :updated_at }
 | |
|   end
 | |
| 
 | |
|   describe 'Relations' do
 | |
|     it { should belong_to(:user).optional }
 | |
|     it { should belong_to(:notification).optional }
 | |
|   end
 | |
| 
 | |
|   describe '#unseen_notification_count ' do
 | |
|     let(:notifcation) { create :notification }
 | |
|     it 'returns a number of unseen notifications' do
 | |
|       create :user_notification, user: user, notification: notifcation
 | |
|       expect(UserNotification.unseen_notification_count(user)).to eq 1
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#recent_notifications' do
 | |
|     let(:notifcation_one) { create :notification }
 | |
|     let(:notifcation_two) { create :notification }
 | |
| 
 | |
|     it 'returns a list of notifications ordered by created_at DESC' do
 | |
|       create :user_notification, user: user, notification: notifcation_one
 | |
|       create :user_notification, user: user, notification: notifcation_two
 | |
|       notifications = UserNotification.recent_notifications(user)
 | |
|       expect(notifications).to eq [notifcation_two, notifcation_one]
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#seen_by_user' do
 | |
|     let!(:notification) { create :notification }
 | |
|     let!(:user_notification_one) do
 | |
|       create :user_notification, user: user, notification: notification
 | |
|     end
 | |
| 
 | |
|     it 'set the check status to false' do
 | |
|       expect do
 | |
|         UserNotification.seen_by_user(user)
 | |
|       end.to change { user_notification_one.reload.checked }.from(false).to(true)
 | |
|     end
 | |
|   end
 | |
| end
 |