require 'spec_helper' module PolicyManager describe UserTermsController do routes { PolicyManager::Engine.routes } render_views before :each do @config = PolicyManager::Config.setup do |c| c.is_admin_method = ->(o){true} c.add_rule({name: "age", validates_on: [:create, :update], blocking: true, if: ->(o){ o.enabled_for_validation } }) end @category = @config.rules.first.name pr = PolicyManager::Term.create(description: "el", rule: "age") pr.publish! User.any_instance.stubs(:enabled_for_validation).returns(false) @user = User.new @user.email = "a@a.cl" @user.save ApplicationController.any_instance.stubs(:current_user).returns(User.first) end it "should get pendings as html" do get :pending assert_response :success assert Nokogiri::HTML.parse(response.body).css("main ul li").text == "age" end it "should get pendings as json" do get :pending, as: :json assert JSON.parse(response.body).size == 1 assert JSON.parse(response.body).first["name"] == "age" assert_response :success end it "should show as html" do get :show, {params:{id: "age"}} assert_response :success end it "should show as json" do get :show, params:{id: "age"}, as: :json assert_response :success end it "should accept user term" do UserTerm.delete_all put :accept, params:{id: "age"}, as: :json assert_response :success assert @user.pending_policies.size == 0 end it "should reject user term" do UserTerm.delete_all put :reject , params:{id: "age"}, as: :json assert_response :success assert @user.pending_policies.size == 1 end it "accept multiples" do UserTerm.delete_all put :accept_multiples, params: { user: { policy_rule_age: true } }, as: :json assert_response :success assert @user.pending_policies.size == 0 end it "reject multiples" do UserTerm.delete_all put :accept_multiples, params: { user: { policy_rule_age: false } }, as: :json assert_response :success binding.pry assert @user.pending_policies.size == 1 end it "blocking terms" do UserTerm.delete_all get :blocking_terms, as: :json assert_response :success assert JSON.parse(response.body).size == 1 end end end