Skip to content

Commit 7638e1b

Browse files
Move client tests
1 parent 2b71f73 commit 7638e1b

File tree

2 files changed

+281
-237
lines changed

2 files changed

+281
-237
lines changed
Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,280 @@
1+
const Client = require('../client_base');
2+
const setCurrencies = require('../currency_base').setCurrencies;
3+
const { api, expect, setURL } = require('../../__tests__/tests_common');
4+
const State = require('../../storage').State;
5+
const Url = require('../../url');
6+
7+
describe('ClientBase', () => {
8+
const loginid_invalid = 'ZZ123456789';
9+
const loginid_virtual = 'VRTC123456789';
10+
const loginid_real = 'CR123456789';
11+
const loginid_real_2 = 'CR123456788';
12+
const loginid_real_iom = 'MX123';
13+
const loginid_gaming = 'MLT123';
14+
const loginid_financial = 'MF123';
15+
16+
const landing_company = { landing_company: { financial_company: { name: 'Binary Investments (Europe) Ltd', shortcode: 'maltainvest' }, gaming_company: { name: 'Binary (Europe) Ltd', shortcode: 'malta' } }, msg_type: 'landing_company' };
17+
const authorize = { authorize: { upgradeable_landing_companies: [] }};
18+
19+
describe('.validateLoginid()', () => {
20+
it('can detect a valid loginid', () => {
21+
[loginid_virtual, loginid_real].forEach((id) => {
22+
Client.set('loginid', id, id);
23+
Client.set('token', 'test', id);
24+
expect(Client.isValidLoginid()).to.eq(true);
25+
});
26+
});
27+
it('can detect an invalid loginid', () => {
28+
Client.set('loginid', loginid_invalid, loginid_invalid);
29+
Client.set('token', 'test', loginid_invalid);
30+
expect(Client.isValidLoginid()).to.eq(false);
31+
});
32+
after(() => {
33+
Client.clearAllAccounts();
34+
});
35+
});
36+
37+
describe('.(set|get)()', () => {
38+
it('sets and gets for expected client', () => {
39+
Client.set('currency', 'USD', loginid_virtual);
40+
Client.set('currency', 'EUR', loginid_real);
41+
expect(Client.get('currency', loginid_virtual)).to.eq('USD');
42+
expect(Client.get('currency', loginid_real)).to.eq('EUR');
43+
});
44+
it('returns expected data types', () => {
45+
Client.set('number', 1, loginid_real);
46+
expect(Client.get('number', loginid_real)).to.be.a('Number').and.to.eq(1);
47+
Client.set('float', 1.12345, loginid_real);
48+
expect(Client.get('float', loginid_real)).to.be.a('Number').and.to.eq(1.12345);
49+
const obj_nested = { a: { b: 'test' } };
50+
Client.set('object', obj_nested, loginid_real);
51+
expect(Client.get('object', loginid_real)).to.be.an('Object').and.to.deep.eq(obj_nested);
52+
Client.set('bool', true, loginid_real);
53+
expect(Client.get('bool', loginid_real)).to.be.a('boolean').and.to.eq(true);
54+
Client.set('undef', undefined, loginid_real);
55+
expect(Client.get('undef', loginid_real)).to.eq(undefined);
56+
});
57+
});
58+
59+
describe('.getAllLoginids()', () => {
60+
it('works as expected', () => {
61+
expect(Client.getAllLoginids()).to.deep.eq([ loginid_virtual, loginid_real ]);
62+
});
63+
});
64+
65+
describe('.getAccountType()', () => {
66+
it('works as expected', () => {
67+
expect(Client.getAccountType(loginid_virtual)).to.eq('virtual');
68+
expect(Client.getAccountType(loginid_real)).to.eq(undefined);
69+
expect(Client.getAccountType(loginid_gaming)).to.eq('gaming');
70+
expect(Client.getAccountType(loginid_financial)).to.eq('financial');
71+
});
72+
});
73+
74+
describe('.isAccountOfType()', () => {
75+
it('works as expected', () => {
76+
expect(Client.isAccountOfType('virtual', loginid_virtual)).to.eq(true);
77+
expect(Client.isAccountOfType('real', loginid_real)).to.eq(true);
78+
});
79+
it('doesn\'t return disabled account if enabled_only flag is set', () => {
80+
Client.set('is_disabled', 1, loginid_financial);
81+
expect(Client.isAccountOfType('financial', loginid_financial, 1)).to.eq(false);
82+
});
83+
});
84+
85+
describe('.getAccountOfType()', () => {
86+
it('works as expected', () => {
87+
expect(Client.getAccountOfType('virtual').loginid).to.eq(loginid_virtual);
88+
expect(Client.getAccountOfType('real').loginid).to.eq(loginid_real);
89+
expect(Client.getAccountOfType('financial').loginid).to.eq(loginid_financial);
90+
});
91+
it('doesn\'t return disabled account if enabled_only flag is set', () => {
92+
expect(Client.getAccountOfType('financial', 1).loginid).to.eq(undefined);
93+
});
94+
});
95+
96+
describe('.hasAccountType()', () => {
97+
it('works as expected', () => {
98+
expect(Client.hasAccountType('financial')).to.eq(true);
99+
});
100+
it('doesn\'t return disabled account if enabled_only flag is set', () => {
101+
expect(Client.hasAccountType('financial', 1)).to.eq(false);
102+
});
103+
});
104+
105+
describe('.hasCurrencyType()', () => {
106+
it('works as expected', () => {
107+
Client.set('is_virtual', 1, loginid_virtual);
108+
expect(Client.hasCurrencyType('fiat')).to.eq(loginid_real);
109+
expect(Client.hasCurrencyType('crypto')).to.eq(undefined);
110+
});
111+
});
112+
113+
describe('.shouldAcceptTnc()', () => {
114+
it('doesn\'t ask to accept if same version', () => {
115+
State.set(['response', 'website_status', 'website_status', 'terms_conditions_version'], 1);
116+
State.set(['response', 'get_settings', 'get_settings', 'client_tnc_status'], 1);
117+
expect(Client.shouldAcceptTnc()).to.eq(false);
118+
});
119+
it('asks to accept if different version', () => {
120+
State.set(['response', 'website_status', 'website_status', 'terms_conditions_version'], 2);
121+
expect(Client.shouldAcceptTnc()).to.eq(true);
122+
});
123+
});
124+
125+
describe('.clearAllAccounts()', () => {
126+
it('works as expected', () => {
127+
Client.clearAllAccounts();
128+
expect(Client.get()).to.deep.eq({});
129+
});
130+
});
131+
132+
describe('.currentLandingCompany()', () => {
133+
it('works as expected', () => {
134+
State.set(['response', 'landing_company'], landing_company);
135+
Client.set('landing_company_shortcode', 'malta');
136+
expect(Client.currentLandingCompany()).to.deep.eq({ name: 'Binary (Europe) Ltd', shortcode: 'malta' });
137+
Client.set('landing_company_shortcode', 'maltainvest');
138+
expect(Client.currentLandingCompany()).to.deep.eq({ name: 'Binary Investments (Europe) Ltd', shortcode: 'maltainvest' });
139+
Client.set('landing_company_shortcode', 'virtual');
140+
expect(Client.currentLandingCompany()).to.deep.eq({});
141+
});
142+
});
143+
144+
describe('.getBasicUpgradeInfo()', () => {
145+
it('returns false if client can\'t upgrade', () => {
146+
State.set(['response', 'authorize'], authorize);
147+
expect(Client.getBasicUpgradeInfo().can_upgrade).to.eq(false);
148+
});
149+
it('returns as expected for accounts that can upgrade to real', () => {
150+
['costarica', 'malta', 'iom'].forEach((lc) => {
151+
State.set(['response', 'authorize', 'authorize', 'upgradeable_landing_companies'], [ lc ]);
152+
const ugprade_info = Client.getBasicUpgradeInfo();
153+
expect(ugprade_info.can_upgrade).to.eq(true);
154+
expect(ugprade_info.can_upgrade_to).to.eq(lc);
155+
expect(ugprade_info.type).to.eq('real');
156+
expect(ugprade_info.can_open_multi).to.eq(false);
157+
});
158+
});
159+
it('returns as expected for accounts that can upgrade to financial', () => {
160+
State.set(['response', 'authorize', 'authorize', 'upgradeable_landing_companies'], [ 'maltainvest' ]);
161+
const ugprade_info = Client.getBasicUpgradeInfo();
162+
expect(ugprade_info.can_upgrade).to.eq(true);
163+
expect(ugprade_info.can_upgrade_to).to.eq('maltainvest');
164+
expect(ugprade_info.type).to.eq('financial');
165+
expect(ugprade_info.can_open_multi).to.eq(false);
166+
});
167+
it('returns as expected for accounts that can upgrade to japan', () => {
168+
State.set(['response', 'authorize', 'authorize', 'upgradeable_landing_companies'], [ 'japan' ]);
169+
const ugprade_info = Client.getBasicUpgradeInfo();
170+
expect(ugprade_info.can_upgrade).to.eq(true);
171+
expect(ugprade_info.can_upgrade_to).to.eq('japan');
172+
expect(ugprade_info.type).to.eq('real');
173+
expect(ugprade_info.can_open_multi).to.eq(false);
174+
});
175+
it('returns as expected for multi account opening', () => {
176+
State.set(['response', 'authorize', 'authorize', 'upgradeable_landing_companies'], [ 'costarica' ]);
177+
Client.set('landing_company_shortcode', 'costarica');
178+
const ugprade_info = Client.getBasicUpgradeInfo();
179+
expect(ugprade_info.can_upgrade).to.eq(false);
180+
expect(ugprade_info.can_upgrade_to).to.eq(undefined);
181+
expect(ugprade_info.type).to.eq(undefined);
182+
expect(ugprade_info.can_open_multi).to.eq(true);
183+
});
184+
});
185+
186+
describe('.getLandingCompanyValue()', () => {
187+
it('works as expected', () => {
188+
expect(Client.getLandingCompanyValue(loginid_financial, landing_company.landing_company, 'name')).to.eq(landing_company.landing_company.financial_company.name);
189+
expect(Client.getLandingCompanyValue(loginid_gaming, landing_company.landing_company, 'name')).to.eq(landing_company.landing_company.gaming_company.name);
190+
});
191+
});
192+
193+
describe('.canTransferFunds()', () => {
194+
before(function (done) {
195+
this.timeout(5000);
196+
api.getWebsiteStatus().then((response) => {
197+
setCurrencies(response.website_status);
198+
done();
199+
});
200+
});
201+
it('fails if client has maltainvest and malta accounts with one missing currency', () => {
202+
Client.clearAllAccounts();
203+
[loginid_gaming, loginid_financial].forEach((id) => {
204+
Client.set('loginid', id, id);
205+
});
206+
Client.set('landing_company_shortcode', 'maltainvest', loginid_financial);
207+
Client.set('landing_company_shortcode', 'malta', loginid_gaming);
208+
209+
Client.set('currency', 'USD', loginid_gaming);
210+
211+
expect(Client.canTransferFunds()).to.eq(false);
212+
});
213+
it('fails if client has maltainvest and malta accounts with differing currencies', () => {
214+
Client.set('currency', 'USD', loginid_gaming);
215+
Client.set('currency', 'EUR', loginid_financial);
216+
217+
expect(Client.canTransferFunds()).to.eq(false);
218+
});
219+
it('passes if client has maltainvest and malta accounts with the same currency', () => {
220+
Client.set('currency', 'USD', loginid_gaming);
221+
Client.set('currency', 'USD', loginid_financial);
222+
223+
expect(Client.canTransferFunds()).to.eq(true);
224+
});
225+
it('fails if maltainvest and non-malta client even if same currency', () => {
226+
Client.clearAllAccounts();
227+
[loginid_real_iom, loginid_financial].forEach((id) => {
228+
Client.set('loginid', id, id);
229+
});
230+
Client.set('landing_company_shortcode', 'iom', loginid_real_iom);
231+
Client.set('landing_company_shortcode', 'maltainvest', loginid_financial);
232+
233+
Client.set('currency', 'USD', loginid_real_iom);
234+
Client.set('currency', 'USD', loginid_financial);
235+
236+
expect(Client.canTransferFunds()).to.eq(false);
237+
});
238+
it('fails if non-maltainvest client only has fiat accounts', () => {
239+
Client.clearAllAccounts();
240+
[loginid_real, loginid_real_2].forEach((id) => {
241+
Client.set('loginid', id, id);
242+
});
243+
Client.set('currency', 'USD', loginid_real);
244+
Client.set('currency', 'EUR', loginid_real_2);
245+
246+
expect(Client.canTransferFunds()).to.eq(false);
247+
});
248+
it('fails if non-maltainvest client only has crypto accounts', () => {
249+
Client.set('currency', 'BTC', loginid_real);
250+
Client.set('currency', 'ETH', loginid_real_2);
251+
252+
expect(Client.canTransferFunds()).to.eq(false);
253+
});
254+
it('passes if non-maltainvest client has fiat and crypto accounts', () => {
255+
Client.set('currency', 'USD', loginid_real);
256+
Client.set('currency', 'BTC', loginid_real_2);
257+
258+
expect(Client.canTransferFunds()).to.eq(true);
259+
});
260+
after(() => {
261+
Client.clearAllAccounts();
262+
});
263+
});
264+
265+
describe('.hasCostaricaAccount()', () => {
266+
it('works as expected', () => {
267+
Client.set('loginid', loginid_financial, loginid_financial);
268+
Client.set('token', 'test', loginid_financial);
269+
expect(Client.hasCostaricaAccount()).to.eq(false);
270+
Client.set('loginid', loginid_real, loginid_real);
271+
Client.set('token', 'test', loginid_real);
272+
expect(Client.hasCostaricaAccount()).to.eq(true);
273+
});
274+
});
275+
276+
after(() => {
277+
setURL(`${Url.websiteUrl()}en/home.html`);
278+
Client.clearAllAccounts();
279+
});
280+
});

0 commit comments

Comments
 (0)