Michael Miller
e60c287216
Fix a dumb with merge
2020-01-19 10:05:21 -07:00
Michael Miller
f825a34771
Fix issue with implicit vs. explicit subject
...
Addresses the issue pointed out in !25
There was a recent change that set a subject to the first argument of
`describe` and `context`. This prevented an explicitly defined subject
from being accessible in nested groups.
2020-01-17 14:53:03 +03:00
Michael Miller
c48b9ed9e1
Resolve let! not working on uninferable types
...
Resolves https://github.com/icy-arctic-fox/spectator/issues/4
Use ValueWrapper trick again and initialize immediately with before_each
hook.
2020-01-14 20:07:56 -07:00
Michael Miller
b7c686e836
Add cover
matcher
...
Works the same as `contain` but is for ranges.
2020-01-05 22:49:27 -07:00
Michael Miller
034c1cd6cb
Change array matcher to allow any order
2020-01-05 11:42:39 -07:00
Michael Miller
93c442d1e2
Add instance_of matcher to check exact type
2020-01-04 12:46:08 -07:00
Michael Miller
c3688807d4
Add kind_of aliases for be_a matcher
2020-01-04 10:08:01 -07:00
Michael Miller
34060ce181
Ensure top-level Crystal types are used
2020-01-04 09:49:28 -07:00
Michael Miller
71740113d5
Allow subject for non-class types
2020-01-02 19:30:46 -07:00
Michael Miller
ff2cbcd4c7
Allow test description to be blank
...
Currently defaults to the example's source.
2020-01-02 18:40:25 -07:00
Michael Miller
067c789019
Initial work on type reflection for verifying doubles
2019-12-08 14:52:54 -07:00
Michael Miller
8b0f509689
Detect when to use a verifying double
2019-12-08 11:37:08 -07:00
Michael Miller
27acf7bced
Allow receive block syntax
2019-11-19 17:28:00 -07:00
Michael Miller
1a3f663b70
Name is optional for doubles
2019-11-17 10:47:51 -07:00
Michael Miller
ac9b3ad1fe
Implement expect_any_instance_of
2019-11-16 21:27:18 -07:00
Michael Miller
72e4ac8fe9
Remove unnecessary free variables
2019-11-16 08:17:46 -07:00
Michael Miller
acad88204a
Fix issues with creating anonymous null doubles
2019-11-14 17:55:56 -07:00
Michael Miller
b9fe1b6a60
Initial code to support anonymous doubles
2019-11-12 21:55:16 -07:00
Michael Miller
38ec44c9ac
Simplify type resolution code
2019-11-12 21:46:33 -07:00
Michael Miller
cb466b4ff5
Display better error when a double isn't found/defined
2019-11-12 21:44:35 -07:00
Michael Miller
87a60cf92a
Split out double macros
2019-11-12 21:21:30 -07:00
Michael Miller
f50e71606e
Make derived double names safer
2019-11-12 21:13:44 -07:00
Michael Miller
94e210c306
Implement null doubles
2019-11-11 23:40:08 -07:00
Michael Miller
20f68e956d
Add receive_messages macro to stub multiple methods
2019-11-11 22:27:53 -07:00
Michael Miller
9c161a07ff
Support for canned responses in double creation
2019-11-11 22:17:37 -07:00
Michael Miller
18b3879dce
Treat symbols and non-symbols the same
2019-11-11 20:59:33 -07:00
Michael Miller
fd2c6d3d8c
Remove reference to test
...
Disallows group context values being used within double definitions.
This had an adverse effect where context values could be called on the
double (dbl.foo).
2019-11-11 20:59:12 -07:00
Michael Miller
a2b72eaa36
Implement allow_any_instance_of
2019-11-10 09:46:23 -07:00
Michael Miller
66dc6bf098
Uncomment predicate matcher
2019-11-09 09:38:11 -07:00
Michael Miller
aa33acd14e
Anything can be passed to allow()
2019-11-09 09:07:54 -07:00
Michael Miller
8262bb0316
Rename OpenMock to Allow
2019-11-09 09:05:17 -07:00
Michael Miller
8c2f8d973b
Don't embed mock info in type
...
This can cause problems. Need to use a registry approach.
2019-11-09 09:03:07 -07:00
Michael Miller
cf8e028bd9
Some updates to mocks
...
Not working correctly for some cases, specifically String.
The default stub can seriously mess up Crystal internals.
It looks like the stubs and spy information will need to be kept outside
the instance.
2019-11-03 15:07:25 -07:00
Michael Miller
477271d297
Use NilMethodStub by default
...
Provides one place that #with can be defined and enforces ordering.
2019-11-03 11:23:04 -07:00
Michael Miller
20b80cc85a
Formatting
2019-11-03 10:07:32 -07:00
Michael Miller
cab9366fe8
Merge branch 'dev/mocks-and-doubles' of gitlab.com:arctic-fox/spectator into dev/mocks-and-doubles
2019-11-03 10:07:11 -07:00
Michael Miller
5b143cb72c
Change structure around
2019-11-03 10:02:53 -07:00
Michael Miller
c95e228bde
Move mocks to their own module
2019-11-03 09:44:32 -07:00
Michael Miller
42aaae7908
Some initial work on mocks
2019-11-02 19:58:47 -06:00
Michael Miller
e035afa85f
Rework let and subject to allow super
...
This addresses https://gitlab.com/arctic-fox/spectator/issues/32
2019-10-24 20:47:48 -06:00
Michael Miller
76fa7e294f
Friendlier descriptions of objects
2019-10-13 18:49:22 -06:00
Michael Miller
d422376aaf
Initial work on have_received matcher
2019-10-13 18:41:10 -06:00
Michael Miller
211050650e
Remove internal double class
...
Stub handling method should be called from nested methods.
2019-10-12 21:08:49 -06:00
Michael Miller
c80a28d616
More work on method stubs
2019-10-12 20:53:17 -06:00
Michael Miller
0b6465e6bc
Started playing around with method stubs
2019-10-12 16:30:46 -06:00
Michael Miller
4b57ddab80
Handle changing test scope
...
This matches the current pattern, where a nested scope can override
values from a parent scope.
I think this solution is quite clever :)
2019-10-06 11:12:06 -06:00
Michael Miller
47ca96801b
Mark internal class as private
...
Minimal doubles should be done.
2019-10-05 22:06:03 -06:00
Michael Miller
00c0553426
Get contextual values working with doubles
2019-10-05 07:38:13 -06:00
Michael Miller
d08ec75db7
Minimal working double
2019-10-04 23:16:40 -06:00
Michael Miller
bff2668ad4
Remove old files
2019-10-04 23:16:22 -06:00
Michael Miller
8c180e818f
Merge remote-tracking branch 'origin/release/0.9' into mocks-and-doubles
2019-09-27 14:12:29 -06:00
Michael Miller
425240e66f
Merge branch 'release/0.9' into mocks-and-doubles
2019-09-27 14:07:02 -06:00
Michael Miller
60ca4361de
Fix implicit subject
2019-09-26 21:44:25 -06:00
Michael Miller
f47c48b483
Add pre- and post-conditions
2019-09-26 21:37:29 -06:00
Michael Miller
1eec9190dd
Workaround for subject evaluation
2019-09-26 21:24:50 -06:00
Michael Miller
07aeaecca4
Add support for pending tests
2019-09-26 20:46:28 -06:00
Michael Miller
25778d7b41
Change "what" to "description"
2019-09-26 16:49:44 -06:00
Michael Miller
edabaa9447
Dumb auto-format
2019-09-26 16:25:43 -06:00
Michael Miller
e3e4cac9c1
Add source to example groups
2019-09-26 16:23:13 -06:00
Michael Miller
dacca0bf1e
Add implicit subject
2019-09-26 16:02:24 -06:00
Michael Miller
a261592776
Add given group
2019-09-26 15:56:48 -06:00
Michael Miller
6ae817d4bc
Add random sample
2019-09-26 15:49:06 -06:00
Michael Miller
3d37a94aaf
Add optional count to sample group
2019-09-26 15:41:58 -06:00
Michael Miller
311b4b0f2f
Use name instead of block_arg
2019-09-26 15:30:29 -06:00
Michael Miller
0067191423
Remove reference to Internals namespace
2019-09-26 15:11:36 -06:00
Michael Miller
1f300a4a18
Use label in sub-group name
2019-09-26 15:05:28 -06:00
Michael Miller
c3ea34e762
Retrieve test value for sample group
2019-09-26 14:57:31 -06:00
Michael Miller
f6e95719ad
Remove unnecessary quotes in example name
2019-09-26 14:08:17 -06:00
Michael Miller
e5bd582f5f
Handle collection for sample group
2019-09-26 14:05:55 -06:00
Michael Miller
5d9e7002d6
Some initial work on sample groups
2019-09-26 12:31:23 -06:00
Michael Miller
00d1cd9ea3
Address warnings with return types in generated types
2019-09-23 20:42:04 -06:00
Michael Miller
24ccb77595
Expose running example to before-each and after-each hooks
2019-09-22 11:27:18 -06:00
Michael Miller
24eb5e419a
Get around_each hooks working again
2019-09-18 21:51:35 -06:00
Michael Miller
52ef5e5ced
Some DSL methods for hooks
2019-09-15 10:40:53 -06:00
Michael Miller
7002564ebd
Add let and subject with variants
...
New behavior mimics RSpec - bang variant defines immediately instead of
not storing.
2019-09-15 09:45:48 -06:00
Michael Miller
c94b284ab3
Replace large DSL files with smaller, logical groups
2019-09-15 09:15:33 -06:00
Michael Miller
3f7c16c888
Move all DSL to one module, but separate files
2019-09-13 14:33:46 -06:00
Michael Miller
fafe5606e6
Rename DSL::Builder to SpecBuilder
...
Place all builders under SpecBuilder.
2019-09-13 14:10:25 -06:00
Michael Miller
5d86b4f50e
Get examples working again
2019-09-12 20:26:54 -06:00
Michael Miller
08ee03b1de
Quickly get things somewhat working again
2019-09-12 20:16:41 -06:00
Michael Miller
e304224bd6
Move stack handling to its own type
2019-09-08 09:59:25 -06:00
Michael Miller
f25eb9164f
Some test creation rewrite
2019-09-08 09:58:15 -06:00
Michael Miller
1c5b46b981
Use fresh variables
2019-09-01 00:54:04 -06:00
Michael Miller
19913a28d1
Gut factories and example structure code
2019-08-31 13:12:40 -06:00
Michael Miller
bfe641e07e
Move sample values to group instance
...
The goal is to construct examples with a parameterless initializer.
This doesn't quite work, since the sample values are retrieved via the
harness, which doesn't have an active example when the sample values are
created.
2019-08-30 14:46:24 -06:00
Michael Miller
4ecc2c6004
Include ExampleDSL at root
...
Will need to check if methods can run in that scope.
2019-08-30 13:14:48 -06:00
Michael Miller
64045171c2
Change contexts from modules to classes
2019-08-30 12:39:03 -06:00
Michael Miller
6e9633d001
Hacked in double instance creation
2019-08-26 22:48:15 -06:00
Michael Miller
3462bdea1a
Some initial double code
2019-08-26 21:49:47 -06:00
Michael Miller
70e01364ce
Address Ameba issue
2019-08-26 21:11:21 -06:00
Michael Miller
4abf97139b
Experimenting with auto-mocking methods
2019-08-26 21:06:06 -06:00
Michael Miller
c36859b42b
Correct docs
2019-08-17 08:10:26 -06:00
Michael Miller
7f58c52e43
Cleanup
2019-08-17 08:05:05 -06:00
Michael Miller
498635d288
Pass along a proc to generate the array
...
The "to_a" method is actually dynamically generated.
2019-08-17 08:00:16 -06:00
Michael Miller
43440d37b0
Explicit initializer with sample values
...
Not sure why it isn't getting the one from the module.
2019-08-17 07:59:32 -06:00
Michael Miller
a59e38155e
Defer collection evaluation until build
2019-08-17 07:51:29 -06:00
Michael Miller
34b5487e6f
Pass along class type instead of collection
2019-08-15 17:38:54 -06:00
Michael Miller
01c4b78716
Move placeholder initializer up a level
2019-08-15 16:43:25 -06:00
Michael Miller
0cb77b3355
Add all-matcher to DSL
2019-08-12 14:07:13 -06:00
Michael Miller
848f80ddf8
Add block short-hand syntax support to change matcher
2019-08-11 13:16:40 -06:00