feat(donate): PayPal integration
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
e3db423abf
commit
6c6eadfbe4
@ -1,3 +1,7 @@
|
||||
/* global jest*/
|
||||
import { isEqual } from 'lodash';
|
||||
import { isEmail } from 'validator';
|
||||
|
||||
export const firstChallengeUrl = '/learn/the/first/challenge';
|
||||
export const requestedChallengeUrl = '/learn/my/actual/challenge';
|
||||
|
||||
@ -62,15 +66,55 @@ export const mockCompletedChallenges = [
|
||||
}
|
||||
];
|
||||
export const mockUserID = '5c7d892aff9777c8b1c1a95e';
|
||||
|
||||
export const createUserMockFn = jest.fn();
|
||||
export const createDonationMockFn = jest.fn();
|
||||
export const updateDonationAttr = jest.fn();
|
||||
export const updateUserAttr = jest.fn();
|
||||
export const mockUser = {
|
||||
id: mockUserID,
|
||||
username: 'camperbot',
|
||||
currentChallengeId: '123abc',
|
||||
email: 'donor@freecodecamp.com',
|
||||
timezone: 'UTC',
|
||||
completedChallenges: mockCompletedChallenges,
|
||||
progressTimestamps: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
progressTimestamps: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
||||
isDonating: true,
|
||||
donationEmails: ['donor@freecodecamp.com', 'donor@freecodecamp.com'],
|
||||
createDonation: donation => {
|
||||
createDonationMockFn(donation);
|
||||
return mockObservable;
|
||||
},
|
||||
updateAttributes: updateUserAttr
|
||||
};
|
||||
|
||||
const mockObservable = {
|
||||
toPromise: () => Promise.resolve('result')
|
||||
};
|
||||
|
||||
export const mockDonation = {
|
||||
id: '5e5f8eda5ed7be2b54e18718',
|
||||
email: 'donor@freecodecamp.com',
|
||||
provider: 'paypal',
|
||||
amount: 500,
|
||||
duration: 'month',
|
||||
startDate: {
|
||||
_when: '2018-11-01T00:00:00.000Z',
|
||||
_date: '2018-11-01T00:00:00.000Z'
|
||||
},
|
||||
subscriptionId: 'I-BA1ATBNF8T3P',
|
||||
userId: mockUserID,
|
||||
updateAttributes: updateDonationAttr
|
||||
};
|
||||
|
||||
export function createNewUserFromEmail(email) {
|
||||
const newMockUser = mockUser;
|
||||
newMockUser.email = email;
|
||||
newMockUser.username = 'camberbot2';
|
||||
newMockUser.ID = '5c7d892aff9888c8b1c1a95e';
|
||||
return newMockUser;
|
||||
}
|
||||
|
||||
export const mockApp = {
|
||||
models: {
|
||||
Challenge: {
|
||||
@ -83,12 +127,31 @@ export const mockApp = {
|
||||
: cb(new Error('challenge not found'));
|
||||
}
|
||||
},
|
||||
Donation: {
|
||||
findOne(query, cb) {
|
||||
return isEqual(query, matchSubscriptionIdQuery)
|
||||
? cb(null, mockDonation)
|
||||
: cb(Error('No Donation'));
|
||||
}
|
||||
},
|
||||
User: {
|
||||
findById(id, cb) {
|
||||
if (id === mockUser.id) {
|
||||
return cb(null, mockUser);
|
||||
}
|
||||
return cb(Error('No user'));
|
||||
},
|
||||
findOne(query, cb) {
|
||||
if (isEqual(query, matchEmailQuery) || isEqual(query, matchUserIdQuery))
|
||||
return cb(null, mockUser);
|
||||
return cb(null, null);
|
||||
},
|
||||
create(query, cb) {
|
||||
if (!isEmail(query.email)) return cb(new Error('email not valid'));
|
||||
else if (query.email === mockUser.email)
|
||||
return cb(new Error('user exist'));
|
||||
createUserMockFn();
|
||||
return Promise.resolve(createNewUserFromEmail(query.email));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -96,6 +159,16 @@ export const mockApp = {
|
||||
|
||||
export const mockGetFirstChallenge = () => firstChallengeUrl;
|
||||
|
||||
export const matchEmailQuery = {
|
||||
where: { email: mockUser.email }
|
||||
};
|
||||
export const matchSubscriptionIdQuery = {
|
||||
where: { subscriptionId: mockDonation.subscriptionId }
|
||||
};
|
||||
export const matchUserIdQuery = {
|
||||
where: { id: mockUser.id }
|
||||
};
|
||||
|
||||
export const firstChallengeQuery = {
|
||||
// first challenge of the first block of the first superBlock
|
||||
where: { challengeOrder: 0, superOrder: 1, order: 0 }
|
||||
|
Reference in New Issue
Block a user