Esempio n. 1
0
        public async Task ConcurentAutoNrGenerationWorksAsExpectedWhenConfigRowIsCreated()
        {
            var tableName = RandomTableNameName();

            Console.WriteLine($"Table name for this test: {tableName}");

            var service1 = new TableStorageAutoNrService(connString, tableName);
            var service2 = new TableStorageAutoNrService(connString, tableName);

            service1.Init();
            service2.Init();

            var offer1 = new TestOffer()
            {
                Date = new DateTime(2015, 11, 21)
            };
            var offer2 = new TestOffer()
            {
                Date = new DateTime(2015, 11, 22)
            };

            NrData nr1 = null;
            var    nr2 = await service2.GetAutoNr <SequenceData, NrData>("rcsoffers", offer2.Id.Value,
                                                                         new AutoNrGenerator <SequenceData, NrData>((sequenceNewNr, config, prev) =>
            {
                nr1 = service2.GetAutoNr <SequenceData, NrData>("rcsoffers", offer1.Id.Value,
                                                                new AutoNrGenerator <SequenceData, NrData>((sequenceNewNr1, config1, prev1) =>
                {
                    var sequence1 = $"OFF-{offer1.Date.Year}/{offer1.Date.Month}/";
                    var nr11 = $"{sequence1}{sequenceNewNr1:d5}";
                    return(new AutoNrResult <SequenceData, NrData>(
                               config1 ?? new SequenceData(),
                               new NrData()
                    {
                        DocumentNr = nr11
                    }));
                })
                                                                ).Result;
                var sequence = $"OFF-{offer2.Date.Year}/{offer2.Date.Month}/";
                var nr = $"{sequence}{sequenceNewNr:d5}";
                return(new AutoNrResult <SequenceData, NrData>(
                           config ?? new SequenceData(),
                           new NrData()
                {
                    DocumentNr = nr
                }
                           ));
            })
                                                                         );

            Assert.AreEqual("OFF-2015/11/00001", nr1.DocumentNr);
            Assert.AreEqual("OFF-2015/11/00002", nr2.DocumentNr);
        }
Esempio n. 2
0
        public async Task GetAutoNrGeneratesUniqueNrsTest()
        {
            var tableName = RandomTableNameName();

            Console.WriteLine($"Table name for this test: {tableName}");

            var service = new TableStorageAutoNrService(connString, tableName);

            service.Init();

            var offers = Enumerable.Range(1, 30).Select(day => new TestOffer()
            {
                Date = new DateTime(2015, 11, day)
            }).ToArray();
            var nrs = new NrData[30];

            for (int i = 0; i < 30; i++)
            {
                var offer     = offers[i];
                var generator = new AutoNrGenerator <SequenceData, NrData>((sequenceNewNr, config, prev) =>
                {
                    var sequence = $"OFF-{offer.Date.Year}/{offer.Date.Month}/";
                    var nr       = $"{sequence}{sequenceNewNr:d5}";
                    return(new AutoNrResult <SequenceData, NrData>(
                               config ?? new SequenceData(),
                               new NrData()
                    {
                        DocumentNr = nr
                    }));
                });
                nrs[i] = await service.GetAutoNr("rcsoffers", offer.Id.Value, generator);

                //Console.WriteLine(nrs[i]);
            }
            for (int i = 0; i < 30; i++)
            {
                Assert.AreEqual($"OFF-2015/11/{i + 1:d5}", nrs[i].DocumentNr);
            }
        }