# frozen_string_literal: true # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later require 'rails_helper' describe InsertBillingSubscriptions, skip: true do let(:sub) do # billing_plan = Qx.insert_into(:billing_plans).values({name: 'test_bp', amount: 0, stripe_plan_id: 'stripe_bp', created_at: Time.current, updated_at: Time.current}).returning('*').execute.last # InsertBillingSubscriptions.trial(3624, billing_plan['stripe_plan_id'])[:json] end describe '.trial' do it 'creates the record' do sub expect(sub['id']).to be_present end end describe '.check_trial' do it 'marks as inactive after 10 days' do sub Timecop.freeze(10.days.from_now) { InsertBillingSubscriptions.check_trial(sub['id']) } updated = Qx.fetch(:billing_subscriptions, sub['id']).last expect(updated['status']).to eq('inactive') end it 'does not change the status if not still trialing after 10 days' do sub Qx.update(:billing_subscriptions).set(status: 'active').where('id = $id', id: sub['id']).execute Timecop.freeze(10.days.from_now) { InsertBillingSubscriptions.check_trial(sub['id']) } updated = Qx.fetch(:billing_subscriptions, sub['id']).last expect(updated['status']).to eq('active') end end end