BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
f5caabad
Commit
f5caabad
authored
Feb 15, 2018
by
Clement Ho
Committed by
Jacob Schatz
Feb 15, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace $.get with axios in importerStatus
parent
4342e391
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
95 additions
and
28 deletions
+95
-28
importer_status.js
app/assets/javascripts/importer_status.js
+28
-21
importer_status_spec.js
spec/javascripts/importer_status_spec.js
+67
-7
No files found.
app/assets/javascripts/importer_status.js
View file @
f5caabad
...
...
@@ -59,29 +59,36 @@ class ImporterStatus {
.
catch
(()
=>
flash
(
__
(
'An error occurred while importing project'
)));
}
setAutoUpdate
()
{
return
setInterval
(()
=>
$
.
get
(
this
.
jobsUrl
,
data
=>
$
.
each
(
data
,
(
i
,
job
)
=>
{
const
jobItem
=
$
(
`#project_
${
job
.
id
}
`
);
const
statusField
=
jobItem
.
find
(
'.job-status'
);
autoUpdate
()
{
return
axios
.
get
(
this
.
jobsUrl
)
.
then
(({
data
=
[]
})
=>
{
data
.
forEach
((
job
)
=>
{
const
jobItem
=
$
(
`#project_
${
job
.
id
}
`
);
const
statusField
=
jobItem
.
find
(
'.job-status'
);
const
spinner
=
'<i class="fa fa-spinner fa-spin"></i>'
;
const
spinner
=
'<i class="fa fa-spinner fa-spin"></i>'
;
switch
(
job
.
import_status
)
{
case
'finished'
:
jobItem
.
removeClass
(
'active'
).
addClass
(
'success'
);
statusField
.
html
(
'<span><i class="fa fa-check"></i> done</span>'
);
break
;
case
'scheduled'
:
statusField
.
html
(
`
${
spinner
}
scheduled`
);
break
;
case
'started'
:
statusField
.
html
(
`
${
spinner
}
started`
);
break
;
default
:
statusField
.
html
(
job
.
import_status
);
break
;
}
});
});
}
switch
(
job
.
import_status
)
{
case
'finished'
:
jobItem
.
removeClass
(
'active'
).
addClass
(
'success'
);
statusField
.
html
(
'<span><i class="fa fa-check"></i> done</span>'
);
break
;
case
'scheduled'
:
statusField
.
html
(
`
${
spinner
}
scheduled`
);
break
;
case
'started'
:
statusField
.
html
(
`
${
spinner
}
started`
);
break
;
default
:
statusField
.
html
(
job
.
import_status
);
break
;
}
})),
4000
);
setAutoUpdate
()
{
setInterval
(
this
.
autoUpdate
.
bind
(
this
),
4000
);
}
}
...
...
spec/javascripts/importer_status_spec.js
View file @
f5caabad
...
...
@@ -3,9 +3,18 @@ import axios from '~/lib/utils/axios_utils';
import
MockAdapter
from
'axios-mock-adapter'
;
describe
(
'Importer Status'
,
()
=>
{
let
instance
;
let
mock
;
beforeEach
(()
=>
{
mock
=
new
MockAdapter
(
axios
);
});
afterEach
(()
=>
{
mock
.
restore
();
});
describe
(
'addToImport'
,
()
=>
{
let
instance
;
let
mock
;
const
importUrl
=
'/import_url'
;
beforeEach
(()
=>
{
...
...
@@ -21,11 +30,6 @@ describe('Importer Status', () => {
spyOn
(
ImporterStatus
.
prototype
,
'initStatusPage'
).
and
.
callFake
(()
=>
{});
spyOn
(
ImporterStatus
.
prototype
,
'setAutoUpdate'
).
and
.
callFake
(()
=>
{});
instance
=
new
ImporterStatus
(
''
,
importUrl
);
mock
=
new
MockAdapter
(
axios
);
});
afterEach
(()
=>
{
mock
.
restore
();
});
it
(
'sets table row to active after post request'
,
(
done
)
=>
{
...
...
@@ -44,4 +48,60 @@ describe('Importer Status', () => {
.
catch
(
done
.
fail
);
});
});
describe
(
'autoUpdate'
,
()
=>
{
const
jobsUrl
=
'/jobs_url'
;
beforeEach
(()
=>
{
const
div
=
document
.
createElement
(
'div'
);
div
.
innerHTML
=
`
<div id="project_1">
<div class="job-status">
</div>
</div>
`
;
document
.
body
.
appendChild
(
div
);
spyOn
(
ImporterStatus
.
prototype
,
'initStatusPage'
).
and
.
callFake
(()
=>
{});
spyOn
(
ImporterStatus
.
prototype
,
'setAutoUpdate'
).
and
.
callFake
(()
=>
{});
instance
=
new
ImporterStatus
(
jobsUrl
);
});
function
setupMock
(
importStatus
)
{
mock
.
onGet
(
jobsUrl
).
reply
(
200
,
[{
id
:
1
,
import_status
:
importStatus
,
}]);
}
function
expectJobStatus
(
done
,
status
)
{
instance
.
autoUpdate
()
.
then
(()
=>
{
expect
(
document
.
querySelector
(
'#project_1'
).
innerText
.
trim
()).
toEqual
(
status
);
done
();
})
.
catch
(
done
.
fail
);
}
it
(
'sets the job status to done'
,
(
done
)
=>
{
setupMock
(
'finished'
);
expectJobStatus
(
done
,
'done'
);
});
it
(
'sets the job status to scheduled'
,
(
done
)
=>
{
setupMock
(
'scheduled'
);
expectJobStatus
(
done
,
'scheduled'
);
});
it
(
'sets the job status to started'
,
(
done
)
=>
{
setupMock
(
'started'
);
expectJobStatus
(
done
,
'started'
);
});
it
(
'sets the job status to custom status'
,
(
done
)
=>
{
setupMock
(
'custom status'
);
expectJobStatus
(
done
,
'custom status'
);
});
});
});
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