Thanks Nexus, after reading your clarification regarding the usage of setScale(), I was able to fix the issue.
While initializing my class, I have set my size to (0,0) and used the setScale with a size of (0,0) so I got (0,0) all the time.
I added a isSizeless boolean and forced the size to change to the texture's size whenever isSizeless was true and made the sprite to stretch when isSizeless was false.
Oh, regarding the issue about getGlobalBound returning a null value, I made a mistake on it. Its not a bug in JSFML.
Lastly, I found out using texture.getSize() correctly changes the size instead of using sprite.getGlobalBounds().
I assume this is probably because getGlobalBounds returns the actual width and height after the scale, but setScale changes the size of the scale based on the original/texture size.
sprite.setScale(getSize().x / this.texture.getSize().x, getSize().y / this.texture.getSize().y);
Thanks for the help :)