Calling Developers!
We are reenergizing our code contribution process! Learn More

What are the Slack Archives?

It’s a history of our time together in the Slack Community! There’s a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.

Because this space is not active, you won’t be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..

Hi all. Can someone please clarify how database access works within testing? The data does not reall

Options
U01DH3E31C1
U01DH3E31C1 Posts: 23 🧑🏻‍🚀 - Cadet

Hi all.
Can someone please clarify how database access works within testing? The data does not really get persisted to the database, at least not in my setup.
For example the Discount tests like vendor/spryker/discount/tests/SprykerTest/Zed/Discount/Business/DiscountFacadeCalculateTest.php .
I am asking this, because I try to persist discounts to the database like that, but actually test the CalculationFacade . There is a point where the Discount Model vendor/spryker/discount/src/Spryker/Zed/Discount/Business/Calculator/Discount.php reads active discounts from the database, but the previously inserted discounts can not be found. Also I can not find the previously inserted discounts in the database, I must be looking at the wrong place. What am I missing?

Comments

  • U01DH3E31C1
    U01DH3E31C1 Posts: 23 🧑🏻‍🚀 - Cadet
    Options

    Actually the vendor/spryker/discount/tests/SprykerTest/Zed/Discount/Business/DiscountFacadeCalculateTest.php seems to do exactly what I intend, but it does not work?

  • U01DH3E31C1
    U01DH3E31C1 Posts: 23 🧑🏻‍🚀 - Cadet
    Options

    Nevermid, it IS working if you do it right 😉
    I used a random discount-store relation with

    $storeTransfer = $this->tester->haveStore();
    

    Use it with the proper storename will make it findable by the Discount Model:

    $storeTransfer = $this->tester->haveStore([
         StoreTransfer::NAME => APPLICATION_STORE,
    ]);
    
  • U01DH3E31C1
    U01DH3E31C1 Posts: 23 🧑🏻‍🚀 - Cadet
    edited April 2023
    Options

    And just to mention the TransactionHelper, it is kindly generating a transaction for every test method and rolls it back afterwards. The data will never get persisted, so you have to debug it from within the transaction. No issues with caching or whatever, just use it with your regular database in your modules codeception.yml (not the PyzTest Environment):

            modules:
                enabled:
                    - \SprykerTest\Shared\Propel\Helper\TransactionHelper