public static String queryToFetchAllFieldsOf(final AbstractDescribedSObjectBase object) {
        if (object == null) {
            return null;
        }

        final SObjectDescription description = object.description();
        final List<SObjectField> fields = description.getFields();

        return fields.stream().map(SObjectField::getName)
                .collect(Collectors.joining(", ", "SELECT ", " FROM " + description.getName()));
    }
@Test
    public void shouldGenerateQueryForAllFields() {
        assertThat(QueryHelper.queryToFetchAllFieldsOf(new Account()))
                .isEqualTo("SELECT Id, IsDeleted, MasterRecordId, Name, Type, ParentId, BillingStreet, BillingCity, "
                           + "BillingState, BillingPostalCode, BillingCountry, BillingLatitude, BillingLongitude, "
                           + "BillingGeocodeAccuracy, BillingAddress, ShippingStreet, ShippingCity, ShippingState, "
                           + "ShippingPostalCode, ShippingCountry, ShippingLatitude, ShippingLongitude, "
                           + "ShippingGeocodeAccuracy, ShippingAddress, Phone, Fax, AccountNumber, Website, "
                           + "PhotoUrl, Sic, Industry, AnnualRevenue, NumberOfEmployees, Ownership, TickerSymbol, "
                           + "Description, Rating, Site, OwnerId, CreatedDate, CreatedById, LastModifiedDate, "
                           + "LastModifiedById, SystemModstamp, LastActivityDate, LastViewedDate, LastReferencedDate, "
                           + "Jigsaw, JigsawCompanyId, CleanStatus, AccountSource, DunsNumber, Tradestyle, NaicsCode, "
                           + "NaicsDesc, YearStarted, SicDesc, DandbCompanyId, OperatingHoursId, Shipping_Location__Latitude__s, "
                           + "Shipping_Location__Longitude__s, Shipping_Location__c, External_Id__c FROM Account");
    }