Joel Male
a485bfb6f0
refactor: use assertEqualsWithDelta for float comparisons, add @internal to fake()
...
Replace Assert::assertEquals with Assert::assertEqualsWithDelta (epsilon 0.0001)
in assertSubTotal, assertTotal, and assertTotalQuantity to avoid IEEE 754
floating-point equality pitfalls. Add @internal docblock to fake() to signal
it is test-only. Add regression test for consecutive withItems calls.
2026-05-27 21:35:49 +10:00
Joel Male
8d04d18b48
test: add withCoupon test and fix withItems ID collision
2026-05-27 21:33:35 +10:00
Joel Male
61863e0bd5
feat: add Cart::fake(), assertion methods, and CartFactory
...
Adds Cart::fake() which swaps the active driver to NullDriver and returns
a CartFactory fluent test builder. Adds assertion methods (assertContains,
assertCount, assertTotalQuantity, assertSubTotal, assertTotal,
assertConditionApplied, assertEmpty, assertNotEmpty) to Cart for use in
tests. CartFactory provides withItems(), withCondition(), and withCoupon()
as chainable helpers for seeding cart state.
2026-05-27 21:31:54 +10:00
Joel Male
c3a734bd7f
feat: add Cart::coupon(), Cart::tax(), Cart::shipping()
...
Proxy methods that accept first-class Coupon, TaxRule, and ShippingRate
objects and delegate to Cart::condition() via toCondition().
2026-05-27 21:27:23 +10:00
Joel Male
2513e07436
feat: add ShippingRate base class
2026-05-27 21:24:44 +10:00
Joel Male
b5edbb8ec0
feat: add TaxRule base class
2026-05-27 21:24:09 +10:00
Joel Male
867daaf328
feat: add Coupon base class
2026-05-27 21:23:39 +10:00
Joel Male
e41739c436
feat: add CartConditionable interface and first-class exceptions
2026-05-27 21:23:07 +10:00
Joel Male
4877911cdd
fix: serialize conditions to arrays before storage; type \$events
...
- serializeConditions() now maps CartCondition objects to arrays via
toArray() before passing to the driver, preventing json_encode()
producing {} for object values in the DatabaseDriver
- Add Dispatcher type hint to \$events property and constructor parameter
- Add database round-trip test for cart-level conditions
- Fix CartConditionsTest to retrieve condition objects from the cart
rather than relying on object-reference side-effects that no longer
hold after proper serialization
2026-05-27 21:21:44 +10:00
Joel Male
f3e5e958b7
fix: resolve Cart.php regressions after driver refactor
...
- Cast \$value to string in updateQuantityRelative() before passing to preg_match() and str_replace() to fix TypeError when integer quantities are passed
- Reconstruct ItemAttributeCollection and CartCondition objects from serialized arrays in getContent() so attribute property access (->size) and condition methods (.getName()) work correctly after deserialization
- Store CartCondition objects directly (not serialized to arrays) in saveConditions() to preserve object identity for parsedRawValue tracking via getCalculatedValue()
- Remove ->values() re-indexing from serializeItems() conditions serialization to preserve original condition array indices after partial removal
2026-05-27 21:16:07 +10:00
Joel Male
adf4bca74f
chore: remove CartSession (replaced by driver system)
2026-05-27 21:09:50 +10:00
Joel Male
0c27ac4d9a
test: update existing tests to use CartDriver
2026-05-27 21:09:40 +10:00
Joel Male
9abf6a7a1b
feat: update CartServiceProvider to use CartManager
2026-05-27 21:08:10 +10:00
Joel Male
e0103aadaa
refactor: update Cart to use CartDriver interface
...
Replace the v2 Cart implementation (which used CartSession directly) with
the v3 design that accepts a CartDriver contract via constructor injection.
Removes validateConfig(), replaces $this->session with $this->driver, adds
getDriver()/extend() helpers, serializes items/conditions through the driver,
and drops the unused setDecimals() method.
2026-05-27 21:06:22 +10:00
Joel Male
90ea8c44e4
fix: correct Redis TTL units in config (seconds not minutes)
2026-05-27 21:03:18 +10:00
Joel Male
3b8fa4c838
feat: update cart config with v3 driver options
2026-05-27 21:02:32 +10:00
Joel Male
2f2d268e0f
feat: add CartManager
2026-05-27 21:02:23 +10:00
Joel Male
71213d51f5
fix: null-safe json_decode in RedisDriver; add getSessionModel test to MultiDriverTest
2026-05-27 21:01:34 +10:00
Joel Male
83aa9a1431
feat: add MultiDriver
2026-05-27 20:59:45 +10:00
Joel Male
1705c23205
feat: add RedisDriver
2026-05-27 20:59:15 +10:00
Joel Male
9fcd50f81f
test: add setSessionKey test to DatabaseDriverTest
2026-05-27 20:58:24 +10:00
Joel Male
4702cf98ab
feat: add DatabaseDriver
...
Implements CartDriver for Eloquent-backed persistence using firstOrNew
pattern. Includes 9 unit tests covering CRUD, flush, clearItems, and
model retrieval.
2026-05-27 20:55:01 +10:00
Joel Male
8927ef08a0
fix: guard null writes in SessionDriver::setSessionKey
2026-05-27 20:53:19 +10:00
Joel Male
c9f48d7e88
feat: add SessionDriver
2026-05-27 20:50:47 +10:00
Joel Male
11e23a946e
test: fix strict_types and test name in NullDriverTest
2026-05-27 20:49:36 +10:00
Joel Male
b3c4c53e63
feat: add NullDriver
2026-05-27 20:47:14 +10:00
Joel Male
c9f3d76366
feat: add CartDriver interface
2026-05-27 20:46:48 +10:00
Joel Male
b2a4864675
chore: ignore docs/superpowers/
2026-05-27 20:22:32 +10:00
Joel Male
aaa3360d1f
chore: add test bootstrap, update phpunit config, and add Laravel 13 support to README
...
- Add tests/bootstrap.php to suppress PHP 8.4 vendor deprecation notices (Mockery implicit-nullable)
- Update phpunit.xml.dist to reference bootstrap, use PHPUnit 11.5 schema, and ignore indirect deprecations
- Note Laravel 13 support in README
2026-05-27 19:50:09 +10:00
Joel Male
05729b7865
chore: bump version to 2.1.1
v2.1.1
2026-05-27 16:42:52 +10:00
Joel Male
7e6ee749bf
Merge pull request #10 from wearepixel/dependabot/composer/pestphp/pest-4.7.0
...
chore(deps-dev): bump pestphp/pest from 3.x-dev to 4.7.0
2026-05-27 16:42:24 +10:00
Joel Male
17532f1b05
chore(deps-dev): bump pestphp/pest from 3.x-dev to 4.7.0
...
Resolves merge conflict with laravel/pint update - regenerated lock file
to include both pint 1.29.1 and pest 4.7.0 with all dependencies.
2026-05-27 16:42:16 +10:00
Joel Male
d058ad5521
Merge pull request #9 from wearepixel/dependabot/composer/php-minor-patch-d003f11a51
...
chore(deps-dev): bump laravel/pint from 1.21.0 to 1.29.1 in the php-minor-patch group
2026-05-27 16:41:05 +10:00
Joel Male
3f5e9374c3
Merge pull request #8 from wearepixel/dependabot/github_actions/actions-c77b365b7e
...
chore(deps): bump the actions group across 1 directory with 3 updates
2026-05-27 16:41:02 +10:00
Joel Male
fcdd356718
fix: update CI runner from deprecated ubuntu-20.04 to ubuntu-latest
2026-05-27 16:40:41 +10:00
dependabot[bot]
3500fa43a9
chore(deps): bump the actions group across 1 directory with 3 updates
...
Bumps the actions group with 3 updates in the / directory: [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata ), [actions/checkout](https://github.com/actions/checkout ) and [nick-fields/retry](https://github.com/nick-fields/retry ).
Updates `dependabot/fetch-metadata` from 2.2.0 to 3.1.0
- [Release notes](https://github.com/dependabot/fetch-metadata/releases )
- [Commits](https://github.com/dependabot/fetch-metadata/compare/dbb049abf0d677abbd7f7eee0375145b417fdd34...25dd0e34f4fe68f24cc83900b1fe3fe149efef98 )
Updates `actions/checkout` from 4.3.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/34e114876b0b11c390a56381ad16ebd13914f8d5...de0fac2e4500dabe0009e67214ff5f5447ce83dd )
Updates `nick-fields/retry` from 3.0.2 to 4.0.0
- [Release notes](https://github.com/nick-fields/retry/releases )
- [Commits](https://github.com/nick-fields/retry/compare/ce71cc2ab81d554ebbe88c79ab5975992d79ba08...ad984534de44a9489a53aefd81eb77f87c70dc60 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
- dependency-name: dependabot/fetch-metadata
dependency-version: 3.1.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
- dependency-name: nick-fields/retry
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-05-27 06:26:30 +00:00
Joel Male
28a72581fc
chore: pin GitHub Actions to full commit SHAs
...
chore: pin GitHub Actions to full commit SHAs
2026-05-27 16:24:23 +10:00
dependabot[bot]
ddcf38dab0
chore(deps-dev): bump pestphp/pest from 3.x-dev to 4.7.0
...
Bumps [pestphp/pest](https://github.com/pestphp/pest ) from 3.x-dev to 4.7.0.
- [Release notes](https://github.com/pestphp/pest/releases )
- [Changelog](https://github.com/pestphp/pest/blob/4.x/RELEASE.md )
- [Commits](https://github.com/pestphp/pest/commits/v4.7.0 )
---
updated-dependencies:
- dependency-name: pestphp/pest
dependency-version: 4.7.0
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-05-27 06:19:38 +00:00
dependabot[bot]
e7bf1ba3a3
chore(deps-dev): bump laravel/pint in the php-minor-patch group
...
Bumps the php-minor-patch group with 1 update: [laravel/pint](https://github.com/laravel/pint ).
Updates `laravel/pint` from 1.21.0 to 1.29.1
- [Release notes](https://github.com/laravel/pint/releases )
- [Changelog](https://github.com/laravel/pint/blob/main/CHANGELOG.md )
- [Commits](https://github.com/laravel/pint/compare/v1.21.0...v1.29.1 )
---
updated-dependencies:
- dependency-name: laravel/pint
dependency-version: 1.29.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: php-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-05-27 06:19:22 +00:00
pixel-workflows[bot]
ebf5a41e01
chore: update dependabot configuration
2026-05-27 06:18:28 +00:00
Joel Male
e0d566cebd
chore: pin GitHub Actions to full commit SHAs
...
Pins all GitHub Actions uses: references to full commit SHAs
to prevent supply chain attacks via mutable action tags.
Original tag references are kept as inline comments.
2026-05-27 14:46:49 +10:00
Joel Male
863ef52e8d
Revise security policy and reporting guidelines
...
Removed supported versions section and updated reporting instructions.
2026-05-27 14:46:49 +10:00
Joel Male
6638f812c8
chore: bump version to 2.1.0
v2.1.0
2026-03-24 14:06:08 +10:00
Joel Male
8f442f51e0
chore: migrate to wearepixel/laravel-cart
2026-03-24 14:04:48 +10:00
Joel Male
6dfd0ce761
chore: bump version to 2.0.0
v2.0.0
2026-03-23 16:30:38 +10:00
Joel Male
a3161888aa
chore: bump to v2.0.0 with PHP 8.3+ support and invalid item cleanup
2026-03-23 16:28:53 +10:00
Joel Male
4c02310bf7
feat: rough session re-implementation
1.2.1
2025-04-14 16:53:35 +10:00
Joel Male
e810eb4ef4
Merge pull request #2 from joelwmale/feature/database-support
...
Database Support
1.2.0
2025-02-25 16:55:44 +10:00
Joel Male
4cf078277d
feat: finish tests & docs
2025-02-25 16:54:03 +10:00
Joel Male
7adf5ecd1f
feat: add tests and fix item level conditions for database storage
2025-02-25 16:31:42 +10:00