summaryrefslogtreecommitdiff
path: root/test/unit/callthrough_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/callthrough_test.rb')
-rw-r--r--test/unit/callthrough_test.rb134
1 files changed, 134 insertions, 0 deletions
diff --git a/test/unit/callthrough_test.rb b/test/unit/callthrough_test.rb
new file mode 100644
index 0000000..c1c6ab3
--- /dev/null
+++ b/test/unit/callthrough_test.rb
@@ -0,0 +1,134 @@
+require 'test_helper'
+
+class CallthroughTest < ActiveSupport::TestCase
+ def setup
+ # Basic setup of a new system
+ #
+ germany = Country.create(:name => "Germany", :country_code => "49", :international_call_prefix => "00", :trunk_prefix => "0" )
+ Language.create(:name => 'Deutsch', :code => 'de')
+ AreaCode.create(:country => germany, :name => "Bendorf", :area_code => "2622")
+
+ @gemeinschaft_setup = GemeinschaftSetup.new
+ @gemeinschaft_setup.country = Country.first
+ @gemeinschaft_setup.language = Language.first
+
+ @current_user = @gemeinschaft_setup.build_user(
+ :user_name => I18n.t('gemeinschaft_setups.initial_setup.admin_name'),
+ :male => true,
+ :email => 'admin@localhost',
+ :first_name => 'Max',
+ :last_name => 'Mustermann',
+ :password => 'xxxxxxxxxx',
+ :password_confirmation => 'xxxxxxxxxx',
+ :language_id => Language.first.id,
+ )
+ @sip_domain = @gemeinschaft_setup.build_sip_domain(
+ :host => '10.0.0.1',
+ :realm => '10.0.0.1',
+ )
+
+ @gemeinschaft_setup.save
+
+ super_tenant = Tenant.create(
+ :name => SUPER_TENANT_NAME,
+ :country_id => @gemeinschaft_setup.country.id,
+ :language_id => @gemeinschaft_setup.language_id,
+ :description => I18n.t('gemeinschaft_setups.initial_setup.super_tenant_description'),
+ )
+
+ # Admin
+ super_tenant.tenant_memberships.create(:user_id => @gemeinschaft_setup.user.id)
+
+ # Create the Super-Tenant's group:
+ super_tenant_super_admin_group = super_tenant.user_groups.create(:name => I18n.t('gemeinschaft_setups.initial_setup.super_admin_group_name'))
+ super_tenant_super_admin_group.user_group_memberships.create(:user_id => @gemeinschaft_setup.user.id)
+
+ # Create the tenant.
+ #
+ @tenant = @sip_domain.tenants.build(:name => 'AMOOMA GmbH')
+ @tenant.country = Country.first
+ @tenant.language = Language.first
+ @tenant.internal_extension_ranges = '10-20'
+ @tenant.did_list = '02622-70648-x, 02622-706480'
+ @tenant.save
+
+ @tenant.tenant_memberships.create(:user_id => @current_user.id)
+ @current_user.update_attributes!(:current_tenant_id => @tenant.id)
+
+ # The first user becomes a member of the 'admin' UserGroup
+ #
+ admin_group = @tenant.user_groups.create(:name => I18n.t('gemeinschaft_setups.initial_setup.admin_group_name'))
+ admin_group.users << @current_user
+
+ # User group
+ #
+ user_group = @tenant.user_groups.create(:name => I18n.t('gemeinschaft_setups.initial_setup.user_group_name'))
+ user_group.users << @current_user
+
+ # Generate the internal_extensions
+ #
+ @tenant.generate_internal_extensions
+
+ # Generate the external numbers (DIDs)
+ #
+ @tenant.generate_dids
+ end
+
+ test 'the setup should create a valid system' do
+ # Basics
+ #
+ assert_equal 1, Country.count
+ assert_equal 1, Language.count
+
+ # Testing the installation
+ #
+ assert @gemeinschaft_setup.valid?
+ assert @sip_domain.valid?
+ assert @current_user.valid?
+
+ assert @tenant.valid?
+
+ assert_equal 0, SipAccount.count
+ assert_equal 2, Tenant.count
+ assert_equal 1, User.count
+
+ # Check the amount of phone_numbers
+ #
+ assert_equal 11, @tenant.phone_number_ranges.find_by_name(INTERNAL_EXTENSIONS).phone_numbers.count
+ assert_equal 12, @tenant.phone_number_ranges.find_by_name(DIRECT_INWARD_DIALING_NUMBERS).phone_numbers.count
+ end
+
+ test 'that a callthrough can only be created with at least one DID' do
+ assert_equal 0, Callthrough.count
+
+ did = @tenant.phone_number_ranges.find_by_name(DIRECT_INWARD_DIALING_NUMBERS).phone_numbers.first
+
+ callthrough = @tenant.callthroughs.build
+
+ assert !callthrough.valid?
+
+ callthrough.phone_numbers.build(:number => did.number)
+
+ assert callthrough.save
+ assert_equal 1, Callthrough.count
+ end
+
+ # TODO Activate this after fixing unique phone_number
+ #
+ # test 'that one DID can not be used by two different callthroughs' do
+ # assert_equal 0, Callthrough.count
+
+ # did = @tenant.phone_number_ranges.find_by_name(DIRECT_INWARD_DIALING_NUMBERS).phone_numbers.first
+
+ # callthroughs = Array.new
+ # (1..2).each do |i|
+ # callthroughs[i] = @tenant.callthroughs.build
+ # callthroughs[i].phone_numbers.build(:number => did.number)
+ # callthroughs[i].save
+ # end
+
+ # assert callthroughs[1].valid?, '1st Callthrough is not valid'
+ # assert !callthroughs[2].valid?, '2nd Callthrough is not valid'
+ # end
+
+end