Commit graph

2155 commits

Author SHA1 Message Date
Michael Miller
1f6417bca5
Skip test producing Crystal compiler bug 2022-05-24 19:40:48 -06:00
Michael Miller
9f5b5d8576
Add tests for mock of abstract struct
Compilation causes a compiler bug in 1.4.1
BUG: {{ @type > T }} (Crystal::MacroExpression) at /usr/share/crystal/src/class.cr:89:5 should have been expanded (Exception)
2022-05-24 19:30:42 -06:00
Michael Miller
be69018591
Test that a class is defined 2022-05-24 19:29:42 -06:00
Michael Miller
5132ce7329
Don't define method body for abstract stub method
Test inheriting an abstract class with mocks.
2022-05-24 19:25:22 -06:00
Michael Miller
ddaed636c4
Remove type resolution
The `resolve` macro method operates in the scope of `@type`, not where the macro method was called.
This is why types could not be found within the spec.
Change `define_subclass` to `define_subtype` and accept base type keyword.
2022-05-18 20:56:04 -06:00
Michael Miller
4f0e2f6e46
Fix clearing stubs for mocks
Prevent reverting initial defaults set by mock macro.
2022-05-15 16:21:05 -06:00
Michael Miller
a39b27387c
Add delete method to clear stubs for a mock 2022-05-15 16:19:55 -06:00
Michael Miller
847fd38534
Test mock names 2022-05-15 15:59:08 -06:00
Michael Miller
c98442e0ed
Add functionality to clear stubs 2022-05-15 15:56:32 -06:00
Michael Miller
fdac99d122
Rename thing to mock 2022-05-15 13:44:45 -06:00
Michael Miller
37c6db250d
Add ValueMockRegistry
Support injecting mock functionality into concrete structs (value types).
2022-05-15 12:34:50 -06:00
Michael Miller
51f133eb61
Ensure mocking doesn't change the memory
This can be important for serialization.
Cleanup names.
2022-05-15 11:27:58 -06:00
Michael Miller
ac03bd439b
Address Ameba issues 2022-05-15 11:06:00 -06:00
Michael Miller
1adcf74c3f
Fix stub_type when used on a sub-type
previous_def should only be used if the type being stubbed matches the type stub methods are defined in.
Re-enable tests for define_subclass mocking.
2022-05-15 10:59:44 -06:00
Michael Miller
86b49dc20e
Add mock registry fetch method
Solves the issue of pre-populating a mock with stubs.
2022-05-15 00:36:29 -06:00
Michael Miller
7923eb3ad0
Fix detection of nullable return type from stubbed method 2022-05-15 00:19:03 -06:00
Michael Miller
380d721fad
Add ReferenceMockRegistry 2022-05-14 23:31:57 -06:00
Michael Miller
0704fd2a48
Adjust evaluation order of change matcher expressions
Handles reference types better and matches RSpec more closely.
2022-05-14 23:30:15 -06:00
Michael Miller
739629ef9d
Reintroduce nil type check for stub value cast 2022-04-30 12:10:02 -06:00
Michael Miller
9817b2948e
Add mock inject macro
Debugging some type resolution issues.
2022-04-30 11:40:54 -06:00
Michael Miller
95282e7510
Combine type stubbing macros
Prevent redefining stubbed methods multiple times.
2022-04-30 11:40:17 -06:00
Michael Miller
8d14be6c67
Move spectator stub retrieval to abstract getter 2022-04-28 23:04:22 -06:00
Michael Miller
d74bc76687
Verify that initial stubs can be overridden 2022-04-28 22:32:34 -06:00
Michael Miller
978e6c3625
Cleanup and docs 2022-04-28 22:22:07 -06:00
Michael Miller
ad24515d58
Dumb fix for overriding stubbed methods with default in block 2022-04-28 22:11:34 -06:00
Michael Miller
307c679609
Rework stubbing type hierarchy
No longer need to "inject" stubs for new methods.
No weird lookup of super/previous_def.
Handle visibility modifier of def.
2022-04-28 22:07:12 -06:00
Michael Miller
8f5f3becb4
Some initial rework of stub macros 2022-04-16 23:37:00 -06:00
Michael Miller
0758c19a86
Remove need for nillable argument to cast macro
The `class` method cannot be stubbed as this causes the cast (via `as`) to fail at compile-time.
2022-04-16 16:33:37 -06:00
Michael Miller
23d2c014b4
Implement fallback for methods without a stub 2022-04-15 17:27:30 -06:00
Michael Miller
6f04e0b9da
Allow uninteresting messages through mocks
If they are stubbed, but don't match arguments, raise an error.
2022-04-15 17:17:34 -06:00
Michael Miller
4b21c9e6c1
Introduce _spectator_stub_for_method? utility method 2022-04-15 17:16:49 -06:00
Michael Miller
3961662bf6
Experimental mock functionality 2022-04-10 20:01:54 -06:00
Michael Miller
b0e27c69e8
Fix equality check 2022-04-10 15:24:45 -06:00
Michael Miller
e8bac86017
Ensure Stubbable can have stubs defined
Require implementation of _spectator_define_stub.
2022-04-10 11:11:36 -06:00
Michael Miller
477e412ac6
Merge branch 'master' into mock-redesign 2022-04-10 10:18:43 -06:00
Michael Miller
9b2fd7e791
Update Ameba to 1.0 for compatibility with Crystal 1.4.0 2022-04-10 10:18:25 -06:00
Michael Miller
0ad1ec11f3
Initial macros for defining and initializing mocks 2022-04-02 18:43:13 -06:00
Michael Miller
d97a62e601
Rename constant DOUBLES to TYPES
Will use for doubles and mocks.
2022-04-02 17:58:15 -06:00
Michael Miller
f6f4f9dc1e
Test contexts and memoized values 2022-04-02 15:58:08 -06:00
Michael Miller
a6fc2a4917
Test stub modifiers 2022-04-02 12:12:31 -06:00
Michael Miller
be1c698836
Test stub location 2022-04-02 12:09:59 -06:00
Michael Miller
873b1abcae
Test null stub 2022-04-02 12:07:50 -06:00
Michael Miller
3299c94359
Test Allow 2022-04-02 12:07:39 -06:00
Michael Miller
f1ce914b73
Better stub DSL tests 2022-04-02 12:07:30 -06:00
Michael Miller
519836147e
Restructure stub modifiers 2022-04-02 10:50:27 -06:00
Michael Miller
318e4f3707
Store location information in stub
Allows tracking where a stub was originally defined.
2022-04-02 10:39:59 -06:00
Michael Miller
e61b31e47b
Add docs for allow and receive 2022-04-02 10:25:27 -06:00
Michael Miller
17592287ad
Replace stub value method with call method
Pass method call information to stub.
2022-03-31 23:07:55 -06:00
Michael Miller
f00ea23c47
Rename stubs_spec.cr to stub_spec.cr 2022-03-31 23:07:08 -06:00
Michael Miller
2131967ba6
Workaround Crystal compiler bug 2022-03-31 22:54:03 -06:00