Sha256: fe71b283e4bfca3b2d8268fd5c3ff7b5258c74b779f53f81c7a28ed0f3333259
Contents?: true
Size: 970 Bytes
Versions: 1
Compression:
Stored size: 970 Bytes
Contents
# frozen_string_literal: true require_relative 'helpers/resolve_account_helper' require_relative 'helpers/resolve_amount_helper' RSpec::Matchers.define :change_balance_of do |account, owner: nil| include Generalis::RSpec::ResolveAccountHelper include Generalis::RSpec::ResolveAmountHelper match do |transaction| transaction.prepare account = resolve_account(account, owner: owner) entries = transaction.entries.select { |entry| entry.account == account } entries.any? && matches_amount?(entries) end chain(:by) do |amount, currency = nil| @amount = resolve_amount(amount, currency) end # @param entries [Array<Generalis::Entry>] # @return [Boolean] def matches_amount?(entries) return entries.group_by(&:currency).values.any? { |bucket| bucket.sum(&:net_amount).nonzero? } if @amount.nil? entries .select { |entry| entry.currency.casecmp(@amount.currency).zero? } .sum(&:net_amount) == @amount end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
generalis-0.1.0 | lib/rspec/change_balance_of_matcher.rb |