60 lines
1.7 KiB
Ruby
60 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe Api::ContractTemplatesController, type: :controller do
|
|
let(:current_user) { create(:user) }
|
|
let(:project) { create(:project, name: 'first', account: current_user.primary_account) }
|
|
|
|
describe '#index' do
|
|
it 'returns a succesful response' do
|
|
create(:contract_template, name: 'ct1', project_id: project.id)
|
|
|
|
sign_in_to_api(current_user)
|
|
get :index, params: { project_id: project.id }
|
|
|
|
expect(response).to be_successful
|
|
old_body = response.body
|
|
|
|
get :index, params: { project_id: project.id, updated_since: (DateTime.current + 10.days).to_date.to_s }
|
|
expect(response.body).not_to eq(old_body)
|
|
end
|
|
end
|
|
|
|
describe '#show' do
|
|
it 'returns a succesful response' do
|
|
tested_release = create(:contract_template, name: 'ct1', project_id: project.id)
|
|
|
|
sign_in_to_api(current_user)
|
|
get :show, params: { id: tested_release.id }
|
|
|
|
expect(response).to be_successful
|
|
end
|
|
|
|
it 'returns electronic signature legal text when present' do
|
|
ct = create(:contract_template, name: 'ct1', project_id: project.id)
|
|
ct.signature_legal_text = "some electronic signature legal text"
|
|
ct.save
|
|
|
|
sign_in_to_api(current_user)
|
|
get :show, params: { id: ct.id }
|
|
|
|
expect(response).to be_successful
|
|
|
|
expect(response.body).to include("signature_legal_text")
|
|
expect(response.body).to include(ct.signature_legal_text.body.as_json)
|
|
end
|
|
|
|
end
|
|
|
|
private
|
|
|
|
def response_body_data_attributes
|
|
JSON.parse(response.body).dig('data', 'attributes')
|
|
end
|
|
|
|
def response_body_included_attributes
|
|
JSON.parse(response.body).dig('included')
|
|
end
|
|
end
|