Skip to content

Commit d42cd14

Browse files
authored
Properly store User Subclass in Storage (#978)
* Failing test for subclass.current() * ensure subclass user class is saved to storage * fix failing test
1 parent 5245daa commit d42cd14

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

integration/test/ParseUserTest.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,22 @@ describe('Parse User', () => {
630630
expect(user.get('foo')).toBe('bar');
631631
});
632632

633+
it('can get current with subclass', async () => {
634+
Parse.User.enableUnsafeCurrentUser();
635+
636+
const customUser = new CustomUser({ foo: 'bar' });
637+
customUser.setUsername('username');
638+
customUser.setPassword('password');
639+
640+
await customUser.signUp();
641+
Parse.User._clearCache();
642+
643+
const user = CustomUser.current();
644+
expect(user instanceof CustomUser).toBe(true);
645+
expect(user.doSomething()).toBe(5);
646+
expect(user.get('foo')).toBe('bar');
647+
});
648+
633649
it('can logIn user with subclass', async () => {
634650
Parse.User.enableUnsafeCurrentUser();
635651

src/ParseUser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,7 +869,7 @@ const DefaultController = {
869869
updateUserOnDisk(user) {
870870
const path = Storage.generatePath(CURRENT_USER_KEY);
871871
const json = user.toJSON();
872-
json.className = '_User';
872+
json.className = user.constructor.name === 'ParseUser' ? '_User' : user.constructor.name;
873873
return Storage.setItemAsync(
874874
path, JSON.stringify(json)
875875
).then(() => {

0 commit comments

Comments
 (0)