1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-14 00:19:16 +01:00

#13 Sending in a patch request when updating enabled flag

This commit is contained in:
andsandv 2014-10-22 15:52:43 +02:00 committed by Ivar Conradi Østhus
parent 6047f9494e
commit f4fd92d254
3 changed files with 45 additions and 33 deletions

View File

@ -27,7 +27,7 @@ module.exports = function (app) {
db.getFeature(newFeature.name).then(function (feature) { db.getFeature(newFeature.name).then(function (feature) {
if (feature) { if (feature) {
res.status(500).end(); res.status(403).end();
} else { } else {
db.addFeature(newFeature).then(function () { db.addFeature(newFeature).then(function () {
res.status(201).end(); res.status(201).end();
@ -36,20 +36,20 @@ module.exports = function (app) {
}); });
}); });
app.patch('/features/:id', function (req, res) { app.patch('/features/:featureName', function (req, res) {
var body = req.body; var featureName = req.params.featureName;
body.data.name = req.params.id; db.getFeature(featureName).then(function (feature) {
if (feature) {
var changeRequest = req.body;
var event = {}; var event = {};
event.type = 'feature-update';
event.user = req.connection.remoteAddress; event.user = req.connection.remoteAddress;
event.comment = body.comment; event.data = changeRequest;
event.data = body.data; res.status(202).end();
} else {
// console.log(event); res.status(404).end();
}
// db.save(event).then(function () { });
res.status(204).end();
// });
}); });
}; };

View File

@ -29,19 +29,20 @@ var FeatureList = React.createClass({
this.setState({features: data.features}); this.setState({features: data.features});
}, },
updateFeature: function (feature) { updateFeature: function (changeRequest) {
var newFeatures = this.state.features; var newFeatures = this.state.features;
newFeatures.forEach(function(f){ newFeatures.forEach(function(f){
if(f.name === feature.name) { if(f.name === changeRequest.name) {
f = feature; f[changeRequest.field] = changeRequest.value;
} }
}); });
console.log(changeRequest);
reqwest({ reqwest({
url: 'features/' + feature.name, url: 'features/' + changeRequest.name,
method: 'post', method: 'patch',
type: 'json', type: 'json',
data: feature contentType: 'application/json',
data: JSON.stringify(changeRequest)
}).then(function() { }).then(function() {
this.setState({features: newFeatures}); this.setState({features: newFeatures});
}.bind(this), function() { }.bind(this), function() {
@ -78,9 +79,11 @@ var Feature = React.createClass({
*/ */
handleEnableChange: function(event) { handleEnableChange: function(event) {
var feature = this.props.feature; var feature = this.props.feature;
this.props.updateFeature({
feature.enabled = event.target.checked; name: feature.name,
this.props.updateFeature(feature); field: "enabled",
value: event.target.checked
});
}, },
render: function () { render: function () {

View File

@ -22,22 +22,31 @@ describe('The api', function () {
it('creates new feature toggle', function (done) { it('creates new feature toggle', function (done) {
request request
.post('/features') .post('/features')
.send({name: 'com.test.feature', 'status': 'off'}) .send({name: 'com.test.feature', 'enabled': false})
.set('Content-Type', 'application/json') .set('Content-Type', 'application/json')
.expect(201, done); .expect(201, done);
}); });
it('change status of feature toggle', function (done) { it('can not change status of feature toggle that dose not exsist', function (done) {
request request
.patch('/features/com.test.feature') .patch('/features/shouldNotExsist')
.send({ .send({
'comment': 'patch test of com.test.feature', 'field': 'enabled',
data: { 'value': true
'status': 'on'
}
}) })
.set('Content-Type', 'application/json') .set('Content-Type', 'application/json')
.expect(204, done); .expect(404, done);
});
it('can change status of feature toggle that dose exsist', function (done) {
request
.patch('/features/featureY')
.send({
'field': 'enabled',
'value': true
})
.set('Content-Type', 'application/json')
.expect(202, done);
}); });
}); });