M .rubocop.yml => .rubocop.yml +3 -0
@@ 67,6 67,9 @@ Layout/AccessModifierIndentation:
Layout/FirstParameterIndentation:
EnforcedStyle: consistent
+Layout/MultilineMethodCallIndentation:
+ EnforcedStyle: indented
+
Style/AccessModifierDeclarations:
Enabled: false
M lib/bill_plan_command.rb => lib/bill_plan_command.rb +22 -3
@@ 3,6 3,7 @@
class BillPlanCommand
def self.for(customer)
return ForUnregistered.new(customer) unless customer.registered?
+ return ForNotExpired.new(customer) unless customer.expires_at <= Time.now
unless customer.balance > customer.monthly_price
return ForLowBalance.new(customer)
@@ 16,10 17,15 @@ class BillPlanCommand
end
def call
- @customer.bill_plan(note: "Renew account plan")
+ billed = @customer.bill_plan(note: "Renew account plan") { |db|
+ @customer = Command.execution.customer_repo.with(db: db)
+ .find(@customer.customer_id).sync
+ @customer.balance > @customer.monthly_price &&
+ @customer.expires_at <= Time.now
+ }
Command.reply do |reply|
- reply.note_type = :info
- reply.note_text = "#{@customer.customer_id} billed"
+ reply.note_type = billed ? :info : :error
+ reply.note_text = "#{@customer.customer_id}#{billed ? '' : ' not'} billed"
end
end
@@ 70,4 76,17 @@ class BillPlanCommand
end
end
end
+
+ class ForNotExpired
+ def initialize(customer)
+ @customer = customer
+ end
+
+ def call
+ Command.reply do |reply|
+ reply.note_type = :error
+ reply.note_text = "#{@customer.customer_id} is not expired"
+ end
+ end
+ end
end
M lib/customer_plan.rb => lib/customer_plan.rb +4 -1
@@ 71,9 71,12 @@ class CustomerPlan
def bill_plan(note: nil)
EM.promise_fiber do
- DB.transaction do
+ DB.transaction do |db|
+ next false unless !block_given? || yield(db)
+
charge_for_plan(note)
add_one_month_to_current_plan unless activate_plan_starting_now
+ true
end
end
end
M sgx_jmp.rb => sgx_jmp.rb +1 -2
@@ 46,8 46,7 @@ module SentryOugai
end
LOG.extend SentryOugai
-CONFIG =
- Dhall::Coder
+CONFIG = Dhall::Coder
.new(safe: Dhall::Coder::JSON_LIKE + [Symbol, Proc])
.load(
"(#{ARGV[0]}) : #{__dir__}/config-schema.dhall",
M test/test_electrum.rb => test/test_electrum.rb +4 -8
@@ 28,8 28,7 @@ class ElectrumTest < Minitest::Test
property(:getaddresshistory) { string(:alnum) }
em :test_getaddresshistory
def getaddresshistory(address)
- req =
- stub_rpc("getaddresshistory", address: address)
+ req = stub_rpc("getaddresshistory", address: address)
.to_return(body: { result: "result" }.to_json)
assert_equal "result", @electrum.getaddresshistory(address).sync
assert_requested(req)
@@ 38,8 37,7 @@ class ElectrumTest < Minitest::Test
property(:get_tx_status) { string(:alnum) }
em :test_get_tx_status
def get_tx_status(tx_hash)
- req =
- stub_rpc("get_tx_status", txid: tx_hash)
+ req = stub_rpc("get_tx_status", txid: tx_hash)
.to_return(body: { result: "result" }.to_json)
assert_equal "result", @electrum.get_tx_status(tx_hash).sync
assert_requested(req)
@@ 48,11 46,9 @@ class ElectrumTest < Minitest::Test
property(:gettransaction) { [string(:alnum), string(:xdigit)] }
em :test_gettransaction
def gettransaction(tx_hash, dummy_tx)
- req1 =
- stub_rpc("gettransaction", txid: tx_hash)
+ req1 = stub_rpc("gettransaction", txid: tx_hash)
.to_return(body: { result: dummy_tx }.to_json)
- req2 =
- stub_rpc("deserialize", [dummy_tx])
+ req2 = stub_rpc("deserialize", [dummy_tx])
.to_return(body: { result: { outputs: [] } }.to_json)
assert_kind_of Electrum::Transaction, @electrum.gettransaction(tx_hash).sync
assert_requested(req1)
M test/test_tel_selections.rb => test/test_tel_selections.rb +2 -4
@@ 26,8 26,7 @@ class TelSelectionsTest < Minitest::Test
def test_for_no_rsm
form = Blather::Stanza::X.new
form.fields = [{ var: "q", value: "226" }]
- iris_query =
- TelSelections::ChooseTel::AvailableNumber
+ iris_query = TelSelections::ChooseTel::AvailableNumber
.for(form)
.instance_variable_get(:@iris_query)
assert_equal(
@@ 44,8 43,7 @@ class TelSelectionsTest < Minitest::Test
max 500
end
end
- iris_query =
- TelSelections::ChooseTel::AvailableNumber
+ iris_query = TelSelections::ChooseTel::AvailableNumber
.for(form)
.instance_variable_get(:@iris_query)
assert_equal(