Turned out this needed a lot of tinkering to achieve:-
CREATE ROLE test_database_superuser
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL '2020-03-06 00:00:00';
CREATE ROLE test_user LOGIN
ENCRYPTED PASSWORD 'md52b250919b406b707999fffb2b9f673fb'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL '2020-03-06 00:00:00';
GRANT test_database_superuser TO test_user;
--DATABASE LEVEL PRIVELEGES
GRANT ALL PRIVILEGES ON DATABASE test to test_database_superuser;
--SCHEMA LEVEL
GRANT ALL ON SCHEMA bar TO GROUP test_database_superuser;
GRANT USAGE ON SCHEMA foo TO GROUP test_database_superuser;
GRANT USAGE ON SCHEMA foobar TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA foo TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA bar TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA bar TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foobar TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA foobar TO GROUP test_database_superuser;
--PUBLIC
GRANT USAGE ON SCHEMA public TO GROUP test_database_superuser;