feat: Add atomic operations for Cloud Config parameters (#9219)
This commit is contained in:
@@ -28,7 +28,7 @@ describe('a GlobalConfig', () => {
|
|||||||
},
|
},
|
||||||
query,
|
query,
|
||||||
{
|
{
|
||||||
params: { companies: ['US', 'DK'], internalParam: 'internal' },
|
params: { companies: ['US', 'DK'], counter: 20, internalParam: 'internal' },
|
||||||
masterKeyOnly: { internalParam: true },
|
masterKeyOnly: { internalParam: true },
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -114,6 +114,34 @@ describe('a GlobalConfig', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it_only_db('mongo')('can addUnique', async () => {
|
||||||
|
await Parse.Config.save({ companies: { __op: 'AddUnique', objects: ['PA', 'RS', 'E'] } });
|
||||||
|
const config = await Parse.Config.get();
|
||||||
|
const companies = config.get('companies');
|
||||||
|
expect(companies).toEqual(['US', 'DK', 'PA', 'RS', 'E']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it_only_db('mongo')('can add to array', async () => {
|
||||||
|
await Parse.Config.save({ companies: { __op: 'Add', objects: ['PA'] } });
|
||||||
|
const config = await Parse.Config.get();
|
||||||
|
const companies = config.get('companies');
|
||||||
|
expect(companies).toEqual(['US', 'DK', 'PA']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it_only_db('mongo')('can remove from array', async () => {
|
||||||
|
await Parse.Config.save({ companies: { __op: 'Remove', objects: ['US'] } });
|
||||||
|
const config = await Parse.Config.get();
|
||||||
|
const companies = config.get('companies');
|
||||||
|
expect(companies).toEqual(['DK']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can increment', async () => {
|
||||||
|
await Parse.Config.save({ counter: { __op: 'Increment', amount: 49 } });
|
||||||
|
const config = await Parse.Config.get();
|
||||||
|
const counter = config.get('counter');
|
||||||
|
expect(counter).toEqual(69);
|
||||||
|
});
|
||||||
|
|
||||||
it('can add and retrive files', done => {
|
it('can add and retrive files', done => {
|
||||||
request({
|
request({
|
||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
@@ -165,6 +193,7 @@ describe('a GlobalConfig', () => {
|
|||||||
body: {
|
body: {
|
||||||
params: {
|
params: {
|
||||||
companies: { __op: 'Delete' },
|
companies: { __op: 'Delete' },
|
||||||
|
counter: { __op: 'Delete' },
|
||||||
internalParam: { __op: 'Delete' },
|
internalParam: { __op: 'Delete' },
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
},
|
},
|
||||||
@@ -183,6 +212,7 @@ describe('a GlobalConfig', () => {
|
|||||||
try {
|
try {
|
||||||
expect(response.status).toEqual(200);
|
expect(response.status).toEqual(200);
|
||||||
expect(body.params.companies).toBeUndefined();
|
expect(body.params.companies).toBeUndefined();
|
||||||
|
expect(body.params.counter).toBeUndefined();
|
||||||
expect(body.params.foo).toBe('bar');
|
expect(body.params.foo).toBe('bar');
|
||||||
expect(Object.keys(body.params).length).toBe(1);
|
expect(Object.keys(body.params).length).toBe(1);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export class GlobalConfigRouter extends PromiseRouter {
|
|||||||
return acc;
|
return acc;
|
||||||
}, {});
|
}, {});
|
||||||
return req.config.database
|
return req.config.database
|
||||||
.update('_GlobalConfig', { objectId: '1' }, update, { upsert: true })
|
.update('_GlobalConfig', { objectId: '1' }, update, { upsert: true }, true)
|
||||||
.then(() => ({ response: { result: true } }));
|
.then(() => ({ response: { result: true } }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user