Esempio n. 1
0
        public async Task Test_CanReadQueuedTask()
        {
            Faker <QueuedTask> qFaker =
                GetQueuedTaskFaker();

            QueuedTask expectedTask = qFaker
                                      .Generate();

            await mOperations
            .AddQueuedTaskAsync(expectedTask);

            using (NpgsqlConnection conn = await OpenDbConnectionAsync(ConnectionString))
                using (NpgsqlCommand cmd = new NpgsqlCommand($"SELECT * FROM {mMapping.QueueTableName} WHERE task_id = @t_id", conn))
                {
                    cmd.Parameters.AddWithValue("t_id",
                                                NpgsqlDbType.Uuid,
                                                expectedTask.Id);

                    await cmd.PrepareAsync();

                    using (NpgsqlDataReader rdr = await cmd.ExecuteReaderAsync())
                    {
                        if (await rdr.ReadAsync())
                        {
                            QueuedTask actualTask = await rdr.ReadQueuedTaskAsync();

                            Assert.NotNull(actualTask);
                            Assert.NotNull(actualTask.Payload);
                            Assert.IsInstanceOf <SampleTaskPayload>(actualTask.Payload);

                            Assert.AreEqual((( SampleTaskPayload )expectedTask.Payload).Counter,
                                            (( SampleTaskPayload )actualTask.Payload).Counter);

                            Assert.AreEqual(expectedTask.Id, actualTask.Id);
                            Assert.IsTrue(actualTask.LockedUntilTs.EqualsAproximately(expectedTask.LockedUntilTs));
                            Assert.AreEqual(expectedTask.Type, actualTask.Type);
                            Assert.AreEqual(expectedTask.Source, actualTask.Source);
                            Assert.AreEqual(expectedTask.Priority, actualTask.Priority);

                            Assert.IsTrue(actualTask.PostedAtTs.EqualsAproximately(expectedTask.PostedAtTs));

                            Assert.Greater(actualTask.LockHandleId, 0);
                        }
                    }

                    await conn.CloseAsync();
                }
        }