108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
export const firstChallengeUrl = '/learn/the/first/challenge';
 | 
						|
export const requestedChallengeUrl = '/learn/my/actual/challenge';
 | 
						|
 | 
						|
export const mockChallenge = {
 | 
						|
  id: '123abc',
 | 
						|
  block: 'actual',
 | 
						|
  superBlock: 'my',
 | 
						|
  dashedName: 'challenge'
 | 
						|
};
 | 
						|
 | 
						|
export const mockFirstChallenge = {
 | 
						|
  id: '456def',
 | 
						|
  block: 'first',
 | 
						|
  superBlock: 'the',
 | 
						|
  dashedName: 'challenge'
 | 
						|
};
 | 
						|
 | 
						|
export const mockCompletedChallenge = {
 | 
						|
  id: '890xyz',
 | 
						|
  challengeType: 0,
 | 
						|
  files: [
 | 
						|
    {
 | 
						|
      contents: 'file contents',
 | 
						|
      key: 'indexfile',
 | 
						|
      name: 'index',
 | 
						|
      path: 'index.file',
 | 
						|
      ext: 'file'
 | 
						|
    }
 | 
						|
  ],
 | 
						|
  completedDate: Date.now()
 | 
						|
};
 | 
						|
 | 
						|
export const mockCompletedChallenges = [
 | 
						|
  {
 | 
						|
    id: 'bd7123c8c441eddfaeb5bdef',
 | 
						|
    completedDate: 1538052380328.0
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: '587d7dbd367417b2b2512bb4',
 | 
						|
    completedDate: 1547472893032.0,
 | 
						|
    files: []
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: 'aaa48de84e1ecc7c742e1124',
 | 
						|
    completedDate: 1541678430790.0,
 | 
						|
    files: [
 | 
						|
      {
 | 
						|
        contents:
 | 
						|
          // eslint-disable-next-line max-len
 | 
						|
          "function palindrome(str) {\n  const clean = str.replace(/[\\W_]/g, '').toLowerCase()\n  const revStr = clean.split('').reverse().join('');\n  return clean === revStr;\n}\n\n\n\npalindrome(\"eye\");\n",
 | 
						|
        ext: 'js',
 | 
						|
        path: 'index.js',
 | 
						|
        name: 'index',
 | 
						|
        key: 'indexjs'
 | 
						|
      }
 | 
						|
    ]
 | 
						|
  },
 | 
						|
  {
 | 
						|
    id: '5a24c314108439a4d4036164',
 | 
						|
    completedDate: 1543845124143.0,
 | 
						|
    files: []
 | 
						|
  }
 | 
						|
];
 | 
						|
export const mockUserID = '5c7d892aff9777c8b1c1a95e';
 | 
						|
export const mockUser = {
 | 
						|
  id: mockUserID,
 | 
						|
  username: 'camperbot',
 | 
						|
  currentChallengeId: '123abc',
 | 
						|
  timezone: 'UTC',
 | 
						|
  completedChallenges: mockCompletedChallenges,
 | 
						|
  progressTimestamps: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 | 
						|
};
 | 
						|
 | 
						|
export const mockApp = {
 | 
						|
  models: {
 | 
						|
    Challenge: {
 | 
						|
      find() {
 | 
						|
        return firstChallengeUrl;
 | 
						|
      },
 | 
						|
      findById(id, cb) {
 | 
						|
        return id === mockChallenge.id
 | 
						|
          ? cb(null, mockChallenge)
 | 
						|
          : cb(new Error('challenge not found'));
 | 
						|
      }
 | 
						|
    },
 | 
						|
    User: {
 | 
						|
      findById(id, cb) {
 | 
						|
        if (id === mockUser.id) {
 | 
						|
          return cb(null, mockUser);
 | 
						|
        }
 | 
						|
        return cb(Error('No user'));
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
export const mockGetFirstChallenge = () => firstChallengeUrl;
 | 
						|
 | 
						|
export const firstChallengeQuery = {
 | 
						|
  // first challenge of the first block of the first superBlock
 | 
						|
  where: { challengeOrder: 0, superOrder: 1, order: 0 }
 | 
						|
};
 | 
						|
 | 
						|
export const mockPathMigrationMap = {
 | 
						|
  'challenge-one': '/learn/superblock/block/challenge-one',
 | 
						|
  'challenge-two': '/learn/superblock/block/challenge-two'
 | 
						|
};
 |