Exemplo n.º 1
0
 public void InitiateDatabase()
 {
     using (ICiDashboardContext ctx = _factory.Create())
     {
         // ReSharper disable once ReturnValueOfPureMethodIsNotUsed
         ctx.Projects.FirstOrDefault();
     }
 }
 public async Task <IEnumerable <Project> > GetProjects(string username)
 {
     using (ICiDashboardContext context = CtxFactory.Create())
     {
         return(await context.Projects
                .Where(p => p.User == username)
                .Include(p => p.BuildConfigs)
                .OrderBy(p => p.Order)
                .ToListAsync());
     }
 }
        public async Task UpdateBuildConfigCiExternalId_ReturnsBuildConfigUpdatedWithNewNameAndCiExternalId()
        {
            _fixture.Customize <BuildConfig>(c => c.Without(f => f.Project));
            IQueryable <BuildConfig> builds = _fixture
                                              .CreateMany <BuildConfig>()
                                              .AsQueryable();
            BuildConfig build = builds.First();

            DbSet <BuildConfig> buildsSet = A.Fake <DbSet <BuildConfig> >(builder => builder
                                                                          .Implements(typeof(IQueryable <BuildConfig>))
                                                                          .Implements(typeof(IDbAsyncEnumerable <BuildConfig>)));

            A.CallTo(() => ((IDbAsyncEnumerable <BuildConfig>)buildsSet).GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <BuildConfig>(builds.GetEnumerator()));
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).Provider)
            .Returns(new TestDbAsyncQueryProvider <BuildConfig>(builds.Provider));
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).Expression).Returns(builds.Expression);
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).ElementType).Returns(builds.ElementType);
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).GetEnumerator()).Returns(builds.GetEnumerator());

            ICiDashboardContext context = A.Fake <ICiDashboardContext>();

            A.CallTo(() => context.BuildConfigs).Returns(buildsSet);

            ICiDashboardContextFactory factory = A.Fake <ICiDashboardContextFactory>();

            A.CallTo(() => factory.Create()).Returns(context);

            _fixture.Inject(factory);
            _fixture.Inject(context);

            CiDashboardService service = _fixture.Create <CiDashboardService>();

            string newName         = _fixture.Create <string>();
            string newCiExternalId = _fixture.Create <string>();
            bool   result          = await service.UpdateBuildConfigExternalId(build.Id, newName, newCiExternalId);

            A.CallTo(() => context.SaveChanges())
            .MustHaveHappened();

            result.Should()
            .BeTrue();

            build.Name.Should()
            .Be(newName);
            build.CiExternalId.Should()
            .Be(newCiExternalId);
        }
        public Task <Project> AddProject(string username, Project project)
        {
            return(Task.Run(
                       () =>
            {
                using (ICiDashboardContext context = CtxFactory.Create())
                {
                    project.User = username;
                    context.Projects.Add(project);

                    context.SaveChanges();
                }

                return project;
            }));
        }
        public async Task UpdateProjectOrder_ReturnsProjectUpdatedWithNewOrder()
        {
            _fixture.Customize <BuildConfig>(c => c.Without(f => f.Project));
            IQueryable <Project> projects = _fixture
                                            .CreateMany <Project>()
                                            .AsQueryable();
            Project project = projects.First();

            DbSet <Project> projectsSet = A.Fake <DbSet <Project> >(builder => builder
                                                                    .Implements(typeof(IQueryable <Project>))
                                                                    .Implements(typeof(IDbAsyncEnumerable <Project>)));

            A.CallTo(() => ((IDbAsyncEnumerable <Project>)projectsSet).GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <Project>(projects.GetEnumerator()));
            A.CallTo(() => ((IQueryable <Project>)projectsSet).Provider)
            .Returns(new TestDbAsyncQueryProvider <Project>(projects.Provider));
            A.CallTo(() => ((IQueryable <Project>)projectsSet).Expression).Returns(projects.Expression);
            A.CallTo(() => ((IQueryable <Project>)projectsSet).ElementType).Returns(projects.ElementType);
            A.CallTo(() => ((IQueryable <Project>)projectsSet).GetEnumerator()).Returns(projects.GetEnumerator());

            ICiDashboardContext context = A.Fake <ICiDashboardContext>();

            A.CallTo(() => context.Projects).Returns(projectsSet);

            ICiDashboardContextFactory factory = A.Fake <ICiDashboardContextFactory>();

            A.CallTo(() => factory.Create()).Returns(context);

            _fixture.Inject(factory);
            _fixture.Inject(context);

            CiDashboardService service = _fixture.Create <CiDashboardService>();

            int  newPosition = _fixture.Create <int>();
            bool result      = await service.UpdateProjectOrder(project.Id, newPosition);

            A.CallTo(() => context.SaveChanges())
            .MustHaveHappened();

            result.Should()
            .BeTrue();

            project.Order
            .Should()
            .Be(newPosition);
        }
        public async Task RemoveBuildConfig_ShouldRemoveTheBuildConfigFromDatastore_AndReturnRemovedBuildConfig()
        {
            _fixture.Customize <BuildConfig>(c => c.Without(f => f.Project));
            IQueryable <BuildConfig> builds = _fixture
                                              .CreateMany <BuildConfig>()
                                              .AsQueryable();
            BuildConfig build = builds.First();

            DbSet <BuildConfig> buildsSet = A.Fake <DbSet <BuildConfig> >(builder => builder
                                                                          .Implements(typeof(IQueryable <BuildConfig>))
                                                                          .Implements(typeof(IDbAsyncEnumerable <BuildConfig>)));

            A.CallTo(() => ((IDbAsyncEnumerable <BuildConfig>)buildsSet).GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <BuildConfig>(builds.GetEnumerator()));
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).Provider)
            .Returns(new TestDbAsyncQueryProvider <BuildConfig>(builds.Provider));
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).Expression).Returns(builds.Expression);
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).ElementType).Returns(builds.ElementType);
            A.CallTo(() => ((IQueryable <BuildConfig>)buildsSet).GetEnumerator()).Returns(builds.GetEnumerator());

            ICiDashboardContext context = A.Fake <ICiDashboardContext>();

            A.CallTo(() => context.BuildConfigs).Returns(buildsSet);

            ICiDashboardContextFactory factory = A.Fake <ICiDashboardContextFactory>();

            A.CallTo(() => factory.Create()).Returns(context);

            _fixture.Inject(factory);
            _fixture.Inject(context);

            CiDashboardService service = _fixture.Create <CiDashboardService>();

            BuildConfig result = await service.RemoveBuildConfig(build.Id);

            A.CallTo(() => context.SaveChanges())
            .MustHaveHappened();

            A.CallTo(() => buildsSet.Remove(A <BuildConfig> .That.Matches(p => p.Id == build.Id)))
            .MustHaveHappened();

            result.Should()
            .NotBeNull()
            .And.BeSameAs(build);
        }
        public async Task <Project> RemoveProject(int projectId)
        {
            using (ICiDashboardContext context = CtxFactory.Create())
            {
                Project project = await context.Projects
                                  .Where(p => p.Id == projectId)
                                  .FirstOrDefaultAsync();

                if (project == null)
                {
                    return(null);
                }

                context.Projects.Remove(project);
                context.SaveChanges();
                return(project);
            }
        }
        public async Task <bool> UpdateProjectOrder(int projectId, int position)
        {
            using (ICiDashboardContext context = CtxFactory.Create())
            {
                Project project = await context.Projects
                                  .Where(p => p.Id == projectId)
                                  .FirstOrDefaultAsync();

                if (project == null)
                {
                    return(false);
                }

                project.Order = position;
                context.SaveChanges();
                return(true);
            }
        }
        public async Task <bool> UpdateBuildConfigOrder(int buildId, int position)
        {
            using (ICiDashboardContext context = CtxFactory.Create())
            {
                BuildConfig build = await context.BuildConfigs
                                    .Where(p => p.Id == buildId)
                                    .FirstOrDefaultAsync();

                if (build == null)
                {
                    return(false);
                }

                build.Order = position;
                context.SaveChanges();
                return(true);
            }
        }
        public async Task <BuildConfig> RemoveBuildConfig(int buildId)
        {
            using (ICiDashboardContext context = CtxFactory.Create())
            {
                BuildConfig build = await context.BuildConfigs
                                    .Where(p => p.Id == buildId)
                                    .FirstOrDefaultAsync();

                if (build == null)
                {
                    return(null);
                }

                context.BuildConfigs.Remove(build);
                context.SaveChanges();
                return(build);
            }
        }
        public async Task AddBuildConfigToProject_ShouldAddTheNewBuildConfigToProject()
        {
            _fixture.Customize <BuildConfig>(c => c.Without(f => f.Project));
            IQueryable <Project> projects = _fixture
                                            .CreateMany <Project>()
                                            .AsQueryable();
            Project project = projects.First();

            DbSet <Project> projectsSet = A.Fake <DbSet <Project> >(builder => builder
                                                                    .Implements(typeof(IQueryable <Project>))
                                                                    .Implements(typeof(IDbAsyncEnumerable <Project>)));

            A.CallTo(() => ((IDbAsyncEnumerable <Project>)projectsSet).GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <Project>(projects.GetEnumerator()));
            A.CallTo(() => ((IQueryable <Project>)projectsSet).Provider)
            .Returns(new TestDbAsyncQueryProvider <Project>(projects.Provider));
            A.CallTo(() => ((IQueryable <Project>)projectsSet).Expression).Returns(projects.Expression);
            A.CallTo(() => ((IQueryable <Project>)projectsSet).ElementType).Returns(projects.ElementType);
            A.CallTo(() => ((IQueryable <Project>)projectsSet).GetEnumerator()).Returns(projects.GetEnumerator());

            ICiDashboardContext context = A.Fake <ICiDashboardContext>();

            A.CallTo(() => context.Projects).Returns(projectsSet);

            ICiDashboardContextFactory factory = A.Fake <ICiDashboardContextFactory>();

            A.CallTo(() => factory.Create()).Returns(context);

            _fixture.Inject(factory);
            _fixture.Inject(context);

            BuildConfig build = _fixture
                                .Create <BuildConfig>();

            CiDashboardService service = _fixture.Create <CiDashboardService>();

            BuildConfig result = await service.AddBuildConfigToProject(project.Id, build);

            A.CallTo(() => context.SaveChanges())
            .MustHaveHappened();

            result.Should()
            .NotBeNull();
        }
        public async Task <bool> UpdateBuildConfigExternalId(int buildId, string buildName, string externalId)
        {
            using (ICiDashboardContext context = CtxFactory.Create())
            {
                BuildConfig build = await context.BuildConfigs
                                    .Where(p => p.Id == buildId)
                                    .FirstOrDefaultAsync();

                if (build == null)
                {
                    return(false);
                }

                build.Name         = buildName;
                build.CiExternalId = externalId;
                context.SaveChanges();
                return(true);
            }
        }
        public async Task <BuildConfig> AddBuildConfigToProject(int projectId, BuildConfig buildConfig)
        {
            using (ICiDashboardContext context = CtxFactory.Create())
            {
                Project project = await context.Projects
                                  .Where(p => p.Id == projectId)
                                  .FirstOrDefaultAsync();

                if (project == null)
                {
                    return(null);
                }

                buildConfig.ProjectId = projectId;
                context.BuildConfigs.Add(buildConfig);

                context.SaveChanges();
            }

            return(buildConfig);
        }
        public async Task GetProjects_ReturnCorrectData()
        {
            _fixture.Customize <BuildConfig>(c => c.Without(f => f.Project));
            IQueryable <Project> projects = _fixture
                                            .CreateMany <Project>()
                                            .AsQueryable();
            string username = projects.First().User;

            DbSet <Project> projectsSet = A.Fake <DbSet <Project> >(builder => builder
                                                                    .Implements(typeof(IQueryable <Project>))
                                                                    .Implements(typeof(IDbAsyncEnumerable <Project>)));

            A.CallTo(() => ((IDbAsyncEnumerable <Project>)projectsSet).GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <Project>(projects.GetEnumerator()));
            A.CallTo(() => ((IQueryable <Project>)projectsSet).Provider)
            .Returns(new TestDbAsyncQueryProvider <Project>(projects.Provider));
            A.CallTo(() => ((IQueryable <Project>)projectsSet).Expression).Returns(projects.Expression);
            A.CallTo(() => ((IQueryable <Project>)projectsSet).ElementType).Returns(projects.ElementType);
            A.CallTo(() => ((IQueryable <Project>)projectsSet).GetEnumerator()).Returns(projects.GetEnumerator());

            ICiDashboardContext context = A.Fake <ICiDashboardContext>();

            A.CallTo(() => context.Projects).Returns(projectsSet);

            ICiDashboardContextFactory factory = A.Fake <ICiDashboardContextFactory>();

            A.CallTo(() => factory.Create()).Returns(context);

            _fixture.Inject(factory);
            _fixture.Inject(context);

            CiDashboardService service = _fixture.Create <CiDashboardService>();

            IEnumerable <Project> result = await service.GetProjects(username);

            result.Should()
            .NotBeNull()
            .And.NotBeEmpty()
            .And.BeEquivalentTo(projects.Where(p => p.User == username));
        }
        public async Task AddProject_ReturnCorrectData()
        {
            _fixture.Customize <BuildConfig>(c => c.Without(f => f.Project));
            IQueryable <Project> projects = _fixture
                                            .CreateMany <Project>()
                                            .AsQueryable();
            string username = projects.First().User;

            DbSet <Project> projectsSet = A.Fake <DbSet <Project> >(builder => builder
                                                                    .Implements(typeof(IQueryable <Project>))
                                                                    .Implements(typeof(IDbAsyncEnumerable <Project>)));

            ICiDashboardContext context = A.Fake <ICiDashboardContext>();

            A.CallTo(() => context.Projects).Returns(projectsSet);

            ICiDashboardContextFactory factory = A.Fake <ICiDashboardContextFactory>();

            A.CallTo(() => factory.Create()).Returns(context);

            _fixture.Inject(factory);
            _fixture.Inject(context);

            CiDashboardService service = _fixture.Create <CiDashboardService>();

            Project project = new Project {
                Name = "test"
            };
            await service.AddProject(username, project);

            A.CallTo(() => projectsSet.Add(A <Project> .That.Matches(p => p.Name == project.Name && p.User == username)))
            .MustHaveHappened();

            A.CallTo(() => context.SaveChanges())
            .MustHaveHappened();
        }