require 'test_helper' module SuperAdmin class NotificationsControllerTest < ActionController::TestCase include Devise::Test::ControllerHelpers setup do @super_admin = User.find_by(email: 'super_admin@example.com') scaffold_org_admin(Org.last) @notification_attributes = { notification_type: Notification.notification_types[:global], title: 'notification_1', level: Notification.levels[:info], body: 'notification 1', dismissable: true, starts_at: Date.today, expires_at: Date.tomorrow } @notification = Notification.create!(@notification_attributes) end test 'should get index' do sign_in @super_admin get :index assert_response :success assert_not_nil assigns(:notifications) end test 'should get new' do sign_in @super_admin get :new assert_response :success end test 'should create notification' do sign_in @super_admin assert_difference('Notification.count') do @notification_attributes[:level] = :info #controller is expecting the symbol instead of the numerical value post :create, notification: @notification_attributes end assert_redirected_to super_admin_notifications_url end test 'should get edit' do sign_in @super_admin get :edit, id: @notification assert_response :success assert_not_nil assigns(:notification) end test 'should update notification' do sign_in @super_admin @notification_attributes[:title] = 'notification_2' @notification_attributes[:level] = :info #controller is expecting the symbol instead of the numerical value patch :update, id: @notification, notification: @notification_attributes assert_redirected_to super_admin_notifications_url end test 'should destroy notification' do sign_in @super_admin assert_difference('Notification.count', -1) do delete :destroy, id: @notification end assert_redirected_to super_admin_notifications_url end test 'unauthorized redirections' do sign_in @user get :index assert_redirected_to(plans_url) get :new assert_redirected_to(plans_url) post :create, notification: @notification_attributes assert_redirected_to(plans_url) get :edit, id: @notification assert_redirected_to(plans_url) patch :update, id: @notification, notification: @notification_attributes assert_redirected_to(plans_url) delete :destroy, id: @notification assert_redirected_to(plans_url) end end end