public void ThrowsOnInsertingSameAuthor() { Assert.Throws <Microsoft.Data.Sqlite.SqliteException>( () => { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var organization = "organization"; var email = "email"; var repo = "repo"; var moment = DateTimeOffset.UtcNow; var author1 = database.Entities().Authors().InsertOperation() .Insert(organization, repo, email, moment); var author2 = database.Entities().Authors().InsertOperation() .Insert(organization, repo, email, moment); } finally { database.Instance().Connection().Close(); } } ); }
public void ChecksInsertedWorkById() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { Assert.True(database.Entities().Works().ContainsOperation().Contains( database.Entities().Works().InsertOperation().Insert( "startCommit", "endCommit", null, database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", DateTimeOffset.UtcNow ).Id(), 1u, new DefaultId(), null, DateTimeOffset.UtcNow ).Id() ) ); } finally { database.Instance().Connection().Close(); } }
public void ChecksInsertedAuthorByCreds() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var organization = "organization"; var repo = "repo"; Assert.True( database.Entities().Authors().ContainsOperation().Contains( organization, repo, database .Entities() .Authors() .InsertOperation() .Insert(organization, repo, "email", DateTimeOffset.UtcNow) .Email() ) ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsValidEndCommit() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var end = "endCommit"; Assert.Equal( end, database.Entities().Works().InsertOperation().Insert( "startCommit", end, null, database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", DateTimeOffset.UtcNow ).Id(), 1u, new DefaultId(), null, DateTimeOffset.UtcNow ).End() ); } finally { database.Instance().Connection().Close(); } }
public void DoesntImplementToJson() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { Assert.Throws <NotImplementedException>( database.Entities().Works().InsertOperation().Insert( "startCommit", "endCommit", null, database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", DateTimeOffset.UtcNow ).Id(), 2u, new DefaultId(), null, DateTimeOffset.UtcNow ).ToJson ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsValidPreviousRating() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var author = database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", DateTimeOffset.UtcNow ); var previous = database.Entities().Ratings().InsertOperation().Insert( 12d, null, null, new DefaultId(), database.Entities().Works().InsertOperation().Insert( "startCommit1", "endCommit1", null, author.Id(), 12u, new DefaultId(), null, DateTimeOffset.UtcNow ).Id(), author.Id() ); Assert.Equal( previous.Id(), database.Entities().Ratings().InsertOperation().Insert( 1100d, null, null, previous.Id(), database.Entities().Works().InsertOperation().Insert( "startCommit2", "endCommit2", null, author.Id(), 1u, new DefaultId(), null, DateTimeOffset.UtcNow ).Id(), author.Id() ).PreviousRating().Id() ); } finally { database.Instance().Connection().Close(); } }
public void AllowsSameAuthorForTwoRepos() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var organization = "organization"; var email = "email"; var moment = DateTimeOffset.UtcNow; var author1 = database.Entities().Authors().InsertOperation() .Insert(organization, "repo1", email, moment); var author2 = database.Entities().Authors().InsertOperation() .Insert(organization, "repo2", email, moment); Assert.Equal( author1.Organization() + author1.Email(), author2.Organization() + author2.Email() ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsLastInsertedWorkFirst() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var createdAt = DateTimeOffset.UtcNow; database.Entities().Works().InsertOperation().Insert( "start1", "end1", null, database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "author", createdAt ).Id(), 1u, new DefaultId(), null, createdAt ); var last = database.Entities().Works().InsertOperation().Insert( "start2", "end2", null, database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "other author", createdAt ).Id(), 2u, new DefaultId(), null, createdAt ); Assert.Equal( last.Id(), database.Entities().Works().GetOperation().Last("organization", "repo", createdAt).First().Id() ); } finally { database.Instance().Connection().Close(); } }
public void InsertsLongEmail() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var organization = "organization"; var repo = "repo"; var email = "longer.than.50.longer.than.50.longer.than.50.longer.than.50.longer.than.50"; Assert.Equal( email, database .Entities() .Authors() .InsertOperation() .Insert(organization, repo, email, DateTimeOffset.UtcNow) .Email() ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsValidRepository() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var repo = "repo"; Assert.Equal( repo, database .Entities() .Authors() .InsertOperation() .Insert("organization", repo, "email", DateTimeOffset.UtcNow) .Repository() ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsValidCountedDeletions() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var author = database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", DateTimeOffset.UtcNow ); uint?deletions = 123u; Assert.Equal( deletions, database.Entities().Ratings().InsertOperation().Insert( 1100d, deletions, null, new DefaultId(), database.Entities().Works().InsertOperation().Insert( "startCommit", "endCommit", null, author.Id(), 1u, new DefaultId(), null, DateTimeOffset.UtcNow ).Id(), author.Id() ) .CountedDeletions() ); } finally { database.Instance().Connection().Close(); } }
public void ChecksInsertedAuthorById() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { Assert.True(database.Entities().Authors().ContainsOperation() .Contains(database.Entities().Authors().InsertOperation() .Insert("organization", "repository", "email", DateTimeOffset.UtcNow).Id())); } finally { database.Instance().Connection().Close(); } }
public void ReturnsInsertedAuthorById() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var author = database.Entities().Authors().InsertOperation() .Insert("organization", "repo", "email", DateTimeOffset.UtcNow); Assert.Equal(author.Id(), database.Entities().Authors().GetOperation().Author(author.Id()).Id()); } finally { database.Instance().Connection().Close(); } }
public void ChecksIfANewerWorkExists() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var olderMoment = DateTimeOffset.UtcNow; var newerMoment = olderMoment + TimeSpan.FromHours(1); database.Entities().Works().InsertOperation().Insert( "startCommit", "endCommit", null, database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", newerMoment ).Id(), 1u, new DefaultId(), null, newerMoment ); Assert.True( database.Entities().Works().ContainsOperation().Contains( "organization", "repo", olderMoment ) ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsInsertedRatingByWorkId() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var author = database.Entities().Authors().InsertOperation() .Insert("organization", "repo", "email", DateTimeOffset.UtcNow); var work = database.Entities().Works().InsertOperation().Insert( "startCommit", "endCommit", null, author.Id(), 1u, new DefaultId(), null, DateTimeOffset.UtcNow ); var rating = database.Entities().Ratings().InsertOperation().Insert( 1100d, null, null, new DefaultId(), work.Id(), author.Id() ); Assert.Equal(rating.Id(), database.Entities().Ratings().GetOperation().RatingsOf(work.Id()).Single().Id()); } finally { database.Instance().Connection().Close(); } }
public void ReturnsWhenItWasCreated() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var moment1 = DateTimeOffset.UtcNow; var moment2 = moment1 + TimeSpan.FromDays(1); Assert.Equal( moment2, database.Entities().Works().InsertOperation().Insert( "startCommit", "endCommit", "sinceCommit", database.Entities().Authors().InsertOperation().Insert( "organization", "repo", "email", moment1 ) .Id(), 1u, new DefaultId(), null, moment2 ) .CreatedAt() ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsEmptyListIfNotFoundByWorkId() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { Assert.Empty(database.Entities().Ratings().GetOperation().RatingsOf(new DefaultId(Guid.NewGuid()))); } finally { database.Instance().Connection().Close(); } }
public void ReturnsUnfilledRatingIfNotFoundByAuthorId() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { Assert.False(database.Entities().Ratings().GetOperation().RatingOf(new DefaultId(Guid.NewGuid())).Id() .Filled()); } finally { database.Instance().Connection().Close(); } }
public void ReturnsWhenItWasCreated() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var moment1 = DateTimeOffset.UtcNow; Assert.Equal( moment1, database.Entities().Authors().InsertOperation().Insert("organization", "repo", "email", moment1).CreatedAt() ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsLastInsertedRatingsOfAuthor() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var author = database.Entities().Authors().InsertOperation() .Insert("organization", "repo", "email", DateTimeOffset.UtcNow); var date = new DateTimeOffset(2020, 1, 1, 0, 0, 0, TimeSpan.Zero); var work1 = database.Entities().Works().InsertOperation().Insert( "startCommit1", "endCommit1", null, author.Id(), 1u, new DefaultId(), null, date ); var rating1 = database.Entities().Ratings().InsertOperation().Insert( 1100d, null, null, new DefaultId(), work1.Id(), author.Id() ); var work2 = database.Entities().Works().InsertOperation().Insert( "startCommit2", "endCommit2", null, author.Id(), 1u, new DefaultId(), null, work1.CreatedAt() + TimeSpan.FromHours(0.5) ); var rating2 = database.Entities().Ratings().InsertOperation().Insert( 1200d, null, null, new DefaultId(), work2.Id(), author.Id() ); Assert.Equal( rating2.Id(), database.Entities().Ratings().GetOperation().Last( author.Id(), work2.CreatedAt() ) .Single() .Id() ); } finally { database.Instance().Connection().Close(); } }
public void ReturnsTop() { var database = new SqliteDatabase(new SqliteConnection("DataSource=:memory:")); database.Instance().Connection().Open(); database.Instance().Create(); try { var organization = "organization"; var repo = "repo"; var moment = DateTimeOffset.UtcNow; var author1 = database.Entities().Authors().InsertOperation() .Insert(organization, repo, "email1", moment); var author2 = database.Entities().Authors().InsertOperation() .Insert(organization, repo, "email2", moment); var author3 = database.Entities().Authors().InsertOperation() .Insert("ANOTHER organization", repo, "email3", moment); var work1 = database.Entities().Works().InsertOperation().Insert( "start", "end", null, author1.Id(), 1u, new DefaultId(), null, moment ); database.Entities().Ratings().InsertOperation().Insert( 100, null, null, new DefaultId(), work1.Id(), author1.Id() ); database.Entities().Ratings().InsertOperation().Insert( 50, null, null, new DefaultId(), work1.Id(), author2.Id() ); var work2 = database.Entities().Works().InsertOperation().Insert( "other start", "other end", null, author3.Id(), 1u, new DefaultId(), null, moment ); database.Entities().Ratings().InsertOperation().Insert( 150, null, null, new DefaultId(), work2.Id(), author3.Id() ); Assert.Equal( author1.Id(), database.Entities() .Authors() .GetOperation() .Top(organization, repo, moment - TimeSpan.FromDays(1)) .First() .Id() ); } finally { database.Instance().Connection().Close(); } }