public async Task SetWithMetadataAsync_Test()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}");

            var lib    = new GameRecordLibrary(optionsBuilder);
            var record = await lib.CreateRecordAsync("NINTENDO_NES");

            var guid = record.RecordID;

            record.Metadata.Add("is_test", "true");
            await lib.UpdateRecordAsync(record);

            var newRecord = await lib.GetAllRecordsAsync().FirstAsync();

            Assert.Equal(guid, newRecord.RecordID);
            Assert.Equal(record.PlatformID, newRecord.PlatformID);
            Assert.Contains("is_test", newRecord.Metadata.Keys);
            Assert.Equal("true", newRecord.Metadata["is_test"]);

            newRecord.Metadata.Add("is_test_two", "true");
            await lib.UpdateRecordAsync(newRecord);

            var newNewRecord = await lib.GetAllRecordsAsync().FirstAsync();

            Assert.Equal(guid, newNewRecord.RecordID);
            Assert.Equal(record.PlatformID, newNewRecord.PlatformID);
            Assert.Contains("is_test", newNewRecord.Metadata.Keys);
            Assert.Equal("true", newNewRecord.Metadata["is_test"]);
            Assert.Contains("is_test_two", newNewRecord.Metadata.Keys);
            Assert.Equal("true", newNewRecord.Metadata["is_test_two"]);
        }
        public async Task SetMultipleAsync_Test()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}");
            var lib    = new GameRecordLibrary(optionsBuilder);
            var record = await lib.CreateRecordAsync("NINTENDO_NES");

            var record2 = await lib.CreateRecordAsync("NINTENDO_NES");

            record.Title  = "Test Game";
            record2.Title = "Test Game 2";

            await lib.UpdateRecordAsync(record);

            await lib.UpdateRecordAsync(record2);
        }
        public async Task RemoveMultipleAsync_Test()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}");
            var lib = new GameRecordLibrary(optionsBuilder);

            var record = await lib.CreateRecordAsync("TEST_PLATFORM");

            var record2 = await lib.CreateRecordAsync("TEST_PLATFORM");

            Assert.False(await lib.GetAllRecordsAsync().IsEmptyAsync());
            await lib.DeleteRecordAsync(record);

            await lib.DeleteRecordAsync(record2);

            Assert.True(await lib.GetAllRecordsAsync().IsEmptyAsync());
        }
        public async Task GetGameByPlatformsAsync_Test()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}");
            var lib = new GameRecordLibrary(optionsBuilder);

            await lib.CreateRecordAsync("TEST_PLATFORM");

            Assert.NotEmpty(lib.GetRecords(r => r.PlatformID == "TEST_PLATFORM"));
        }
        public async Task GetGameByGuidAsync_Test()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}");
            var lib = new GameRecordLibrary(optionsBuilder);

            var record = await lib.CreateRecordAsync("TEST_PLATFORM");

            Assert.NotNull(lib.GetRecord(record.RecordID));
        }
        public async Task SetAsync_Test()
        {
            var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>();

            optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}");
            var lib    = new GameRecordLibrary(optionsBuilder);
            var record = await lib.CreateRecordAsync("NINTENDO_NES");

            var guid      = record.RecordID;
            var newRecord = await lib.GetAllRecordsAsync().FirstAsync();

            Assert.Equal(guid, newRecord.RecordID);
            Assert.Equal(record.PlatformID, newRecord.PlatformID);
        }