public static void AssertEqual(LimitV1 expectedLimit, LimitV1 actualLimit)
 {
     Assert.Equal(expectedLimit.Id, actualLimit.Id);
     Assert.Equal(expectedLimit.UserId, actualLimit.UserId);
     Assert.Equal(expectedLimit.Limit, actualLimit.Limit);
     Assert.Equal(expectedLimit.AmountUsed, actualLimit.AmountUsed);
 }
예제 #2
0
        public async Task <LimitV1> UpdateLimitAsync(string correlationId, LimitV1 limit)
        {
            var timing = Instrument(correlationId, "limits.update_limit");
            var result = await _controller.UpdateLimitAsync(correlationId, limit);

            timing.EndTiming();
            return(result);
        }
예제 #3
0
 public async Task <LimitV1> UpdateLimitAsync(string correlationId, LimitV1 limit)
 {
     if (string.IsNullOrEmpty(limit.UserId))
     {
         return(null);
     }
     return(await this._persistence.UpdateAsync(correlationId, limit));
 }
 public async Task <LimitV1> UpdateLimitAsync(string correlationId, LimitV1 limit)
 {
     return(await CallCommandAsync <LimitV1>(
                "update_limit",
                correlationId,
                new
     {
         limit = limit
     }
                ));
 }
예제 #5
0
        public async Task <LimitV1> CreateLimitAsync(string correlationId, LimitV1 limit)
        {
            if (string.IsNullOrEmpty(limit.UserId))
            {
                return(null);
            }
            limit.Id = limit.Id ?? IdGenerator.NextLong();
            var result = await this._persistence.CreateAsync(correlationId, limit);

            return(result);
        }
        /*--------------------Interface's methods--------------------*/
        public async Task <LimitV1> CreateAsync(string correlationId, LimitV1 limit)
        {
            var result = await base.CreateAsync(correlationId, FromPublic(limit));

            return(ToPublic(result));
        }
 private static LimitsMongoDbSchema FromPublic(LimitV1 value)
 {
     return(ObjectMapper.MapTo <LimitsMongoDbSchema>(value));
 }
예제 #8
0
        public async Task It_Should_Do_All_Operations()
        {
            LimitV1 expectedLimit1 = TestModel.CreateLimit1();
            LimitV1 limit1         = await Invoke <LimitV1>("create_limit", new { limit = expectedLimit1 });

            TestModel.AssertEqual(expectedLimit1, limit1);

            var expectedLimit2 = TestModel.CreateLimit2();
            var limit2         = await Invoke <LimitV1>("create_limit", new { limit = expectedLimit2 });

            TestModel.AssertEqual(expectedLimit2, limit2);

            var expectedLimit3 = TestModel.CreateLimit3();
            var limit3         = await Invoke <LimitV1>("create_limit", new { limit = expectedLimit3 });

            TestModel.AssertEqual(expectedLimit3, limit3);

            var page = await Invoke <DataPage <LimitV1> >("get_limits", new { });

            Assert.NotNull(page);
            Assert.Equal(3, page.Data.Count);

            limit1.AmountUsed = limit1.Limit / 2;

            var limit = await Invoke <LimitV1>("update_limit", new { limit = limit1 });

            TestModel.AssertEqual(limit1, limit);

            limit = await Invoke <LimitV1>("get_limit_by_id", new { id = limit1.Id });

            TestModel.AssertEqual(limit1, limit);

            limit = await Invoke <LimitV1>("get_limit_by_user_id", new { user_id = limit1.UserId });

            TestModel.AssertEqual(limit1, limit);

            limit = await Invoke <LimitV1>("decrease_limit_of_user", new { decrease_by = limit1.Limit / 2, user_id = limit1.UserId });

            limit1.Limit -= limit1.Limit / 2;
            TestModel.AssertEqual(limit1, limit);

            limit = await Invoke <LimitV1>("increase_limit_of_user", new { increase_by = limit1.Limit / 2, user_id = limit1.UserId });

            limit1.Limit += limit1.Limit / 2;
            TestModel.AssertEqual(limit1, limit);

            limit = await Invoke <LimitV1>("decrease_amount_used_by_user", new { decrease_by = limit1.AmountUsed / 2, user_id = limit1.UserId });

            limit1.AmountUsed -= limit1.AmountUsed / 2;
            TestModel.AssertEqual(limit1, limit);

            limit = await Invoke <LimitV1>("increase_amount_used_by_user", new { increase_by = limit1.AmountUsed / 2, user_id = limit1.UserId });

            limit1.AmountUsed += limit1.AmountUsed / 2;
            TestModel.AssertEqual(limit1, limit);

            var amountAvailable = await Invoke <ResultV1>("get_amount_available_to_user", new { user_id = limit1.UserId });

            Assert.Equal(amountAvailable.longResult, limit1.Limit - limit1.AmountUsed);

            var isIncreasable = await Invoke <ResultV1>("can_user_add_amount", new { user_id = limit1.UserId, amount = limit1.Limit });

            Assert.False(isIncreasable.boolResult);
            isIncreasable = await Invoke <ResultV1>("can_user_add_amount", new { user_id = limit1.UserId, amount = amountAvailable.longResult });

            Assert.True(isIncreasable.boolResult);

            //Delete all
            limit = await Invoke <LimitV1>("delete_limit_by_id", new { id = limit1.Id });

            Assert.NotNull(limit);
            Assert.Equal(limit1.Id, limit.Id);

            limit = await Invoke <LimitV1>("get_limit_by_id", new { id = limit1.Id });

            Assert.Null(limit);

            limit = await Invoke <LimitV1>("delete_limit_by_id", new { id = limit2.Id });

            Assert.NotNull(limit);
            Assert.Equal(limit2.Id, limit.Id);

            limit = await Invoke <LimitV1>("get_limit_by_id", new { id = limit2.Id });

            Assert.Null(limit);

            limit = await Invoke <LimitV1>("delete_limit_by_id", new { id = limit3.Id });

            Assert.NotNull(limit);
            Assert.Equal(limit3.Id, limit.Id);

            limit = await Invoke <LimitV1>("get_limit_by_id", new { id = limit3.Id });

            Assert.Null(limit);
        }
예제 #9
0
 public Task <LimitV1> UpdateLimitAsync(string correlationId, LimitV1 limit)
 {
     return(null);
 }