Skip to content

Instantly share code, notes, and snippets.

@kaspth
Last active November 1, 2023 02:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kaspth/efb4b5c0c2201564c764aeade08e4ad7 to your computer and use it in GitHub Desktop.
Save kaspth/efb4b5c0c2201564c764aeade08e4ad7 to your computer and use it in GitHub Desktop.
A showcase of oaken, using data from its test suite. Early Access at: https://kaspthrb.gumroad.com/l/open-source-retreat-summer-2023
donuts = accounts.create :kaspers_donuts, name: "Kasper's Donuts"
kasper = users.create :kasper, name: "Kasper", accounts: [donuts]
coworker = users.create :coworker, name: "Coworker", accounts: [donuts]
menu = menus.create account: donuts
plain_donut = menu_items.create menu: menu, name: "Plain", price_cents: 10_00
sprinkled_donut = menu_items.create menu: menu, name: "Sprinkled", price_cents: 10_10
supporter = users.create name: "Super Supporter"
orders.insert_all [user_id: supporter.id, item_id: plain_donut.id] * 10
orders.insert_all \
10.times.map { { user_id: users.create(name: "Customer #{_1}").id, item_id: menu.items.sample.id } }
plans.insert :basic, title: "Basic", price_cents: 10_00
Oaken.prepare do
register Menu::Item
seed :accounts, :data
end
require "test_helper"
class PaginationTest < ActiveSupport::TestCase
seed "cases/pagination" # Allows you to seed custom cases too.
test "pagination sorta" do
assert_operator Order.count, :>=, 100
end
end
require "test_helper"
class AccountTest < ActiveSupport::TestCase
test "something" do
assert accounts.kaspers_donuts # `create :kaspers_donuts` defines a reader method on `accounts` to find the same record again.
end
end
ENV["RAILS_ENV"] ||= "test"
require_relative "../config/environment"
require "rails/test_help"
# ActiveRecord::Base.logger = Logger.new(STDOUT)
class ActiveSupport::TestCase
# Run tests in parallel with specified workers
parallelize workers: :number_of_processors
# Loads from db/seeds.rb to reuse the same data that devs see in browsers and help reinforce your object graph's connections in tests.
include Oaken.seeds
# Override Minitest::Test#run to wrap each test in a transaction.
def run
result = nil
ActiveRecord::Base.transaction(requires_new: true) do
result = super
raise ActiveRecord::Rollback
end
result
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment