Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
4aeb4b35
Commit
4aeb4b35
authored
5 years ago
by
Luke Duncalfe
Committed by
Kamil Trzciński
5 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove the store_designs_in_lfs feature flag
https://gitlab.com/gitlab-org/gitlab-ee/issues/12158
parent
4ffb9b3b
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
51 deletions
+37
-51
ee/app/services/design_management/save_designs_service.rb
ee/app/services/design_management/save_designs_service.rb
+0
-2
ee/spec/services/design_management/save_designs_service_spec.rb
...c/services/design_management/save_designs_service_spec.rb
+37
-49
No files found.
ee/app/services/design_management/save_designs_service.rb
View file @
4aeb4b35
...
@@ -121,8 +121,6 @@ module DesignManagement
...
@@ -121,8 +121,6 @@ module DesignManagement
end
end
def
file_content
(
file
,
full_path
)
def
file_content
(
file
,
full_path
)
return
file
.
to_io
if
::
Feature
.
disabled?
(
:store_designs_in_lfs
,
default_enabled:
true
)
transformer
=
::
Lfs
::
FileTransformer
.
new
(
project
,
repository
,
target_branch
)
transformer
=
::
Lfs
::
FileTransformer
.
new
(
project
,
repository
,
target_branch
)
transformer
.
new_file
(
full_path
,
file
.
to_io
).
content
transformer
.
new_file
(
full_path
,
file
.
to_io
).
content
end
end
...
...
This diff is collapsed.
Click to expand it.
ee/spec/services/design_management/save_designs_service_spec.rb
View file @
4aeb4b35
# frozen_string_literal: true
# frozen_string_literal: true
require
"spec_helper"
require
'spec_helper'
describe
DesignManagement
::
SaveDesignsService
do
describe
DesignManagement
::
SaveDesignsService
do
let
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
let
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
...
@@ -18,31 +18,31 @@ describe DesignManagement::SaveDesignsService do
...
@@ -18,31 +18,31 @@ describe DesignManagement::SaveDesignsService do
subject
(
:service
)
{
described_class
.
new
(
project
,
user
,
issue:
issue
,
files:
files
)
}
subject
(
:service
)
{
described_class
.
new
(
project
,
user
,
issue:
issue
,
files:
files
)
}
shared_examples
"a service error"
do
shared_examples
'a service error'
do
it
"returns an error"
,
:aggregate_failures
do
it
'returns an error'
,
:aggregate_failures
do
expect
(
service
.
execute
).
to
match
(
a_hash_including
(
status: :error
))
expect
(
service
.
execute
).
to
match
(
a_hash_including
(
status: :error
))
end
end
end
end
describe
"#execute"
do
describe
'#execute'
do
context
"when the feature is not available"
do
context
'when the feature is not available'
do
before
do
before
do
stub_licensed_features
(
design_management:
false
)
stub_licensed_features
(
design_management:
false
)
end
end
it_behaves_like
"a service error"
it_behaves_like
'a service error'
end
end
context
"when the feature is available"
do
context
'when the feature is available'
do
before
do
before
do
stub_licensed_features
(
design_management:
true
)
stub_licensed_features
(
design_management:
true
)
end
end
context
"when LFS is not enabled"
do
context
'when LFS is not enabled'
do
it_behaves_like
"a service error"
it_behaves_like
'a service error'
end
end
context
"when LFS is enabled"
do
context
'when LFS is enabled'
do
before
do
before
do
allow
(
project
).
to
receive
(
:lfs_enabled?
).
and_return
(
true
)
allow
(
project
).
to
receive
(
:lfs_enabled?
).
and_return
(
true
)
end
end
...
@@ -57,12 +57,12 @@ describe DesignManagement::SaveDesignsService do
...
@@ -57,12 +57,12 @@ describe DesignManagement::SaveDesignsService do
expect
{
service
.
execute
}.
to
change
{
repository_exists
.
call
}.
from
(
false
).
to
(
true
)
expect
{
service
.
execute
}.
to
change
{
repository_exists
.
call
}.
from
(
false
).
to
(
true
)
end
end
it
"updates the creation count"
do
it
'updates the creation count'
do
counter
=
Gitlab
::
UsageCounters
::
DesignsCounter
counter
=
Gitlab
::
UsageCounters
::
DesignsCounter
expect
{
service
.
execute
}.
to
change
{
counter
.
read
(
:create
)
}.
by
(
1
)
expect
{
service
.
execute
}.
to
change
{
counter
.
read
(
:create
)
}.
by
(
1
)
end
end
it
"creates a nice commit in the repository"
do
it
'creates a nice commit in the repository'
do
service
.
execute
service
.
execute
commit
=
design_repository
.
commit
# Get the HEAD
commit
=
design_repository
.
commit
# Get the HEAD
...
@@ -72,7 +72,7 @@ describe DesignManagement::SaveDesignsService do
...
@@ -72,7 +72,7 @@ describe DesignManagement::SaveDesignsService do
expect
(
commit
.
message
).
to
include
(
rails_sample_name
)
expect
(
commit
.
message
).
to
include
(
rails_sample_name
)
end
end
it
"creates a design & a version for the filename if it did not exist"
do
it
'creates a design & a version for the filename if it did not exist'
do
expect
(
issue
.
designs
.
size
).
to
eq
(
0
)
expect
(
issue
.
designs
.
size
).
to
eq
(
0
)
updated_designs
=
service
.
execute
[
:designs
]
updated_designs
=
service
.
execute
[
:designs
]
...
@@ -81,46 +81,34 @@ describe DesignManagement::SaveDesignsService do
...
@@ -81,46 +81,34 @@ describe DesignManagement::SaveDesignsService do
expect
(
updated_designs
.
first
.
versions
.
size
).
to
eq
(
1
)
expect
(
updated_designs
.
first
.
versions
.
size
).
to
eq
(
1
)
end
end
context
"when the `store_designs_in_lfs` feature is enabled"
do
describe
'saving the file to LFS'
do
before
do
before
do
stub_feature_flags
(
store_designs_in_lfs:
true
)
expect_next_instance_of
(
Lfs
::
FileTransformer
)
do
|
transformer
|
expect_next_instance_of
(
Lfs
::
FileTransformer
)
do
|
transformer
|
expect
(
transformer
).
to
receive
(
:lfs_file?
).
and_return
(
true
)
expect
(
transformer
).
to
receive
(
:lfs_file?
).
and_return
(
true
)
end
end
end
end
it
"saves the design to LFS"
do
it
'saves the design to LFS'
do
expect
{
service
.
execute
}.
to
change
{
LfsObject
.
count
}.
by
(
1
)
expect
{
service
.
execute
}.
to
change
{
LfsObject
.
count
}.
by
(
1
)
end
end
it
"saves the repository_type of the LfsObjectsProject as design"
do
it
'saves the repository_type of the LfsObjectsProject as design'
do
expect
do
expect
do
service
.
execute
service
.
execute
end
.
to
change
{
project
.
lfs_objects_projects
.
count
}.
from
(
0
).
to
(
1
)
end
.
to
change
{
project
.
lfs_objects_projects
.
count
}.
from
(
0
).
to
(
1
)
expect
(
project
.
lfs_objects_projects
.
first
.
repository_type
).
to
eq
(
"design"
)
expect
(
project
.
lfs_objects_projects
.
first
.
repository_type
).
to
eq
(
'design'
)
end
end
context
"when the `store_designs_in_lfs` feature is not enabled"
do
before
do
stub_feature_flags
(
store_designs_in_lfs:
false
)
end
it
"does not save the design to LFS"
do
expect
{
service
.
execute
}.
not_to
change
{
LfsObject
.
count
}
end
end
end
end
context
"when a design already exists"
do
context
'when a design already exists'
do
before
do
before
do
# This makes sure the file is created in the repository.
# This makes sure the file is created in the repository.
# otherwise we'd have a database & repository that are not in sync.
# otherwise we'd have a database & repository that are not in sync.
service
.
execute
service
.
execute
end
end
it
"creates a new version for the existing design and updates the file"
do
it
'creates a new version for the existing design and updates the file'
do
expect
(
issue
.
designs
.
size
).
to
eq
(
1
)
expect
(
issue
.
designs
.
size
).
to
eq
(
1
)
expect
(
DesignManagement
::
Version
.
for_designs
(
issue
.
designs
).
size
).
to
eq
(
1
)
expect
(
DesignManagement
::
Version
.
for_designs
(
issue
.
designs
).
size
).
to
eq
(
1
)
...
@@ -135,8 +123,8 @@ describe DesignManagement::SaveDesignsService do
...
@@ -135,8 +123,8 @@ describe DesignManagement::SaveDesignsService do
expect
{
service
.
execute
}.
to
change
{
counter
.
read
(
:update
)
}.
by
1
expect
{
service
.
execute
}.
to
change
{
counter
.
read
(
:update
)
}.
by
1
end
end
context
"when uploading a new design"
do
context
'when uploading a new design'
do
it
"does not link the new version to the existing design"
do
it
'does not link the new version to the existing design'
do
existing_design
=
issue
.
designs
.
first
existing_design
=
issue
.
designs
.
first
updated_designs
=
described_class
.
new
(
project
,
user
,
issue:
issue
,
files:
[
dk_png
])
updated_designs
=
described_class
.
new
(
project
,
user
,
issue:
issue
,
files:
[
dk_png
])
...
@@ -174,14 +162,14 @@ describe DesignManagement::SaveDesignsService do
...
@@ -174,14 +162,14 @@ describe DesignManagement::SaveDesignsService do
end
end
end
end
context
"when uploading multiple files"
do
context
'when uploading multiple files'
do
let
(
:files
)
{
[
rails_sample
,
dk_png
]
}
let
(
:files
)
{
[
rails_sample
,
dk_png
]
}
it
'returns information about both designs in the response'
do
it
'returns information about both designs in the response'
do
expect
(
service
.
execute
).
to
include
(
designs:
have_attributes
(
size:
2
),
status: :success
)
expect
(
service
.
execute
).
to
include
(
designs:
have_attributes
(
size:
2
),
status: :success
)
end
end
it
"creates 2 designs with a single version"
do
it
'creates 2 designs with a single version'
do
expect
{
service
.
execute
}.
to
change
{
issue
.
designs
.
count
}.
from
(
0
).
to
(
2
)
expect
{
service
.
execute
}.
to
change
{
issue
.
designs
.
count
}.
from
(
0
).
to
(
2
)
expect
(
DesignManagement
::
Version
.
for_designs
(
issue
.
designs
).
size
).
to
eq
(
1
)
expect
(
DesignManagement
::
Version
.
for_designs
(
issue
.
designs
).
size
).
to
eq
(
1
)
end
end
...
@@ -191,7 +179,7 @@ describe DesignManagement::SaveDesignsService do
...
@@ -191,7 +179,7 @@ describe DesignManagement::SaveDesignsService do
expect
{
service
.
execute
}.
to
change
{
counter
.
read
(
:create
)
}.
by
2
expect
{
service
.
execute
}.
to
change
{
counter
.
read
(
:create
)
}.
by
2
end
end
it
"creates a single commit"
do
it
'creates a single commit'
do
commit_count
=
->
do
commit_count
=
->
do
design_repository
.
expire_all_method_caches
design_repository
.
expire_all_method_caches
design_repository
.
commit_count
design_repository
.
commit_count
...
@@ -200,7 +188,7 @@ describe DesignManagement::SaveDesignsService do
...
@@ -200,7 +188,7 @@ describe DesignManagement::SaveDesignsService do
expect
{
service
.
execute
}.
to
change
{
commit_count
.
call
}.
by
(
1
)
expect
{
service
.
execute
}.
to
change
{
commit_count
.
call
}.
by
(
1
)
end
end
it
"only does 5 gitaly calls"
,
:request_store
do
it
'only does 5 gitaly calls'
,
:request_store
do
# Some unrelated calls that are usually cached or happen only once
# Some unrelated calls that are usually cached or happen only once
service
.
__send__
(
:repository
).
create_if_not_exists
service
.
__send__
(
:repository
).
create_if_not_exists
service
.
__send__
(
:repository
).
has_visible_content?
service
.
__send__
(
:repository
).
has_visible_content?
...
@@ -210,35 +198,35 @@ describe DesignManagement::SaveDesignsService do
...
@@ -210,35 +198,35 @@ describe DesignManagement::SaveDesignsService do
expect
{
service
.
execute
}.
to
change
{
Gitlab
::
GitalyClient
.
get_request_count
}.
by
(
5
)
expect
{
service
.
execute
}.
to
change
{
Gitlab
::
GitalyClient
.
get_request_count
}.
by
(
5
)
end
end
context
"when uploading too many files"
do
context
'when uploading too many files'
do
let
(
:files
)
{
Array
.
new
(
DesignManagement
::
SaveDesignsService
::
MAX_FILES
+
1
)
{
dk_png
}
}
let
(
:files
)
{
Array
.
new
(
DesignManagement
::
SaveDesignsService
::
MAX_FILES
+
1
)
{
dk_png
}
}
it
"returns the correct error"
do
it
'returns the correct error'
do
expect
(
service
.
execute
[
:message
]).
to
match
(
/only \d+ files are allowed simultaneously/i
)
expect
(
service
.
execute
[
:message
]).
to
match
(
/only \d+ files are allowed simultaneously/i
)
end
end
end
end
end
end
context
"when the user is not allowed to upload designs"
do
context
'when the user is not allowed to upload designs'
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:user
)
{
create
(
:user
)
}
it_behaves_like
"a service error"
it_behaves_like
'a service error'
end
end
context
"when creating the commit fails"
do
context
'when creating the commit fails'
do
before
do
before
do
expect
(
service
).
to
receive
(
:save_designs!
).
and_raise
(
Gitlab
::
Git
::
BaseError
)
expect
(
service
).
to
receive
(
:save_designs!
).
and_raise
(
Gitlab
::
Git
::
BaseError
)
end
end
it_behaves_like
"a service error"
it_behaves_like
'a service error'
end
end
context
"when creating the versions fails"
do
context
'when creating the versions fails'
do
before
do
before
do
expect
(
service
).
to
receive
(
:save_designs!
).
and_raise
(
ActiveRecord
::
RecordInvalid
)
expect
(
service
).
to
receive
(
:save_designs!
).
and_raise
(
ActiveRecord
::
RecordInvalid
)
end
end
it_behaves_like
"a service error"
it_behaves_like
'a service error'
end
end
context
"when a design already existed in the repo but we didn't know about it in the database"
do
context
"when a design already existed in the repo but we didn't know about it in the database"
do
...
@@ -246,12 +234,12 @@ describe DesignManagement::SaveDesignsService do
...
@@ -246,12 +234,12 @@ describe DesignManagement::SaveDesignsService do
before
do
before
do
path
=
File
.
join
(
build
(
:design
,
issue:
issue
,
filename:
filename
).
full_path
)
path
=
File
.
join
(
build
(
:design
,
issue:
issue
,
filename:
filename
).
full_path
)
design_repository
.
create_if_not_exists
design_repository
.
create_if_not_exists
design_repository
.
create_file
(
user
,
path
,
"something fake"
,
design_repository
.
create_file
(
user
,
path
,
'something fake'
,
branch_name:
"master"
,
branch_name:
'master'
,
message:
"Somehow created without being tracked in db"
)
message:
'Somehow created without being tracked in db'
)
end
end
it
"creates the design and a new version for it"
do
it
'creates the design and a new version for it'
do
first_updated_design
=
service
.
execute
[
:designs
].
first
first_updated_design
=
service
.
execute
[
:designs
].
first
expect
(
first_updated_design
.
filename
).
to
eq
(
filename
)
expect
(
first_updated_design
.
filename
).
to
eq
(
filename
)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment