#-*- coding: utf-8 -*-
#
# Système de gestion des adhésions de Nos oignons
# Copyright © 2013-2014 Nos oignons <contact@nos-oignons.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

require 'json'

Before('@mailman') do
  @mock_mailman_db = expand_path('mock_mailman.json')
  init_mailman_mock_db({})
  ENV['MOCK_MAILMAN_DB'] = @mock_mailman_db
  @orig_path = ENV['PATH']
  ENV['PATH'] = "#{File.expand_path('../../support/mock_mailman', __FILE__)}:#{@orig_path}"
end

After('@mailman') do
  ENV['PATH'] = @orig_path
  FileUtils.remove_entry_secure @mock_mailman_db
end

def init_mailman_mock_db(dict)
  File.open(@mock_mailman_db, 'w') { |f| f.write(JSON.dump(dict)) }
end

def mailman_mock_db
  JSON.load(File.open(@mock_mailman_db))
end

Given /^une liste ag@ avec comme emails inscrits:$/ do |subscriber_list|
  emails = subscriber_list.strip.split
  init_mailman_mock_db('ag' => emails)
end

Then /^la liste ag@ doit avoir comme emails inscrits:$/ do |expected|
  emails = expected.strip.split.sort
  expect(mailman_mock_db['ag'].sort).to eql(emails)
end

