Browse Source

Maintenance: Port Service::Calendar minitest to RSpec.

Florian Liebe 2 years ago
parent
commit
9afa0c4714

+ 0 - 1
.gitlab/ci/integration/other.yml

@@ -13,7 +13,6 @@
     - echo "Clearbit test..."
     - bundle exec rails test test/integration/clearbit_test.rb
     - echo "Geo tests..."
-    - bundle exec rails test test/integration/geo_calendar_test.rb
     - bundle exec rails test test/integration/geo_location_test.rb
     - echo "Slack test..."
     - bundle exec rails test test/integration/slack_test.rb

+ 141 - 0
spec/lib/service/geo_calendar_spec.rb

@@ -0,0 +1,141 @@
+# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
+
+require 'rails_helper'
+
+RSpec.describe Service::GeoCalendar, type: :integration do
+  describe '#location' do
+    describe 'testing some locations' do
+      subject(:lookup_result) { described_class.location(ip_address) }
+
+      shared_examples 'contains correct data for location' do
+        it { is_expected.to include(expected_result) }
+      end
+
+      context 'with default/fallback values' do
+        let(:expected_result) do
+          {
+            'name'     => 'My Calendar',
+            'timezone' => 'America/Los_Angeles',
+            'ical_url' => '',
+          }
+        end
+
+        context 'with invalid ip address' do
+          let(:ip_address) { '127.0.0.0.1' }
+
+          include_examples 'contains correct data for location'
+        end
+
+        context 'with ip address of localhost' do
+          let(:ip_address) { '127.0.0.1' }
+
+          include_examples 'contains correct data for location'
+        end
+      end
+
+      context 'with correct results for Swiss ip addresses' do
+        let(:expected_result) do
+          {
+            'name'     => 'Switzerland',
+            'timezone' => 'Europe/Zurich',
+            'ical_url' => 'https://www.google.com/calendar/ical/de.ch%23holiday%40group.v.calendar.google.com/public/basic.ics',
+          }
+        end
+
+        context 'with Swiss ip #1' do
+          let(:ip_address) { '195.65.29.254' }
+
+          include_examples 'contains correct data for location'
+        end
+
+        context 'with Swiss ip #2' do
+          let(:ip_address) { '195.191.132.18' }
+
+          include_examples 'contains correct data for location'
+        end
+      end
+
+      context 'with correct results for German ip addresses' do
+        let(:expected_result) do
+          {
+            'name'     => 'Germany',
+            'timezone' => 'Europe/Berlin',
+            'ical_url' => 'https://www.google.com/calendar/ical/de.german%23holiday%40group.v.calendar.google.com/public/basic.ics',
+          }
+        end
+
+        context 'with German ip #1' do
+          let(:ip_address) { '134.109.140.74' }
+
+          include_examples 'contains correct data for location'
+        end
+
+        context 'with German ip #2' do
+          let(:ip_address) { '46.253.55.170' }
+
+          include_examples 'contains correct data for location'
+        end
+      end
+
+      context 'with correct results for US ip addresses' do
+        let(:expected_result) do
+          {
+            'name'     => name,
+            'timezone' => timezone,
+            'ical_url' => 'https://www.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics',
+          }
+        end
+
+        context 'with US ip #1' do
+          let(:ip_address) { '169.229.216.200' }
+          let(:name) { 'United States/California' }
+          let(:timezone) { 'America/Los_Angeles' }
+
+          include_examples 'contains correct data for location'
+        end
+
+        context 'with US ip #2' do
+          let(:ip_address) { '17.171.2.25' }
+          let(:name) { 'United States' }
+          let(:timezone) { 'America/Chicago' }
+
+          include_examples 'contains correct data for location'
+
+          context 'with US ip #3' do
+            let(:ip_address) { '184.168.47.225' }
+
+            include_examples 'contains correct data for location'
+          end
+        end
+      end
+
+      context 'with correct result for Canadian ip address' do
+        let(:expected_result) do
+          {
+            'name'     => 'Canada',
+            'timezone' => 'America/Toronto',
+            'ical_url' => 'https://www.google.com/calendar/ical/en.canadian%23holiday%40group.v.calendar.google.com/public/basic.ics',
+          }
+        end
+
+        let(:ip_address) { '69.172.201.245' }
+
+        include_examples 'contains correct data for location'
+      end
+
+      context 'with correct result for Mexican ip address' do
+        let(:expected_result) do
+          {
+            'name'     => 'Mexico/Mexico City',
+            'timezone' => 'America/Mexico_City',
+            'ical_url' => 'https://www.google.com/calendar/ical/en.mexican%23holiday%40group.v.calendar.google.com/public/basic.ics',
+          }
+        end
+
+        let(:ip_address) { '132.247.70.37' }
+
+        include_examples 'contains correct data for location'
+      end
+    end
+  end
+end

+ 0 - 77
test/integration/geo_calendar_test.rb

@@ -1,77 +0,0 @@
-# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
-
-require 'integration_test_helper'
-
-class GeoIpCalendar < ActiveSupport::TestCase
-
-  # check
-  test 'check some results' do
-
-    result = Service::GeoCalendar.location('127.0.0.0.1')
-    assert(result)
-    assert_equal('My Calendar', result['name'])
-    assert_equal('America/Los_Angeles', result['timezone'])
-    assert_equal('', result['ical_url'])
-
-    result = Service::GeoCalendar.location('127.0.0.1')
-    assert(result)
-    assert_equal('My Calendar', result['name'])
-    assert_equal('America/Los_Angeles', result['timezone'])
-    assert_equal('', result['ical_url'])
-
-    result = Service::GeoCalendar.location('195.65.29.254')
-    assert(result)
-    assert_equal('Switzerland', result['name'])
-    assert_equal('Europe/Zurich', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/de.ch%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('195.191.132.18')
-    assert(result)
-    assert_equal('Switzerland', result['name'])
-    assert_equal('Europe/Zurich', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/de.ch%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('134.109.140.74')
-    assert(result)
-    assert_equal('Germany', result['name'])
-    assert_equal('Europe/Berlin', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/de.german%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('46.253.55.170')
-    assert(result)
-    assert_equal('Germany', result['name'])
-    assert_equal('Europe/Berlin', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/de.german%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('169.229.216.200')
-    assert(result)
-    assert_equal('United States/California', result['name'])
-    assert_equal('America/Los_Angeles', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('17.171.2.25')
-    assert(result)
-    assert_equal('United States', result['name'])
-    assert_equal('America/Chicago', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('184.168.47.225')
-    assert(result)
-    assert_equal('United States', result['name'])
-    assert_equal('America/Chicago', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/en.usa%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('69.172.201.245')
-    assert(result)
-    assert_equal('Canada', result['name'])
-    assert_equal('America/Toronto', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/en.canadian%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-    result = Service::GeoCalendar.location('132.247.70.37')
-    assert(result)
-    assert_equal('Mexico/Mexico City', result['name'])
-    assert_equal('America/Mexico_City', result['timezone'])
-    assert_equal('https://www.google.com/calendar/ical/en.mexican%23holiday%40group.v.calendar.google.com/public/basic.ics', result['ical_url'])
-
-  end
-end