summaryrefslogtreecommitdiff
path: root/spec/models/concerns
Commit message (Collapse)AuthorAgeFilesLines
* Create idea of read-only databasetc-geo-read-only-ideaToon Claes2017-10-062-35/+47
| | | | | | | | | | | | In GitLab EE, a GitLab instance can be read-only (e.g. when it's a Geo secondary node). But in GitLab CE it also might be useful to have the "read-only" idea around. So port it back to GitLab CE. Also having the principle of read-only in GitLab CE would hopefully lead to less errors introduced, doing write operations when there aren't allowed for read-only calls. Closes gitlab-org/gitlab-ce#37534.
* Add a additional scope related to alive CI/CD statusesGrzegorz Bizon2017-10-051-0/+12
|
* add controller specmicael.bergeron2017-09-061-3/+3
| | | | also fix some code styling issues
* remove lintmicael.bergeron2017-09-061-2/+2
|
* rework the contributor badgemicael.bergeron2017-09-061-10/+2
| | | | | - only show in merge-requests - show as a little glyph
* round of fixes after code reviewmicael.bergeron2017-09-061-19/+21
|
* WIP: refactor the first-contributor to Issuablemicael.bergeron2017-09-061-0/+73
| | | | | | | this will remove the need make N queries (per-note) at the cost of having to mark notes with an attribute this opens up the possibility for other special roles for notes
* Fix note resolution specsSean McGivern2017-09-061-8/+8
|
* Fuzzy search issuable title or descriptionHiroyuki Sato2017-08-311-11/+31
|
* Add filter by my reactionHiroyuki Sato2017-08-301-7/+15
|
* replace `is_edited?` with `edited?`Maxim Rydkin2017-08-291-3/+3
|
* Enable the RSpec/HookArgument cop and auto-correct offensesRobert Speicher2017-08-102-3/+3
|
* Change all `:empty_project` to `:project`rs-empty_project-defaultRobert Speicher2017-08-029-22/+22
|
* Ensure all project factories use `:repository` trait or `:empty_project`rs-empty_project-cleanupRobert Speicher2017-08-013-5/+5
|
* Remove superfluous lib: true, type: redis, service: true, models: true, ↵Rémy Coutable2017-07-275-5/+5
| | | | | | services: true, no_db: true, api: true Signed-off-by: Rémy Coutable <remy@rymai.me>
* Remove superfluous type defs in specsKeifer Furzland2017-07-272-2/+2
| | | | Signed-off-by: Rémy Coutable <remy@rymai.me>
* Support both internal and external issue trackersJarka Kadlecova2017-07-241-6/+12
|
* Revert "Merge branch 'revert-2c879643' into 'master'"Sean McGivern2017-07-141-21/+0
| | | This reverts merge request !12633
* Support multiple Redis instances based on queue typePaul Charlton2017-07-111-1/+1
|
* Merge branch 'fix-typo-in-sha-attribute-spec' into 'master'Stan Hu2017-07-071-2/+2
|\ | | | | | | | | Fix typo in SHA attribute spec See merge request !12717
| * Fix another typo in SHA attribute specfix-typo-in-sha-attribute-specStan Hu2017-07-071-1/+1
| |
| * Fix typo in SHA attribute specSean McGivern2017-07-071-1/+1
| |
* | Merge branch 'active-record-each-batch' into 'master'Sean McGivern2017-07-071-0/+53
|\ \ | |/ |/| | | | | Added EachBatch for iterating tables in batches See merge request !12707
| * Added EachBatch for iterating tables in batchesactive-record-each-batchYorick Peterse2017-07-071-0/+53
| | | | | | | | | | | | | | This module provides a class method called `each_batch` that can be used to iterate tables in batches in a more efficient way compared to Rails' `in_batches` method. This commit also includes a RuboCop cop to blacklist the use of `in_batches` in favour of this new method.
* | Fix ShaAttribute concern when there is no tablefix-sha-attribute-no-tableSean McGivern2017-07-071-6/+25
|/ | | | | When this is added to a new model, it would fail before the migrations were run - including when trying to run migrations in production mode!
* Add many foreign keys to the projects tableYorick Peterse2017-07-061-1/+1
| | | | | | | | | | | | This removes the need for relying on Rails' "dependent" option for data removal, which is _incredibly_ slow (even when using :delete_all) when deleting large amounts of data. This also ensures data consistency is enforced on DB level and not on application level (something Rails is really bad at). This commit also includes various migrations to add foreign keys to tables that eventually point to "projects" to ensure no rows get orphaned upon removing a project.
* Revert "Merge branch 'revert-12499' into 'master'"revert-2c879643Douwe Maan2017-07-041-0/+21
| | | This reverts merge request !12557
* Reset @full_path to nil when cache expiresDouglas Barbosa Alexandre2017-07-031-3/+4
|
* Expires full_path cache after project is renamedDouglas Barbosa Alexandre2017-06-291-0/+12
|
* Merge branch '34078-allow-to-enable-feature-flags-with-more-granularity' ↵Robert Speicher2017-06-291-0/+19
|\ | | | | | | | | | | | | | | | | into 'master' Allow the feature flags to be enabled/disabled with more granularity Closes #34078 See merge request !12357
| * Rename FLippable to FeatureGate and make `flipper_group` and `user` mutually ↵Rémy Coutable2017-06-271-0/+19
| | | | | | | | | | | | exclusive Signed-off-by: Rémy Coutable <remy@rymai.me>
* | Merge branch 'sha-attributes-for-postgresql-and-mysql' into 'master'Sean McGivern2017-06-291-0/+27
|\ \ | | | | | | | | | | | | Added code for defining SHA attributes See merge request !12555
| * | Added code for defining SHA attributesYorick Peterse2017-06-291-0/+27
| | | | | | | | | | | | | | | | | | These attributes are stored in binary in the database, but exposed as strings. This allows one to query/create data using plain SHA1 hashes as Strings, while storing them more efficiently as binary.
* | | Revert "Merge branch 'dm-drop-default-scope-on-sortable-finders' into 'master'"Adam Niedzielski2017-06-291-21/+0
|/ / | | | | | | | | This reverts commit b07c00032b038f40796a28e34b6dd4c622bad012, reversing changes made to 2b97d76d0b08a778710410df910a7601f6b8e9e7.
* | Merge branch 'feature/sm/34314-add-hasvariable-concern' into 'master'Kamil Trzciński2017-06-291-0/+43
|\ \ | | | | | | | | | | | | | | | | | | Implement `HasVariable` concern Closes #34314 See merge request !12448
| * | Improve small thingsfeature/sm/34314-add-hasvariable-concernShinya Maeda2017-06-281-3/+1
| | |
| * | DecuplinShinya Maeda2017-06-281-0/+45
| |/
* | Drop default ORDER scope when calling a find method on a Sortable modelDouwe Maan2017-06-281-0/+21
|/
* Merge branch 'fix/gb/fix-skipped-pipeline-with-allowed-to-fail-jobs' into ↵Kamil Trzciński2017-06-261-1/+1
|\ | | | | | | | | | | | | | | | | 'master' Fix pipeline status when allowed to fail jobs present Closes #29059 See merge request !11166
| * Fix specs for a concern that implements CI/CD statusesGrzegorz Bizon2017-06-201-1/+1
| |
* | Enable Style/DotPosition Rubocop :cop:Grzegorz Bizon2017-06-214-96/+96
|/
* Improve method names and add more specsFelipe Artur2017-06-161-9/+5
|
* Remove old specs and add new onesFelipe Artur2017-06-161-0/+35
|
* Correct RSpec/SingleLineHook cop offensesRobert Speicher2017-06-145-13/+43
|
* Use :request_store hooks on specsuse-request-store-helper-instead-actual-codeOswaldo Ferreira2017-06-091-10/+1
|
* Port fix-realtime-edited-text-for-issues 9-2-stable fix to master.Luke "Jared" Bennett2017-05-311-0/+11
|
* Merge branch 'rework-authorizations-performance' into 'master'Douwe Maan2017-05-291-117/+0
|\ | | | | | | | | Rework project authorizations and nested groups for better performance See merge request !10885
| * Use CTEs for nested groups and authorizationsYorick Peterse2017-05-171-117/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces the usage of Common Table Expressions (CTEs) to efficiently retrieve nested group hierarchies, without having to rely on the "routes" table (which is an _incredibly_ inefficient way of getting the data). This requires a patch to ActiveRecord (found in the added initializer) to work properly as ActiveRecord doesn't support WITH statements properly out of the box. Unfortunately MySQL provides no efficient way of getting nested groups. For example, the old routes setup could easily take 5-10 seconds depending on the amount of "routes" in a database. Providing vastly different logic for both MySQL and PostgreSQL will negatively impact the development process. Because of this the various nested groups related methods return empty relations when used in combination with MySQL. For project authorizations the logic is split up into two classes: * Gitlab::ProjectAuthorizations::WithNestedGroups * Gitlab::ProjectAuthorizations::WithoutNestedGroups Both classes get the fresh project authorizations (= as they should be in the "project_authorizations" table), including nested groups if PostgreSQL is used. The logic of these two classes is quite different apart from their public interface. This complicates development a bit, but unfortunately there is no way around this. This commit also introduces Gitlab::GroupHierarchy. This class can be used to get the ancestors and descendants of a base relation, or both by using a UNION. This in turn is used by methods such as: * Namespace#ancestors * Namespace#descendants * User#all_expanded_groups Again this class relies on CTEs and thus only works on PostgreSQL. The Namespace methods will return an empty relation when MySQL is used, while User#all_expanded_groups will return only the groups a user is a direct member of. Performance wise the impact is quite large. For example, on GitLab.com Namespace#descendants used to take around 580 ms to retrieve data for a particular user. Using CTEs we are able to reduce this down to roughly 1 millisecond, returning the exact same data. == On The Fly Refreshing Refreshing of authorizations on the fly (= when users.authorized_projects_populated was not set) is removed with this commit. This simplifies the code, and ensures any queries used for authorizations are not mutated because they are executed in a Rails scope (e.g. Project.visible_to_user). This commit includes a migration to schedule refreshing authorizations for all users, ensuring all of them have their authorizations in place. Said migration schedules users in batches of 5000, with 5 minutes between every batch to smear the load around a bit. == Spec Changes This commit also introduces some changes to various specs. For example, some specs for ProjectTeam assumed that creating a personal project would _not_ lead to the owner having access, which is incorrect. Because we also no longer refresh authorizations on the fly for new users some code had to be added to the "empty_project" factory. This chunk of code ensures that the owner's permissions are refreshed after creating the project, something that is normally done in Projects::CreateService.
* | Address reviewDouwe Maan2017-05-241-0/+26
|/
* Merge branch '28359-skip-process-commit-worker-unless-issues-referenced' ↵31977-ensure-all-webpack-bundles-which-include-vue-are-children-of-common_vue-jsDmitriy Zaporozhets2017-05-081-0/+49
|\ | | | | | | | | | | | | | | | | | | into 'master' Use regex to skip unnecessary reference processing in ProcessCommitWorker Closes #28359 See merge request !10867