Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
        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();
            }
        }
Exemplo n.º 7
0
        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();
            }
        }
Exemplo n.º 9
0
        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();
            }
        }
Exemplo n.º 10
0
        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();
            }
        }
Exemplo n.º 11
0
        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();
            }
        }
Exemplo n.º 12
0
        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();
            }
        }
Exemplo n.º 13
0
        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();
            }
        }
Exemplo n.º 14
0
        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();
            }
        }
Exemplo n.º 16
0
        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();
            }
        }
Exemplo n.º 19
0
        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();
            }
        }
Exemplo n.º 21
0
        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();
            }
        }