Lessons
Our series are curated collections of lessons that walk through a specific topic from beginning to end. Series are a great way to learn a topic in a structured way.
Filtering & Controlling Test Runs
In this lesson, learn how to control Japa's test execution. Ignore tests using skip, only run specific tests using pinning, and also how assigning tags can powerfully allow us to easily filter tests across specs.
Data-Driven Tests with Datasets
In this lesson, learn to write DRY tests using Japa's datasets! Define an array or callback function of data (primitives or objects) to run a single test multiple times, enabling TypeScript inference, and using interpolation in the test name for context.
Testing Async Code & Exceptions
In this lesson, we'll cover testing asynchronous code in AdonisJS using Japa. Learn to assert successful promises with both async/await and promise chaining. We'll then discuss testing rejected promises and what to watch for to prevent false positives.
Group & Test Lifecycle Hooks
In this lesson, we'll walk through a number of lifecycle hooks we can use on a per-group and per-test basis. We'll also discuss how we can run a hook for each test and how setup hooks allow a convenient cleanup method.
Naming Tests
In this lesson, we'll discuss how to quickly write a good test name in a single, brief sentence.
Making Assertions
In this lesson, we'll get comfy with making assertions against actual and expected values. We'll step through and demo several highly used assertion methods to see exactly how they work.
Running Tests with the Test Runner
In this lesson, we'll learn about the various ways we can use the Ace CLI and Japa's test runner to execute all, some, or individual tests.
Our First Test
In this lesson, we'll write our first test with Japa and learn about spec files, as well as the three key components of crafting a good test: arrange, act, and assert.
The AdonisJS Testing Stack
In this lesson, we'll pull down the starter project for this series and use it to discuss how Japa is integrated within AdonisJS projects.
Why Bother Testing?
In this lesson, we'll discuss what the benefits of testing are, what we should focus on when testing, and give a brief introduction to this series.
AdonisJS Scenarios #3.0
Generating Dynamic OG Images with AdonisJS & Puppeteer
In this lesson, we'll learn how to generate dynamic Open Graph (OG) images using AdonisJS and Puppeteer. We'll also add rate limiting to limit the number of OG images being generated at once and discuss some things to watch out for.
Removing Indexed Documents when they're Deleted
In this lesson, we'll learn how we can remove documents from a Meilisearch index as records are deleted from our application. For this, we'll deindex author documents when a user deletes their account in our application.
Indexing Data as its Created
In this lesson, we'll learn how we can dynamically index documents in Meilisearch as records are created within our application. For this, we'll index a new author document when a user registers within our application.
Performing a Multi-Search Across Indexes
In this lesson, we'll piece everything together into our final multi-search by searching across our book, genre, and author indexes within Meilisearch with a single call. We'll also discuss how we can get a single federated result array back if desired.
Making our Search Results Functional with Unpoly
In this lesson, we'll install and configure Unpoly to handle our search form's submission. We'll then server-render the search's results using EdgeJS and return it back as our response for Unpoly to swap in-place directly in the working document.
Performing Full-Text Search
In this lesson, we'll learn how to perform a full-text search with Meilisearch while also building the structural base for what will eventually serve as our multi-search autocomplete.
Creating a Command to Index Data in Meilisearch
In this lesson, we'll create an Ace CLI command to index our pre-existing data within our Meilisearch database so it is ready to search against. We'll walk our way through this and point out what to watch out for and how to view task errors.
Creating A Meilisearch Service to Initialize Admin & Search Instances
In this lesson, we'll create a singleton Meilisearch service to simplify operations against our Meilisearch database by allowing us to specify whether we want to simply search or perform an admin authorized operation.
Showing 1 to 18 of 437 results