From ae29e630a4db68f2151929856a9cd4099d5ee1f0 Mon Sep 17 00:00:00 2001 From: hoquanganh Date: Sat, 16 Mar 2024 22:36:45 +0700 Subject: [PATCH] Setup Git CI Rspec --- .github/workflows/ci.yml | 68 +++++++++++++++++++ config/database.yml.github-actions | 8 +++ .../users/documents_controller_spec.rb | 2 +- 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml create mode 100644 config/database.yml.github-actions diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..02801b9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,68 @@ +name: CI Rspec + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main, develop ] + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-22.04 + services: + postgres: + image: postgres:10.8 + ports: + - 5432:5432 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + options: >- + --mount type=tmpfs,destination=/var/lib/postgresql/data + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + strategy: + matrix: + ruby-version: ['3.2.0'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Ruby + # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, + # change this to (see https://github.com/ruby/setup-ruby#versioning): + # uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0 + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + + - name: Install dependent libraries + run: sudo apt-get install libpq-dev + + - name: Bundle install + run: | + gem install bundler + bundle install --jobs 4 --retry 3 + + - name: Setup Database + run: | + cp config/database.yml.github-actions config/database.yml + bundle exec rake db:create + bundle exec rake db:schema:load + env: + RAILS_ENV: test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + + - name: Run RSpec + run: bundle exec rspec --require rails_helper + env: + RAILS_ENV: test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres diff --git a/config/database.yml.github-actions b/config/database.yml.github-actions new file mode 100644 index 0000000..0724691 --- /dev/null +++ b/config/database.yml.github-actions @@ -0,0 +1,8 @@ +test: + adapter: postgresql + host: localhost + encoding: unicode + database: github-actions + pool: 20 + username: <%= ENV["POSTGRES_USER"] %> + password: <%= ENV["POSTGRES_PASSWORD"] %> diff --git a/spec/controllers/users/documents_controller_spec.rb b/spec/controllers/users/documents_controller_spec.rb index 5f4352b..8b1513a 100644 --- a/spec/controllers/users/documents_controller_spec.rb +++ b/spec/controllers/users/documents_controller_spec.rb @@ -123,7 +123,7 @@ it "renders JSON response with success true" do expect(response).to have_http_status(:ok) - expect(JSON.parse(response.body)).to eq({ "success" => true }) + expect(JSON.parse(response.body)).to eq({ "privacy" => true, "success" => true }) end end