@@ -5,6 +5,7 @@ const dd = require('deep-diff');
55const Config = require ( '../lib/Config' ) ;
66const request = require ( '../lib/request' ) ;
77const TestUtils = require ( '../lib/TestUtils' ) ;
8+ const SchemaController = require ( '../lib/Controllers/SchemaController' ) . SchemaController ;
89
910let config ;
1011
@@ -239,6 +240,52 @@ describe('schemas', () => {
239240 } ) ;
240241 } ) ;
241242
243+ it ( 'ensure refresh cache after creating a class' , async done => {
244+ spyOn ( SchemaController . prototype , 'reloadData' ) . and . callFake ( ( ) => Promise . resolve ( ) ) ;
245+ await request ( {
246+ url : 'http://localhost:8378/1/schemas' ,
247+ method : 'POST' ,
248+ headers : masterKeyHeaders ,
249+ json : true ,
250+ body : {
251+ className : 'A' ,
252+ } ,
253+ } ) ;
254+ const response = await request ( {
255+ url : 'http://localhost:8378/1/schemas' ,
256+ method : 'GET' ,
257+ headers : masterKeyHeaders ,
258+ json : true ,
259+ } ) ;
260+ const expected = {
261+ results : [
262+ userSchema ,
263+ roleSchema ,
264+ {
265+ className : 'A' ,
266+ fields : {
267+ //Default fields
268+ ACL : { type : 'ACL' } ,
269+ createdAt : { type : 'Date' } ,
270+ updatedAt : { type : 'Date' } ,
271+ objectId : { type : 'String' } ,
272+ } ,
273+ classLevelPermissions : defaultClassLevelPermissions ,
274+ } ,
275+ ] ,
276+ } ;
277+ expect (
278+ response . data . results
279+ . sort ( ( s1 , s2 ) => s1 . className . localeCompare ( s2 . className ) )
280+ . map ( s => {
281+ const withoutIndexes = Object . assign ( { } , s ) ;
282+ delete withoutIndexes . indexes ;
283+ return withoutIndexes ;
284+ } )
285+ ) . toEqual ( expected . results . sort ( ( s1 , s2 ) => s1 . className . localeCompare ( s2 . className ) ) ) ;
286+ done ( ) ;
287+ } ) ;
288+
242289 it ( 'responds with a single schema' , done => {
243290 const obj = hasAllPODobject ( ) ;
244291 obj . save ( ) . then ( ( ) => {
@@ -1507,6 +1554,46 @@ describe('schemas', () => {
15071554 } ) ;
15081555 } ) ;
15091556
1557+ it ( 'ensure refresh cache after deleting a class' , async done => {
1558+ config = Config . get ( 'test' ) ;
1559+ spyOn ( config . schemaCache , 'del' ) . and . callFake ( ( ) => { } ) ;
1560+ spyOn ( SchemaController . prototype , 'reloadData' ) . and . callFake ( ( ) => Promise . resolve ( ) ) ;
1561+ await request ( {
1562+ url : 'http://localhost:8378/1/schemas' ,
1563+ method : 'POST' ,
1564+ headers : masterKeyHeaders ,
1565+ json : true ,
1566+ body : {
1567+ className : 'A' ,
1568+ } ,
1569+ } ) ;
1570+ await request ( {
1571+ method : 'DELETE' ,
1572+ url : 'http://localhost:8378/1/schemas/A' ,
1573+ headers : masterKeyHeaders ,
1574+ json : true ,
1575+ } ) ;
1576+ const response = await request ( {
1577+ url : 'http://localhost:8378/1/schemas' ,
1578+ method : 'GET' ,
1579+ headers : masterKeyHeaders ,
1580+ json : true ,
1581+ } ) ;
1582+ const expected = {
1583+ results : [ userSchema , roleSchema ] ,
1584+ } ;
1585+ expect (
1586+ response . data . results
1587+ . sort ( ( s1 , s2 ) => s1 . className . localeCompare ( s2 . className ) )
1588+ . map ( s => {
1589+ const withoutIndexes = Object . assign ( { } , s ) ;
1590+ delete withoutIndexes . indexes ;
1591+ return withoutIndexes ;
1592+ } )
1593+ ) . toEqual ( expected . results . sort ( ( s1 , s2 ) => s1 . className . localeCompare ( s2 . className ) ) ) ;
1594+ done ( ) ;
1595+ } ) ;
1596+
15101597 it ( 'deletes collections including join tables' , done => {
15111598 const obj = new Parse . Object ( 'MyClass' ) ;
15121599 obj . set ( 'data' , 'data' ) ;
0 commit comments