From b09c665611819635067136285c0202b16692ebe2 Mon Sep 17 00:00:00 2001 From: Cameron Koegel <53310569+ckoegel@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:07:26 -0400 Subject: [PATCH] SWI-5429 Update Test Suite and Workflows (#137) * SWI-5429 Update Test Suite and Workflows * remove integration from test names --- .github/workflows/deploy.yml | 2 +- .github/workflows/test-nightly.yml | 105 +++++++++--------- .github/workflows/test-pr.yml | 82 +++++++------- Rakefile | 16 +-- .../calls_api_spec.rb} | 0 .../conferences_api_spec.rb} | 0 .../media_api_spec.rb} | 0 .../messages_api_spec.rb} | 0 .../mfa_api_spec.rb} | 0 .../phone_number_lookup_api_spec.rb} | 0 .../recordings_api_spec.rb} | 0 .../statistics_api_spec.rb} | 0 .../transcriptions_api_spec.rb} | 0 spec/spec_helper.rb | 4 +- spec/{ => unit}/api/calls_api_spec.rb | 0 spec/{ => unit}/api/conferences_api_spec.rb | 0 spec/{ => unit}/api/media_api_spec.rb | 0 spec/{ => unit}/api/messages_api_spec.rb | 0 spec/{ => unit}/api/mfa_api_spec.rb | 0 .../api/phone_number_lookup_api_spec.rb | 0 spec/{ => unit}/api/recordings_api_spec.rb | 0 spec/{ => unit}/api/statistics_api_spec.rb | 0 .../{ => unit}/api/transcriptions_api_spec.rb | 0 spec/{ => unit/client}/api_client_spec.rb | 0 spec/{ => unit/client}/api_error_spec.rb | 0 spec/{ => unit/client}/configuration_spec.rb | 0 spec/{ => unit}/models/bxml/bxml_spec.rb | 0 .../models/bxml/nestable_verb_spec.rb | 0 spec/{ => unit}/models/bxml/response_spec.rb | 0 spec/{ => unit}/models/bxml/verb_spec.rb | 0 .../models/bxml/verbs/bridge_spec.rb | 0 .../models/bxml/verbs/conference_spec.rb | 0 .../models/bxml/verbs/custom_param_spec.rb | 0 .../models/bxml/verbs/forward_spec.rb | 0 .../models/bxml/verbs/gather_spec.rb | 0 .../models/bxml/verbs/hangup_spec.rb | 0 .../models/bxml/verbs/pause_recording_spec.rb | 0 .../models/bxml/verbs/pause_spec.rb | 0 .../models/bxml/verbs/phone_number_spec.rb | 0 .../models/bxml/verbs/play_audio_spec.rb | 0 .../models/bxml/verbs/record_spec.rb | 0 .../models/bxml/verbs/redirect_spec.rb | 0 .../bxml/verbs/resume_recording_spec.rb | 0 .../{ => unit}/models/bxml/verbs/ring_spec.rb | 0 .../models/bxml/verbs/send_dtmf_spec.rb | 0 .../models/bxml/verbs/sip_uri_spec.rb | 0 .../models/bxml/verbs/speak_sentence_spec.rb | 0 .../models/bxml/verbs/start_gather_spec.rb | 0 .../models/bxml/verbs/start_recording_spec.rb | 0 .../models/bxml/verbs/start_stream_spec.rb | 0 .../bxml/verbs/start_transcription_spec.rb | 0 .../models/bxml/verbs/stop_gather_spec.rb | 0 .../models/bxml/verbs/stop_recording_spec.rb | 0 .../models/bxml/verbs/stop_stream_spec.rb | 0 .../bxml/verbs/stop_transcription_spec.rb | 0 .../models/bxml/verbs/stream_param_spec.rb | 0 spec/{ => unit}/models/bxml/verbs/tag_spec.rb | 0 .../models/bxml/verbs/transfer_spec.rb | 0 .../{ => unit}/models/call_state_enum_spec.rb | 0 spec/{ => unit}/models/call_state_spec.rb | 0 .../{ => unit}/models/deferred_result_spec.rb | 0 spec/{ => unit}/models/message_spec.rb | 0 .../models/verify_code_request_spec.rb | 0 63 files changed, 98 insertions(+), 111 deletions(-) rename spec/{integration/calls_api_integration_spec.rb => smoke/calls_api_spec.rb} (100%) rename spec/{integration/conferences_api_integration_spec.rb => smoke/conferences_api_spec.rb} (100%) rename spec/{integration/media_api_integration_spec.rb => smoke/media_api_spec.rb} (100%) rename spec/{integration/messages_api_integration_spec.rb => smoke/messages_api_spec.rb} (100%) rename spec/{integration/mfa_api_integration_spec.rb => smoke/mfa_api_spec.rb} (100%) rename spec/{integration/phone_number_lookup_api_integration_spec.rb => smoke/phone_number_lookup_api_spec.rb} (100%) rename spec/{integration/recordings_api_integration_spec.rb => smoke/recordings_api_spec.rb} (100%) rename spec/{integration/statistics_api_integration_spec.rb => smoke/statistics_api_spec.rb} (100%) rename spec/{integration/transcriptions_api_integration_spec.rb => smoke/transcriptions_api_spec.rb} (100%) rename spec/{ => unit}/api/calls_api_spec.rb (100%) rename spec/{ => unit}/api/conferences_api_spec.rb (100%) rename spec/{ => unit}/api/media_api_spec.rb (100%) rename spec/{ => unit}/api/messages_api_spec.rb (100%) rename spec/{ => unit}/api/mfa_api_spec.rb (100%) rename spec/{ => unit}/api/phone_number_lookup_api_spec.rb (100%) rename spec/{ => unit}/api/recordings_api_spec.rb (100%) rename spec/{ => unit}/api/statistics_api_spec.rb (100%) rename spec/{ => unit}/api/transcriptions_api_spec.rb (100%) rename spec/{ => unit/client}/api_client_spec.rb (100%) rename spec/{ => unit/client}/api_error_spec.rb (100%) rename spec/{ => unit/client}/configuration_spec.rb (100%) rename spec/{ => unit}/models/bxml/bxml_spec.rb (100%) rename spec/{ => unit}/models/bxml/nestable_verb_spec.rb (100%) rename spec/{ => unit}/models/bxml/response_spec.rb (100%) rename spec/{ => unit}/models/bxml/verb_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/bridge_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/conference_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/custom_param_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/forward_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/gather_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/hangup_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/pause_recording_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/pause_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/phone_number_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/play_audio_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/record_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/redirect_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/resume_recording_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/ring_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/send_dtmf_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/sip_uri_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/speak_sentence_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/start_gather_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/start_recording_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/start_stream_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/start_transcription_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/stop_gather_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/stop_recording_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/stop_stream_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/stop_transcription_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/stream_param_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/tag_spec.rb (100%) rename spec/{ => unit}/models/bxml/verbs/transfer_spec.rb (100%) rename spec/{ => unit}/models/call_state_enum_spec.rb (100%) rename spec/{ => unit}/models/call_state_spec.rb (100%) rename spec/{ => unit}/models/deferred_result_spec.rb (100%) rename spec/{ => unit}/models/message_spec.rb (100%) rename spec/{ => unit}/models/verify_code_request_spec.rb (100%) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 78b89334..bcda95e5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -56,7 +56,7 @@ jobs: - name: Install Packages and Test run: | bundle install - rake + rake unit - name: Deploy to Rubygems run: | diff --git a/.github/workflows/test-nightly.yml b/.github/workflows/test-nightly.yml index 528e13b5..2b7fe80b 100644 --- a/.github/workflows/test-nightly.yml +++ b/.github/workflows/test-nightly.yml @@ -1,66 +1,61 @@ -name: Test Main Branch Nightly +name: Nightly Smoke Tests on: - schedule: - - cron: "0 4 * * *" + schedule: + - cron: "0 4 * * *" concurrency: - group: ${{ github.workflow }}-${{ github.head_ref }} - cancel-in-progress: true + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true env: - BW_ACCOUNT_ID: ${{ secrets.BW_ACCOUNT_ID }} - BW_USERNAME: ${{ secrets.BW_USERNAME }} - BW_PASSWORD: ${{ secrets.BW_PASSWORD }} - BW_USERNAME_FORBIDDEN: ${{ secrets.BW_USERNAME_FORBIDDEN }} - BW_PASSWORD_FORBIDDEN: ${{ secrets.BW_PASSWORD_FORBIDDEN }} - BW_VOICE_APPLICATION_ID: ${{ secrets.BW_VOICE_APPLICATION_ID }} - BW_MESSAGING_APPLICATION_ID: ${{ secrets.BW_MESSAGING_APPLICATION_ID }} - BW_NUMBER: ${{ secrets.BW_NUMBER }} - USER_NUMBER: ${{ secrets.USER_NUMBER }} - BASE_CALLBACK_URL: ${{ secrets.BASE_CALLBACK_URL }} - MANTECA_ACTIVE_NUMBER: ${{ secrets.MANTECA_ACTIVE_NUMBER }} - MANTECA_IDLE_NUMBER: ${{ secrets.MANTECA_IDLE_NUMBER }} - MANTECA_BASE_URL: ${{ secrets.MANTECA_BASE_URL }} - MANTECA_APPLICATION_ID: ${{ secrets.MANTECA_APPLICATION_ID }} + BW_ACCOUNT_ID: ${{ secrets.BW_ACCOUNT_ID }} + BW_USERNAME: ${{ secrets.BW_USERNAME }} + BW_PASSWORD: ${{ secrets.BW_PASSWORD }} + BW_USERNAME_FORBIDDEN: ${{ secrets.BW_USERNAME_FORBIDDEN }} + BW_PASSWORD_FORBIDDEN: ${{ secrets.BW_PASSWORD_FORBIDDEN }} + BW_VOICE_APPLICATION_ID: ${{ secrets.BW_VOICE_APPLICATION_ID }} + BW_MESSAGING_APPLICATION_ID: ${{ secrets.BW_MESSAGING_APPLICATION_ID }} + BW_NUMBER: ${{ secrets.BW_NUMBER }} + USER_NUMBER: ${{ secrets.USER_NUMBER }} + BASE_CALLBACK_URL: ${{ secrets.BASE_CALLBACK_URL }} + MANTECA_ACTIVE_NUMBER: ${{ secrets.MANTECA_ACTIVE_NUMBER }} + MANTECA_IDLE_NUMBER: ${{ secrets.MANTECA_IDLE_NUMBER }} + MANTECA_BASE_URL: ${{ secrets.MANTECA_BASE_URL }} + MANTECA_APPLICATION_ID: ${{ secrets.MANTECA_APPLICATION_ID }} jobs: - test_main: - name: Test Main Branch Nightly - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [windows-2022, windows-2019, ubuntu-20.04, ubuntu-22.04] - ruby-version: [2.7, 3.0, 3.1, 3.2, 3.3] - fail-fast: false - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: "main" + test_main: + name: Nightly Smoke Test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: "main" - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.2 - - name: Install Packages and Test - run: | - bundle install - rake - env: - RUBY_VERSION: ${{ matrix.ruby-version }} - OPERATING_SYSTEM: ${{ matrix.os }} + - name: Install Packages and Test + run: | + bundle install + rake smoke + env: + RUBY_VERSION: 3.2 + OPERATING_SYSTEM: ubuntu - notify_for_failures: - name: Notify for Failures - needs: [test_main] - if: failure() - runs-on: ubuntu-latest - steps: - - name: Notify Slack of Failures - uses: Bandwidth/build-notify-slack-action@v2.0.0 - with: - job-status: failure - slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }} - slack-channel: ${{ secrets.SLACK_CHANNEL }} + notify_for_failures: + name: Notify for Failures + needs: [test_main] + if: failure() + runs-on: ubuntu-latest + steps: + - name: Notify Slack of Failures + uses: Bandwidth/build-notify-slack-action@v2.0.0 + with: + job-status: failure + slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }} + slack-channel: ${{ secrets.SLACK_CHANNEL }} diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml index 8ecbea74..b9f237ce 100644 --- a/.github/workflows/test-pr.yml +++ b/.github/workflows/test-pr.yml @@ -1,52 +1,52 @@ name: Test PR on: - pull_request: - branches: - - main + pull_request: + branches: + - main concurrency: - group: ${{ github.workflow }}-${{ github.head_ref }} - cancel-in-progress: true + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true env: - BW_ACCOUNT_ID: ${{ secrets.BW_ACCOUNT_ID }} - BW_USERNAME: ${{ secrets.BW_USERNAME }} - BW_PASSWORD: ${{ secrets.BW_PASSWORD }} - BW_USERNAME_FORBIDDEN: ${{ secrets.BW_USERNAME_FORBIDDEN }} - BW_PASSWORD_FORBIDDEN: ${{ secrets.BW_PASSWORD_FORBIDDEN }} - BW_VOICE_APPLICATION_ID: ${{ secrets.BW_VOICE_APPLICATION_ID }} - BW_MESSAGING_APPLICATION_ID: ${{ secrets.BW_MESSAGING_APPLICATION_ID }} - BW_NUMBER: ${{ secrets.BW_NUMBER }} - USER_NUMBER: ${{ secrets.USER_NUMBER }} - BASE_CALLBACK_URL: ${{ secrets.BASE_CALLBACK_URL }} - MANTECA_ACTIVE_NUMBER: ${{ secrets.MANTECA_ACTIVE_NUMBER }} - MANTECA_IDLE_NUMBER: ${{ secrets.MANTECA_IDLE_NUMBER }} - MANTECA_BASE_URL: ${{ secrets.MANTECA_BASE_URL }} - MANTECA_APPLICATION_ID: ${{ secrets.MANTECA_APPLICATION_ID }} + BW_ACCOUNT_ID: ${{ secrets.BW_ACCOUNT_ID }} + BW_USERNAME: ${{ secrets.BW_USERNAME }} + BW_PASSWORD: ${{ secrets.BW_PASSWORD }} + BW_USERNAME_FORBIDDEN: ${{ secrets.BW_USERNAME_FORBIDDEN }} + BW_PASSWORD_FORBIDDEN: ${{ secrets.BW_PASSWORD_FORBIDDEN }} + BW_VOICE_APPLICATION_ID: ${{ secrets.BW_VOICE_APPLICATION_ID }} + BW_MESSAGING_APPLICATION_ID: ${{ secrets.BW_MESSAGING_APPLICATION_ID }} + BW_NUMBER: ${{ secrets.BW_NUMBER }} + USER_NUMBER: ${{ secrets.USER_NUMBER }} + BASE_CALLBACK_URL: ${{ secrets.BASE_CALLBACK_URL }} + MANTECA_ACTIVE_NUMBER: ${{ secrets.MANTECA_ACTIVE_NUMBER }} + MANTECA_IDLE_NUMBER: ${{ secrets.MANTECA_IDLE_NUMBER }} + MANTECA_BASE_URL: ${{ secrets.MANTECA_BASE_URL }} + MANTECA_APPLICATION_ID: ${{ secrets.MANTECA_APPLICATION_ID }} jobs: - test_pr: - name: Test PR - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [windows-2022, windows-2019, ubuntu-20.04, ubuntu-22.04] - ruby-version: [2.7, 3.0, 3.1, 3.2, 3.3] - fail-fast: false - steps: - - name: Checkout - uses: actions/checkout@v4 + test_pr: + name: Test PR + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-2022, windows-2019, ubuntu-20.04, ubuntu-22.04] + ruby-version: [2.7, 3.0, 3.1, 3.2, 3.3] + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v4 - - name: Set up Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby-version }} + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} - - name: Install Packages and Test - run: | - bundle install - rake - env: - RUBY_VERSION: ${{ matrix.ruby-version }} - OPERATING_SYSTEM: ${{ matrix.os }} + - name: Install Packages and Test + run: | + bundle install + rake unit + env: + RUBY_VERSION: ${{ matrix.ruby-version }} + OPERATING_SYSTEM: ${{ matrix.os }} diff --git a/Rakefile b/Rakefile index 55a4d0a1..f595f003 100644 --- a/Rakefile +++ b/Rakefile @@ -8,20 +8,12 @@ begin desc 'Run Only Unit Tests' RSpec::Core::RakeTask.new(:unit) do |t| - t.pattern = './spec/api/**/*_spec.rb' - end - RSpec::Core::RakeTask.new(:unit) do |t| - t.pattern = './spec/models/**/*_spec.rb' - end - - desc 'Run Only Integration Tests' - RSpec::Core::RakeTask.new(:integration) do |t| - t.pattern = './spec/integration/*_spec.rb' + t.pattern = './spec/unit/**/*_spec.rb' end - desc 'Run Only Client Unit Tests' - RSpec::Core::RakeTask.new(:client) do |t| - t.pattern = './spec/*_spec.rb' + desc 'Run Only Smoke Tests' + RSpec::Core::RakeTask.new(:smoke) do |t| + t.pattern = './spec/smoke/*_spec.rb' end task default: :spec diff --git a/spec/integration/calls_api_integration_spec.rb b/spec/smoke/calls_api_spec.rb similarity index 100% rename from spec/integration/calls_api_integration_spec.rb rename to spec/smoke/calls_api_spec.rb diff --git a/spec/integration/conferences_api_integration_spec.rb b/spec/smoke/conferences_api_spec.rb similarity index 100% rename from spec/integration/conferences_api_integration_spec.rb rename to spec/smoke/conferences_api_spec.rb diff --git a/spec/integration/media_api_integration_spec.rb b/spec/smoke/media_api_spec.rb similarity index 100% rename from spec/integration/media_api_integration_spec.rb rename to spec/smoke/media_api_spec.rb diff --git a/spec/integration/messages_api_integration_spec.rb b/spec/smoke/messages_api_spec.rb similarity index 100% rename from spec/integration/messages_api_integration_spec.rb rename to spec/smoke/messages_api_spec.rb diff --git a/spec/integration/mfa_api_integration_spec.rb b/spec/smoke/mfa_api_spec.rb similarity index 100% rename from spec/integration/mfa_api_integration_spec.rb rename to spec/smoke/mfa_api_spec.rb diff --git a/spec/integration/phone_number_lookup_api_integration_spec.rb b/spec/smoke/phone_number_lookup_api_spec.rb similarity index 100% rename from spec/integration/phone_number_lookup_api_integration_spec.rb rename to spec/smoke/phone_number_lookup_api_spec.rb diff --git a/spec/integration/recordings_api_integration_spec.rb b/spec/smoke/recordings_api_spec.rb similarity index 100% rename from spec/integration/recordings_api_integration_spec.rb rename to spec/smoke/recordings_api_spec.rb diff --git a/spec/integration/statistics_api_integration_spec.rb b/spec/smoke/statistics_api_spec.rb similarity index 100% rename from spec/integration/statistics_api_integration_spec.rb rename to spec/smoke/statistics_api_spec.rb diff --git a/spec/integration/transcriptions_api_integration_spec.rb b/spec/smoke/transcriptions_api_spec.rb similarity index 100% rename from spec/integration/transcriptions_api_integration_spec.rb rename to spec/smoke/transcriptions_api_spec.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8ad2f755..3076a06d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,7 +1,7 @@ # Test Coverage Configuration require 'simplecov' SimpleCov.start do - add_filter 'spec/integration' + add_filter 'spec/smoke' add_filter 'spec/call_utils.rb' add_filter do |source_file| if !source_file.filename.include? 'bandwidth-sdk/models' then @@ -89,7 +89,7 @@ config.password = BW_PASSWORD end calls_api = Bandwidth::CallsApi.new - # cleanup_calls($active_calls, calls_api) # left out due to voice API issues + cleanup_calls($active_calls, calls_api) } # rspec-expectations config goes here. You can use an alternate diff --git a/spec/api/calls_api_spec.rb b/spec/unit/api/calls_api_spec.rb similarity index 100% rename from spec/api/calls_api_spec.rb rename to spec/unit/api/calls_api_spec.rb diff --git a/spec/api/conferences_api_spec.rb b/spec/unit/api/conferences_api_spec.rb similarity index 100% rename from spec/api/conferences_api_spec.rb rename to spec/unit/api/conferences_api_spec.rb diff --git a/spec/api/media_api_spec.rb b/spec/unit/api/media_api_spec.rb similarity index 100% rename from spec/api/media_api_spec.rb rename to spec/unit/api/media_api_spec.rb diff --git a/spec/api/messages_api_spec.rb b/spec/unit/api/messages_api_spec.rb similarity index 100% rename from spec/api/messages_api_spec.rb rename to spec/unit/api/messages_api_spec.rb diff --git a/spec/api/mfa_api_spec.rb b/spec/unit/api/mfa_api_spec.rb similarity index 100% rename from spec/api/mfa_api_spec.rb rename to spec/unit/api/mfa_api_spec.rb diff --git a/spec/api/phone_number_lookup_api_spec.rb b/spec/unit/api/phone_number_lookup_api_spec.rb similarity index 100% rename from spec/api/phone_number_lookup_api_spec.rb rename to spec/unit/api/phone_number_lookup_api_spec.rb diff --git a/spec/api/recordings_api_spec.rb b/spec/unit/api/recordings_api_spec.rb similarity index 100% rename from spec/api/recordings_api_spec.rb rename to spec/unit/api/recordings_api_spec.rb diff --git a/spec/api/statistics_api_spec.rb b/spec/unit/api/statistics_api_spec.rb similarity index 100% rename from spec/api/statistics_api_spec.rb rename to spec/unit/api/statistics_api_spec.rb diff --git a/spec/api/transcriptions_api_spec.rb b/spec/unit/api/transcriptions_api_spec.rb similarity index 100% rename from spec/api/transcriptions_api_spec.rb rename to spec/unit/api/transcriptions_api_spec.rb diff --git a/spec/api_client_spec.rb b/spec/unit/client/api_client_spec.rb similarity index 100% rename from spec/api_client_spec.rb rename to spec/unit/client/api_client_spec.rb diff --git a/spec/api_error_spec.rb b/spec/unit/client/api_error_spec.rb similarity index 100% rename from spec/api_error_spec.rb rename to spec/unit/client/api_error_spec.rb diff --git a/spec/configuration_spec.rb b/spec/unit/client/configuration_spec.rb similarity index 100% rename from spec/configuration_spec.rb rename to spec/unit/client/configuration_spec.rb diff --git a/spec/models/bxml/bxml_spec.rb b/spec/unit/models/bxml/bxml_spec.rb similarity index 100% rename from spec/models/bxml/bxml_spec.rb rename to spec/unit/models/bxml/bxml_spec.rb diff --git a/spec/models/bxml/nestable_verb_spec.rb b/spec/unit/models/bxml/nestable_verb_spec.rb similarity index 100% rename from spec/models/bxml/nestable_verb_spec.rb rename to spec/unit/models/bxml/nestable_verb_spec.rb diff --git a/spec/models/bxml/response_spec.rb b/spec/unit/models/bxml/response_spec.rb similarity index 100% rename from spec/models/bxml/response_spec.rb rename to spec/unit/models/bxml/response_spec.rb diff --git a/spec/models/bxml/verb_spec.rb b/spec/unit/models/bxml/verb_spec.rb similarity index 100% rename from spec/models/bxml/verb_spec.rb rename to spec/unit/models/bxml/verb_spec.rb diff --git a/spec/models/bxml/verbs/bridge_spec.rb b/spec/unit/models/bxml/verbs/bridge_spec.rb similarity index 100% rename from spec/models/bxml/verbs/bridge_spec.rb rename to spec/unit/models/bxml/verbs/bridge_spec.rb diff --git a/spec/models/bxml/verbs/conference_spec.rb b/spec/unit/models/bxml/verbs/conference_spec.rb similarity index 100% rename from spec/models/bxml/verbs/conference_spec.rb rename to spec/unit/models/bxml/verbs/conference_spec.rb diff --git a/spec/models/bxml/verbs/custom_param_spec.rb b/spec/unit/models/bxml/verbs/custom_param_spec.rb similarity index 100% rename from spec/models/bxml/verbs/custom_param_spec.rb rename to spec/unit/models/bxml/verbs/custom_param_spec.rb diff --git a/spec/models/bxml/verbs/forward_spec.rb b/spec/unit/models/bxml/verbs/forward_spec.rb similarity index 100% rename from spec/models/bxml/verbs/forward_spec.rb rename to spec/unit/models/bxml/verbs/forward_spec.rb diff --git a/spec/models/bxml/verbs/gather_spec.rb b/spec/unit/models/bxml/verbs/gather_spec.rb similarity index 100% rename from spec/models/bxml/verbs/gather_spec.rb rename to spec/unit/models/bxml/verbs/gather_spec.rb diff --git a/spec/models/bxml/verbs/hangup_spec.rb b/spec/unit/models/bxml/verbs/hangup_spec.rb similarity index 100% rename from spec/models/bxml/verbs/hangup_spec.rb rename to spec/unit/models/bxml/verbs/hangup_spec.rb diff --git a/spec/models/bxml/verbs/pause_recording_spec.rb b/spec/unit/models/bxml/verbs/pause_recording_spec.rb similarity index 100% rename from spec/models/bxml/verbs/pause_recording_spec.rb rename to spec/unit/models/bxml/verbs/pause_recording_spec.rb diff --git a/spec/models/bxml/verbs/pause_spec.rb b/spec/unit/models/bxml/verbs/pause_spec.rb similarity index 100% rename from spec/models/bxml/verbs/pause_spec.rb rename to spec/unit/models/bxml/verbs/pause_spec.rb diff --git a/spec/models/bxml/verbs/phone_number_spec.rb b/spec/unit/models/bxml/verbs/phone_number_spec.rb similarity index 100% rename from spec/models/bxml/verbs/phone_number_spec.rb rename to spec/unit/models/bxml/verbs/phone_number_spec.rb diff --git a/spec/models/bxml/verbs/play_audio_spec.rb b/spec/unit/models/bxml/verbs/play_audio_spec.rb similarity index 100% rename from spec/models/bxml/verbs/play_audio_spec.rb rename to spec/unit/models/bxml/verbs/play_audio_spec.rb diff --git a/spec/models/bxml/verbs/record_spec.rb b/spec/unit/models/bxml/verbs/record_spec.rb similarity index 100% rename from spec/models/bxml/verbs/record_spec.rb rename to spec/unit/models/bxml/verbs/record_spec.rb diff --git a/spec/models/bxml/verbs/redirect_spec.rb b/spec/unit/models/bxml/verbs/redirect_spec.rb similarity index 100% rename from spec/models/bxml/verbs/redirect_spec.rb rename to spec/unit/models/bxml/verbs/redirect_spec.rb diff --git a/spec/models/bxml/verbs/resume_recording_spec.rb b/spec/unit/models/bxml/verbs/resume_recording_spec.rb similarity index 100% rename from spec/models/bxml/verbs/resume_recording_spec.rb rename to spec/unit/models/bxml/verbs/resume_recording_spec.rb diff --git a/spec/models/bxml/verbs/ring_spec.rb b/spec/unit/models/bxml/verbs/ring_spec.rb similarity index 100% rename from spec/models/bxml/verbs/ring_spec.rb rename to spec/unit/models/bxml/verbs/ring_spec.rb diff --git a/spec/models/bxml/verbs/send_dtmf_spec.rb b/spec/unit/models/bxml/verbs/send_dtmf_spec.rb similarity index 100% rename from spec/models/bxml/verbs/send_dtmf_spec.rb rename to spec/unit/models/bxml/verbs/send_dtmf_spec.rb diff --git a/spec/models/bxml/verbs/sip_uri_spec.rb b/spec/unit/models/bxml/verbs/sip_uri_spec.rb similarity index 100% rename from spec/models/bxml/verbs/sip_uri_spec.rb rename to spec/unit/models/bxml/verbs/sip_uri_spec.rb diff --git a/spec/models/bxml/verbs/speak_sentence_spec.rb b/spec/unit/models/bxml/verbs/speak_sentence_spec.rb similarity index 100% rename from spec/models/bxml/verbs/speak_sentence_spec.rb rename to spec/unit/models/bxml/verbs/speak_sentence_spec.rb diff --git a/spec/models/bxml/verbs/start_gather_spec.rb b/spec/unit/models/bxml/verbs/start_gather_spec.rb similarity index 100% rename from spec/models/bxml/verbs/start_gather_spec.rb rename to spec/unit/models/bxml/verbs/start_gather_spec.rb diff --git a/spec/models/bxml/verbs/start_recording_spec.rb b/spec/unit/models/bxml/verbs/start_recording_spec.rb similarity index 100% rename from spec/models/bxml/verbs/start_recording_spec.rb rename to spec/unit/models/bxml/verbs/start_recording_spec.rb diff --git a/spec/models/bxml/verbs/start_stream_spec.rb b/spec/unit/models/bxml/verbs/start_stream_spec.rb similarity index 100% rename from spec/models/bxml/verbs/start_stream_spec.rb rename to spec/unit/models/bxml/verbs/start_stream_spec.rb diff --git a/spec/models/bxml/verbs/start_transcription_spec.rb b/spec/unit/models/bxml/verbs/start_transcription_spec.rb similarity index 100% rename from spec/models/bxml/verbs/start_transcription_spec.rb rename to spec/unit/models/bxml/verbs/start_transcription_spec.rb diff --git a/spec/models/bxml/verbs/stop_gather_spec.rb b/spec/unit/models/bxml/verbs/stop_gather_spec.rb similarity index 100% rename from spec/models/bxml/verbs/stop_gather_spec.rb rename to spec/unit/models/bxml/verbs/stop_gather_spec.rb diff --git a/spec/models/bxml/verbs/stop_recording_spec.rb b/spec/unit/models/bxml/verbs/stop_recording_spec.rb similarity index 100% rename from spec/models/bxml/verbs/stop_recording_spec.rb rename to spec/unit/models/bxml/verbs/stop_recording_spec.rb diff --git a/spec/models/bxml/verbs/stop_stream_spec.rb b/spec/unit/models/bxml/verbs/stop_stream_spec.rb similarity index 100% rename from spec/models/bxml/verbs/stop_stream_spec.rb rename to spec/unit/models/bxml/verbs/stop_stream_spec.rb diff --git a/spec/models/bxml/verbs/stop_transcription_spec.rb b/spec/unit/models/bxml/verbs/stop_transcription_spec.rb similarity index 100% rename from spec/models/bxml/verbs/stop_transcription_spec.rb rename to spec/unit/models/bxml/verbs/stop_transcription_spec.rb diff --git a/spec/models/bxml/verbs/stream_param_spec.rb b/spec/unit/models/bxml/verbs/stream_param_spec.rb similarity index 100% rename from spec/models/bxml/verbs/stream_param_spec.rb rename to spec/unit/models/bxml/verbs/stream_param_spec.rb diff --git a/spec/models/bxml/verbs/tag_spec.rb b/spec/unit/models/bxml/verbs/tag_spec.rb similarity index 100% rename from spec/models/bxml/verbs/tag_spec.rb rename to spec/unit/models/bxml/verbs/tag_spec.rb diff --git a/spec/models/bxml/verbs/transfer_spec.rb b/spec/unit/models/bxml/verbs/transfer_spec.rb similarity index 100% rename from spec/models/bxml/verbs/transfer_spec.rb rename to spec/unit/models/bxml/verbs/transfer_spec.rb diff --git a/spec/models/call_state_enum_spec.rb b/spec/unit/models/call_state_enum_spec.rb similarity index 100% rename from spec/models/call_state_enum_spec.rb rename to spec/unit/models/call_state_enum_spec.rb diff --git a/spec/models/call_state_spec.rb b/spec/unit/models/call_state_spec.rb similarity index 100% rename from spec/models/call_state_spec.rb rename to spec/unit/models/call_state_spec.rb diff --git a/spec/models/deferred_result_spec.rb b/spec/unit/models/deferred_result_spec.rb similarity index 100% rename from spec/models/deferred_result_spec.rb rename to spec/unit/models/deferred_result_spec.rb diff --git a/spec/models/message_spec.rb b/spec/unit/models/message_spec.rb similarity index 100% rename from spec/models/message_spec.rb rename to spec/unit/models/message_spec.rb diff --git a/spec/models/verify_code_request_spec.rb b/spec/unit/models/verify_code_request_spec.rb similarity index 100% rename from spec/models/verify_code_request_spec.rb rename to spec/unit/models/verify_code_request_spec.rb