# frozen_string_literal: true

describe CarteController do
  describe '#show' do
    let(:service) { create(:service, departement: '63') }
    let(:service2) { create(:service, departement: '75') }
    let(:service3) { create(:service, departement: '75') }
    let!(:procedure) { create(:procedure, :published, service:, estimated_dossiers_count: 4) }
    let!(:procedure2) { create(:procedure, :published, service: service2, estimated_dossiers_count: 20, published_at: Date.parse('2020-07-14')) }
    let!(:procedure3) { create(:procedure, :published, service: service3, estimated_dossiers_count: 30, published_at: Date.parse('2021-07-14')) }
    let(:subject) { assigns(:map_filter) }

    it 'give stats for each departement' do
      get :show
      expect(subject.stats['63']).to eq({ nb_demarches: 1, nb_dossiers: 4 })
      expect(subject.stats['75']).to eq({ nb_demarches: 2, nb_dossiers: 50 })
    end

    it 'give stats for each departement for a specific year' do
      get :show, params: { map_filter: { year: 2020 } }
      expect(subject.stats['75']).to eq({ nb_demarches: 1, nb_dossiers: 20 })
    end

    it 'gracefully ignore invalid params' do
      get :show, params: { map_filter: { year: "not!" } }
      expect(subject.stats['75']).to eq({ nb_demarches: 2, nb_dossiers: 50 })

      get :show, params: { map_filter: { kind: "nimp" } }
      expect(subject.stats['75']).to eq({ nb_demarches: 2, nb_dossiers: 50 })
    end
  end
end