public async Task DeposeCheque(decimal checkAmount, DeposedCheque @event) { if (checkAmount <= 0) { throw new ArgumentException("added amount should exceed 0"); } if (_blocked && (_amount + checkAmount <= 0)) { throw new ArgumentException("not enough to unblock the account"); } if (DateTime.Today.DayOfWeek == DayOfWeek.Saturday || DateTime.Today.DayOfWeek == DayOfWeek.Sunday) { throw new InvalidTimeZoneException("system out of work"); } if (DateTime.Today.DayOfWeek == DayOfWeek.Friday) { //await Task.Delay(DateTime.Today.AddDays(3).AddHours(9) - DateTime.Now); //for real time testing await Task.Delay(3000); Unblock(new Unblocked(_accountId)); Raise(@event); } else { //await Task.Delay(DateTime.Today.AddDays(1).AddHours(9) - DateTime.Now); //for real time testing await Task.Delay(5000); Unblock(new Unblocked(_accountId)); Raise(@event); } }
public void Can_create_DeposedCheque_Event() { var id = Guid.NewGuid(); var funds = 25.000m; var @event = new DeposedCheque(id, funds); Assert.NotNull(@event); Assert.Equal(id, @event.AccountId); Assert.Equal(funds, @event.Funds); }
private void Apply(DeposedCheque @event) { _amount += @event.Funds; }