# frozen_string_literal: true

module Credits
  class TrainingTest < ActionDispatch::IntegrationTest
    # Called before every test method runs. Can be used
    # to set up fixture information.
    def setup
      admin = User.with_role(:admin).first
      login_as(admin, scope: :user)
    end

    test 'create training credit' do
      # First, we create a new credit
      post '/api/credits',
           params: {
             credit: {
               creditable_id: 4,
               creditable_type: 'Training',
               plan_id: '1'
             }
           }.to_json,
           headers: default_headers

      # Check response format & status
      assert_equal 201, response.status, response.body
      assert_equal Mime[:json], response.content_type

      # Check the credit was created correctly
      credit = json_response(response.body)
      c = Credit.where(id: credit[:id]).first
      assert_not_nil c, 'Credit was not created in database'

      # Check that no hours were associated with the credit
      assert_nil c.hours
    end

    test 'create a existing credit' do
      post '/api/credits',
           params: {
             credit: {
               creditable_id: 4,
               creditable_type: 'Training',
               plan_id: '2'
             }
           }.to_json,
           headers: default_headers

      # Check response format & status
      assert_equal 422, response.status, response.body
      assert_equal Mime[:json], response.content_type
    end
  end
end
