Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'yaml'
- require 'pp'
- class BankAccount
- attr_accessor :balance
- attr_accessor :history
- attr_accessor :name
- @@minimum_balance = 200
- @@overdraft_fee = 10
- def self.filename(name)
- "#{name}.yml"
- end
- def initialize(balance, name)
- if balance < @@minimum_balance
- raise ArgumentError, "You don't have the minimum amount"
- end
- @balance = balance
- @name = name
- save_transaction(BankAccount.filename(@name))
- end
- def balance
- return @balance
- end
- def save_transaction(name_on_account)
- if File.exist?(name_on_account)
- open_yaml_file = YAML.load_file(BankAccount.filename(@name))
- @history = open_yaml_file
- get_balance = open_yaml_file[-1][-1]
- @balance = (get_balance[-4..-1]).to_i
- else
- @history = []
- File.open(BankAccount.filename(@name), 'w+') { |file| file.write(@history)}
- end
- end
- def save_my_history
- File.open(BankAccount.filename(@name), 'w+') { |file| file.write(@history) }
- end
- def transaction(type, value)
- array_history = [type, value, "your balance is: #{@balance}"]
- @history << array_history
- save_my_history
- # output = YAML.dump @history
- # File.open(BankAccount.filename(@name), 'w') { |file| file.write(@history.to_yaml) }
- # File.open(BankAccount.filename(@name), 'w') {|file| file.write(output) }
- end
- def deposit(value)
- @balance += value
- transaction("d", value)
- end
- def withdrawal(value)
- if @balance - value < 0
- @balance = @balance - (value + @@overdraft_fee)
- transaction("o", value)
- else
- @balance -= value
- transaction("w", value)
- end
- end
- def transfer(value, object)
- self.withdrawal(value)
- object.deposit(value)
- end
- def history
- return @history
- end
- def self.overdraft_fee(fee)
- @@overdraft_fee = fee
- end
- def self.minimum_balance(value)
- @@minimum_balance = value
- end
- end
- # BankAccount.overdraft_fee(50)
- # account = BankAccount.new(500, "Sarah")
- # account2 = BankAccount.new(500, "Jose")
- # account.withdrawal(100)
- # account.deposit(200)
- # account.withdrawal(700)
- # account.deposit(500)
- # account.transfer(250, account2)
- # expect(file1).to eq("[\"w\", 100, \"your balance is: 400\"][\"d\", 200, \"your balance is: 600\"][\"o\", 700, \"your balance is: -150\"][\"d\", 500, \"your balance is: 350\"][\"w\", 250, \"your balance is: 100\"]")
- # expect(file2).to eq("[\"d\", 250, \"your balance is: 750\"]")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement