Я не могу получить активные запросы для коллекций сущностей для работы в Gorm / Grails 3.3.9 - PullRequest
0 голосов
/ 22 января 2019

У меня есть модель Домена с OrgRoleInstance с hasMany = {sites: Site}, и сущность домена Site с serveTo = [org: OrgRoleInstance]

Я не хочу использовать статическое отображение = {}предложение в доменном объекте, поскольку я хочу управлять стратегией выборки через запросы.

Я настраиваю несколько модульных тестов, подобных этому, и настраиваю 3 организации и по одному сайту каждый

void "list with eager fetch query"() {
    given :

    def orgs = OrgRoleInstance.list(fetch:[sites:"eager"])
    println "org b.sites : " + orgs[1].sites

    println "site #2  has org as : " + (Site.list())[1].org

    expect :
    Site.count() == 3
    orgs.size() == 3
    orgs[1].getName() == "B"
    orgs[1].sites.size() == 1

}

void "where query"() {
    given :

    def orgs = OrgRoleInstance.where {
        name =~ "%B%" &&
        sites{}
    }.list()

    expect :  //actual get null in orgs
    Site.count() == 3
    orgs[0].name == "B"
    orgs[0].sites.size() == 1

}

void "criteria query " () {
    given:

    OrgRoleInstance org

    org = OrgRoleInstance.withCriteria (uniqueResult: true) {
        //eq 'name', "B"
        and {
            idEq(2)
            eq ('name', "B")
        }
    }

    def orgs = OrgRoleInstance.withCriteria {
        eq 'name', "B"
        //fetchMode 'sites', FetchMode.SELECT
        sites{}
    }

    orgs

    expect:  //actual sites is size=0
    org.id == 2
    org.sites.size() == 1

}

Что я делаю не так - средний тест возвращает нуль из запроса, другие возвращают OrgRoleInstance, носвойство sites пустое.

Я проверил настройки и сайты правильно сохранены и ссылаемся на них org - поэтому модель домена правильная.

Что я делаю неправильно при записиэти запросы?

PS Я пробовал запрос where со многих сторон, и он, похоже, работает и загружает родительский сайт в результате.

//this one works
void "where query from the many side "() {
    given :

    def site = Site.where {
        org.id == 2
    }.list()

    expect :
    Site.count() == 3
    site.org.name == ["B"]

}

1 Ответ

0 голосов
/ 24 января 2019

По существу unit тестирование запросов к домену с новыми характеристиками тестирования не работает.

Если вы хотите протестировать свои запросы, вы должны написать интеграционные тесты или использовать консоль Grails, чтобы поиграть сзагружен env gorm.

Похожие посты .

...