public ContractQueryParameterDto Add(ContractQueryParameterDto dto)
 {
     ContractQueryParameters.Add(dto);
     return(dto);
 }
Example #2
0
        public async Task ContractQueries()
        {
            var contractDto = new SubscriberContractDto
            {
                SubscriberId = 999,
                Id           = 1001,
                Abi          = "{}",
                Name         = "StandardContract"
            };

            //dummy values - purely to ensure the repo returns all expected values
            //not meant to be actually consistent with a typical record
            var contractQuery = new ContractQueryDto
            {
                ContractId      = contractDto.Id,
                ContractAddress = "ContractAddress",
                ContractAddressParameterNumber   = 2,
                ContractAddressSource            = ContractAddressSource.EventParameter,
                ContractAddressStateVariableName = "ContractAddressStateVariableName",
                EventHandlerId              = 200,
                EventStateOutputName        = "EventStateOutputName",
                FunctionSignature           = "FunctionSignature",
                SubscriptionStateOutputName = "SubscriptionStateOutputName"
            };

            var queryParam1 = new ContractQueryParameterDto
            {
                ContractQueryId      = contractQuery.EventHandlerId,
                EventParameterNumber = 1,
                Order          = 1,
                EventStateName = "EventStateName",
                Id             = 567,
                Source         = EventValueSource.EventParameters,
                Value          = "Value"
            };

            var queryParam2 = new ContractQueryParameterDto
            {
                ContractQueryId      = contractQuery.EventHandlerId,
                EventParameterNumber = 2,
                Order          = 2,
                EventStateName = "EventStateName",
                Id             = 568,
                Source         = EventValueSource.EventParameters,
                Value          = "Value"
            };

            var queryParameterDtos = new[] { queryParam1, queryParam2 };

            await Fixture.ConfigRepo.SubscriberContracts.UpsertAsync(contractDto);

            await Fixture.ConfigRepo.ContractQueries.UpsertAsync(contractQuery);

            await Fixture.ConfigRepo.ContractQueryParameters.UpsertAsync(queryParam1);

            await Fixture.ConfigRepo.ContractQueryParameters.UpsertAsync(queryParam2);

            var configFromRepo = await Fixture.ConfigRepo.EventContractQueries.GetAsync(contractDto.SubscriberId, contractQuery.EventHandlerId);

            Assert.Equal(contractDto.Abi, configFromRepo.Contract.Abi);
            Assert.Equal(contractQuery.ContractAddress, configFromRepo.Query.ContractAddress);
            Assert.Equal(contractQuery.ContractAddressParameterNumber, configFromRepo.Query.ContractAddressParameterNumber);
            Assert.Equal(contractQuery.ContractAddressSource, configFromRepo.Query.ContractAddressSource);
            Assert.Equal(contractQuery.ContractAddressStateVariableName, configFromRepo.Query.ContractAddressStateVariableName);
            Assert.Equal(contractQuery.EventStateOutputName, configFromRepo.Query.EventStateOutputName);
            Assert.Equal(contractQuery.FunctionSignature, configFromRepo.Query.FunctionSignature);
            Assert.Equal(contractQuery.SubscriptionStateOutputName, configFromRepo.Query.SubscriptionStateOutputName);

            Assert.Equal(queryParameterDtos.Length, configFromRepo.Parameters.Length);

            for (var i = 0; i < queryParameterDtos.Length; i++)
            {
                var dto    = queryParameterDtos[i];
                var actual = configFromRepo.Parameters[i];

                Assert.Equal(dto.EventParameterNumber, actual.EventParameterNumber);
                Assert.Equal(dto.EventStateName, actual.EventStateName);
                Assert.Equal(dto.Order, actual.Order);
                Assert.Equal(dto.Source, actual.Source);
                Assert.Equal(dto.Value, actual.Value);
            }
        }