Skip to content

Commit aceea03

Browse files
authored
UserSubclass.logIn and UserSubclass.signUp returns subclass (#756)
* UserSubclass.logIn and UserSubclass.signUp returns subclass * add static tests
1 parent e1d6182 commit aceea03

File tree

2 files changed

+55
-2
lines changed

2 files changed

+55
-2
lines changed

integration/test/ParseUserTest.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ const Parse = require('../../node');
66

77
const TestObject = Parse.Object.extend('TestObject');
88

9+
class CustomUser extends Parse.User {
10+
constructor(attributes) {
11+
super(attributes);
12+
}
13+
14+
doSomething() {
15+
return 5;
16+
}
17+
}
18+
Parse.Object.registerSubclass('CustomUser', CustomUser);
19+
920
describe('Parse User', () => {
1021
beforeAll(() => {
1122
Parse.initialize('integration', null, 'notsosecret');
@@ -509,4 +520,46 @@ describe('Parse User', () => {
509520
expect(error.message).toBe('Object not found.');
510521
}
511522
});
523+
524+
it('can signUp user with subclass', async () => {
525+
Parse.User.enableUnsafeCurrentUser();
526+
527+
const customUser = new CustomUser({ foo: 'bar' });
528+
customUser.setUsername('username');
529+
customUser.setPassword('password');
530+
531+
const user = await customUser.signUp();
532+
533+
expect(user instanceof CustomUser).toBe(true);
534+
expect(user.doSomething()).toBe(5);
535+
expect(user.get('foo')).toBe('bar');
536+
});
537+
538+
it('can logIn user with subclass', async () => {
539+
Parse.User.enableUnsafeCurrentUser();
540+
541+
await Parse.User.signUp('username', 'password');
542+
543+
const customUser = new CustomUser({ foo: 'bar' });
544+
customUser.setUsername('username');
545+
customUser.setPassword('password');
546+
547+
const user = await customUser.logIn();
548+
549+
expect(user instanceof CustomUser).toBe(true);
550+
expect(user.doSomething()).toBe(5);
551+
expect(user.get('foo')).toBe('bar');
552+
});
553+
554+
it('can signUp / logIn user with subclass static', async () => {
555+
Parse.User.enableUnsafeCurrentUser();
556+
557+
let user = await CustomUser.signUp('username', 'password');
558+
expect(user instanceof CustomUser).toBe(true);
559+
expect(user.doSomething()).toBe(5);
560+
561+
user = await CustomUser.logIn('username', 'password');
562+
expect(user instanceof CustomUser).toBe(true);
563+
expect(user.doSomething()).toBe(5);
564+
});
512565
});

src/ParseUser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ class ParseUser extends ParseObject {
565565
attrs = attrs || {};
566566
attrs.username = username;
567567
attrs.password = password;
568-
const user = new ParseUser(attrs);
568+
const user = new this(attrs);
569569
return user.signUp({}, options);
570570
}
571571

@@ -600,7 +600,7 @@ class ParseUser extends ParseObject {
600600
)
601601
);
602602
}
603-
const user = new ParseUser();
603+
const user = new this();
604604
user._finishFetch({ username: username, password: password });
605605
return user.logIn(options);
606606
}

0 commit comments

Comments
 (0)