Skip to content

Conversation

@zoryamba
Copy link
Contributor

πŸ“‘ Description

Closes goravel/goravel#373

βœ… Checks

  • Added test cases for my code

Copy link
Contributor

@hwbrzzl hwbrzzl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great PR, thanks, LGTM basically. Could you test the WhereHas function before writing more code? You can add test cases in the this file.

@zoryamba
Copy link
Contributor Author

@hwbrzzl fixed comments. Added some tests for whereHas method. But have an issue testing buildWhereRelation method. It uses getModelSchema function, which creates gormio.Statement instance. does it require db connection to detect schema relationships? Here is error stack I get

=== RUN   TestBuildWhereRelation
--- FAIL: TestBuildWhereRelation (7.42s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x100aae2ec]

goroutine 21 [running]:
testing.tRunner.func1.2({0x1012ae060, 0x1018aead0})
	/Users/zoryamba/go/pkg/mod/golang.org/[email protected]/src/testing/testing.go:1872 +0x3a4
testing.tRunner.func1()
	/Users/zoryamba/go/pkg/mod/golang.org/[email protected]/src/testing/testing.go:1875 +0x4a8
panic({0x1012ae060?, 0x1018aead0?})
	/Users/zoryamba/go/pkg/mod/golang.org/[email protected]/src/runtime/panic.go:783 +0xec
sync.(*Map).Load(0x0, {0x101336280, 0x101308b00})
	/Users/zoryamba/go/pkg/mod/golang.org/[email protected]/src/sync/hashtriemap.go:50 +0x3c
gorm.io/gorm/schema.ParseWithSpecialTableName({0x101263ae0, 0x14000094960}, 0x0, {0x0, 0x0}, {0x0, 0x0})
	/Users/zoryamba/Work/own/goravel/gorm/schema/schema.go:163 +0x418
gorm.io/gorm.(*Statement).ParseWithSpecialTableName(0x1400024c1e0, {0x101263ae0, 0x14000094960}, {0x0, 0x0})
	/Users/zoryamba/Work/own/goravel/gorm/statement.go:517 +0xa8
gorm.io/gorm.(*Statement).Parse(0x1400024c1e0, {0x101263ae0, 0x14000094960})
	/Users/zoryamba/Work/own/goravel/gorm/statement.go:513 +0x44
github.com/goravel/framework/database/gorm.getModelSchema({0x101263ae0, 0x14000094960}, 0x14000334db0)
	/Users/zoryamba/Work/own/goravel/goravel-framework/database/gorm/utils.go:36 +0xe0
github.com/goravel/framework/database/gorm.(*Query).relationSubquery(0x14000197408, {0x1011a6609, 0x5}, {0x1013783f0, 0x14000197688})
	/Users/zoryamba/Work/own/goravel/goravel-framework/database/gorm/query.go:1434 +0x84
github.com/goravel/framework/database/gorm.(*Query).buildWhereRelation(0x14000197408, {{0x101341ac0, 0x14000197688}, {0x0, 0x0, 0x0}, 0x4, {0x1011a6609, 0x5}, 0x0, ...})
	/Users/zoryamba/Work/own/goravel/goravel-framework/database/gorm/query.go:1416 +0x3b4
github.com/goravel/framework/database/gorm.TestBuildWhereRelation(0x14000083180)
	/Users/zoryamba/Work/own/goravel/goravel-framework/database/gorm/query_test.go:159 +0x344
testing.tRunner(0x14000083180, 0x101368ac0)
	/Users/zoryamba/go/pkg/mod/golang.org/[email protected]/src/testing/testing.go:1934 +0x140
created by testing.(*T).Run in goroutine 1
	/Users/zoryamba/go/pkg/mod/golang.org/[email protected]/src/testing/testing.go:1997 +0x74c

Debugger finished with the exit code 0

Should I test it with Docker under https://github.com/goravel/framework/tree/master/tests folder? Or is there any other way to get model schema without connection?

@hwbrzzl
Copy link
Contributor

hwbrzzl commented Nov 18, 2025

@zoryamba Thanks, and yes, the test cases can be added in the tests folder if they need a real db connection.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ [Feature] Add Has, WhereHas, orWhereHas, DoesntHave , WhereDoesntHave, orWhereDoesntHave for Orm

2 participants