public async Task CanPostUpdateAndDeleteCompleteReference()
        {
            GetInMemoryDb(out SqliteConnection connection, out DbContextOptions <ReferencesDbContext> options);

            using (var index = new Index(true, true))
            {
                try
                {
                    Reference reference = new Reference
                    {
                        Id            = Guid.NewGuid(),
                        ApplicationId = 1,
                        Author        = "Theps",
                        Bibliography  = "tri",
                        EditDate      = DateTime.Now,
                        Firstname     = "stein",
                        //ImportXml = "no",
                        Journal        = "the",
                        Keywords       = "natur,nett",
                        Lastname       = "hoem",
                        Middlename     = "Ari",
                        Pages          = "1-3",
                        ReferenceUsage = new[]
                        {
                            new ReferenceUsage {
                                UserId = new Guid("3ed89222-de9a-4df3-9e95-67f7fcac67a3"), ApplicationId = 1
                            }
                        },
                        Summary = "Sum",
                        Title   = "Tiii",
                        Url     = "http://vg.no",
                        UserId  = new Guid("3ed89222-de9a-4df3-9e95-67f7fcac67a3"),
                        Volume  = "1",
                        Year    = "1901"
                    };

                    // Run the test against one instance of the context
                    using (var context = new ReferencesDbContext(options))
                    {
                        var service = new ReferencesController(context, index);
                        await service.Post(reference).ConfigureAwait(false);
                    }

                    var replacementReference = new Reference
                    {
                        ApplicationId   = 2,
                        Author          = "Theps2",
                        Bibliography    = "tri2",
                        EditDate        = DateTime.Now,
                        Firstname       = "stein2",
                        ReferenceString = "no2",
                        Journal         = "the2",
                        Keywords        = "natur,nett2",
                        Lastname        = "hoem2",
                        Middlename      = "Ari2",
                        Pages           = "1-32",
                        ReferenceUsage  = new[]
                        {
                            new ReferenceUsage {
                                UserId = new Guid("3ed89222-de9a-4df3-9e95-67f7fcac67a2"), ApplicationId = 2
                            }
                        },
                        Summary = "Sum2",
                        Title   = "Tiii2",
                        Url     = "http://vg.no2",
                        UserId  = new Guid("3ed89222-de9a-4df3-9e95-67f7fcac67a2"),
                        Volume  = "2",
                        Year    = "1902"
                    };
                    using (var context = new ReferencesDbContext(options))
                    {
                        var service = new ReferencesController(context, index);
                        await service.Put(reference.Id, replacementReference).ConfigureAwait(false);
                    }

                    // Use a separate instance of the context to verify correct data was saved to database
                    using (var context = new ReferencesDbContext(options))
                    {
                        Assert.Equal(1, context.Reference.Count());
                        var service = new ReferencesController(context, index);
                        var getit   = await service.Get(reference.Id).ConfigureAwait(false);

                        var it = getit.Value;

                        Assert.Equal(it.Year, replacementReference.Year);
                        Assert.Equal(it.Volume, replacementReference.Volume);
                        //Assert.Equal(it.ApplicationId, replacementReference.ApplicationId);
                        Assert.Equal(it.Author, replacementReference.Author);
                        Assert.Equal(it.Bibliography, replacementReference.Bibliography);
                        //Assert.Equal(it.EditDate, replacementReference.EditDate);
                        Assert.Equal(it.Firstname, replacementReference.Firstname);
                        //Assert.Equal(it.Id, replacementReference.Id);
                        Assert.Equal(it.ReferenceString, replacementReference.ReferenceString);
                        Assert.Equal(it.Journal, replacementReference.Journal);
                        Assert.Equal(it.Lastname, replacementReference.Lastname);
                        Assert.Equal(it.Middlename, replacementReference.Middlename);
                        Assert.Equal(it.Pages, replacementReference.Pages);
                        Assert.Single(it.ReferenceUsage.ToArray());
                        Assert.Equal(it.ReferenceUsage.First().ApplicationId,
                                     replacementReference.ReferenceUsage.First().ApplicationId);
                        Assert.Equal(it.Summary, replacementReference.Summary);
                        Assert.Equal(it.Title, replacementReference.Title);
                        Assert.Equal(it.Url, replacementReference.Url);
                        Assert.Equal(it.UserId, replacementReference.UserId);
                    }

                    var replacementReference2 = new Reference
                    {
                        ApplicationId   = 2,
                        Author          = "Theps2",
                        Bibliography    = "tri2",
                        EditDate        = DateTime.Now,
                        Firstname       = "stein3",
                        ReferenceString = "no2",
                        Journal         = "the2",
                        Keywords        = "natur,nett2",
                        Lastname        = "hoem2",
                        Middlename      = "Ari2",
                        Pages           = "1-32",
                        Summary         = "Sum2",
                        Title           = "Tiii2",
                        Url             = "http://vg.no2",
                        UserId          = new Guid("3ed89222-de9a-4df3-9e95-67f7fcac67a2"),
                        Volume          = "2",
                        Year            = "1902"
                    };
                    using (var context = new ReferencesDbContext(options))
                    {
                        var service = new ReferencesController(context, index);
                        await service.Put(reference.Id, replacementReference2).ConfigureAwait(false);
                    }

                    using (var context = new ReferencesDbContext(options))
                    {
                        Assert.Equal(1, context.Reference.Count());
                        var service = new ReferencesController(context, index);
                        var getit   = await service.Get(reference.Id).ConfigureAwait(false);

                        var it = getit.Value;

                        Assert.Equal(it.Year, replacementReference2.Year);
                        Assert.Equal(it.Volume, replacementReference2.Volume);
                        //Assert.Equal(it.ApplicationId, replacementReference.ApplicationId);
                        Assert.Equal(it.Author, replacementReference2.Author);
                        Assert.Equal(it.Bibliography, replacementReference2.Bibliography);
                        //Assert.Equal(it.EditDate, replacementReference.EditDate);
                        Assert.Equal(it.Firstname, replacementReference2.Firstname);
                        //Assert.Equal(it.Id, replacementReference.Id);
                        Assert.Equal(it.ReferenceString, replacementReference2.ReferenceString);
                        Assert.Equal(it.Journal, replacementReference2.Journal);
                        Assert.Equal(it.Lastname, replacementReference2.Lastname);
                        Assert.Equal(it.Middlename, replacementReference2.Middlename);
                        Assert.Equal(it.Pages, replacementReference2.Pages);
                        Assert.Single(it.ReferenceUsage.ToArray());
                        Assert.Equal(it.ReferenceUsage.First().ApplicationId,
                                     replacementReference.ReferenceUsage.First().ApplicationId);
                        Assert.Equal(it.Summary, replacementReference2.Summary);
                        Assert.Equal(it.Title, replacementReference2.Title);
                        Assert.Equal(it.Url, replacementReference2.Url);
                        Assert.Equal(it.UserId, replacementReference2.UserId);
                    }
                }
                finally
                {
                    connection.Close();
                }
            }
        }