ログ監視のための Paper Trail のRspecの書き方

Paper Trail

github.com

概要

バージョン管理ツールのPaper TrailのテストコードをRspecでコーディングするにはざっくりと2つの手順だけで済みます。

  1. rspecで用いられるヘルパーでPaper Trailsのテストフレームワークをインポートする
  2. テストコードを書く

だけです。

手順1 ( ヘルパーの設定 )

# spec/rails_helper.rb
...
require 'paper_trail/frameworks/rspec'

手順2 ( spec の追加 )

describe 'RSpec test group' do
  it 'by default, PaperTrail will be turned off' do
    expect(PaperTrail).to_not be_enabled
  end

  with_versioning do
    it 'within a `with_versioning` block it will be turned on' do
      expect(PaperTrail).to be_enabled
    end
  end

  it 'can be turned on at the `it` or `describe` level', versioning: true do
    expect(PaperTrail).to be_enabled
  end
end

基本的には上記の記述でテストコードが書けます。 また with_versioning で括ることで簡単にバージョン管理が行えているかテストをかけます。

例えば、paper-trail を用いてバージョンが1つしか存在しないことを確認するテストは以下のように記述できます。

with_versioning do
  it 'バージョンが1つのみ存在する' do
    expect(sample_model.versions.length).to eq 1
  end
end