Skip to content

Instantly share code, notes, and snippets.

@tsavo-at-pieces
Last active June 18, 2023 21:17
Show Gist options
  • Save tsavo-at-pieces/f62b505ef1bfb32202fdc61245075af9 to your computer and use it in GitHub Desktop.
Save tsavo-at-pieces/f62b505ef1bfb32202fdc61245075af9 to your computer and use it in GitHub Desktop.
πŸ“ Custom Description: This snippet is from lines (1,62) inside the file persisted_todos_sample_test.dart and from project flutter_riverpod_ultra_todo_app. πŸ’‘ Smart Description: This code tests the Isar test snippet to create a new Todo object using an in-memory Isar database, sets up and writes data to isar. It also checks if there are no todos w…

Isar Database Test Code Snippet

Preview:
import 'dart:io';
import 'package:test/test.dart';
import 'package:isar/isar.dart';
import 'package:todos/todo.dart';

void main() {
  // TODO Implement typical setup
  //  TODO Send boilerplate isar test snippet to @brian-at-pieces

// Note: This code is setting up a test environment
// using an in-memory Isar database. It creates a new Todo object,
// adds test data to the object, and then writes the data to the database.
// This is useful for testing the functionality of an Isar database without
// affecting the real data used by an application.

// Initialize an Isar instance
  late final Isar isar;

// Set up test environment
  setUp(() async {
    // Configure in-memory database, but this can be changed to a file location
    isar = await Isar.open(
      [TodoSchema],
      directory: Directory.current.path,
    );

    // Add test data
    final newTodo = Todo()
      ..done = false
      ..title = 'Task 1'
      ..description = 'This is task 1'
      ..created = DateTime.now()
      ..updated = DateTime.now();

    // Write new data to Isar database
    await isar.writeTxn(() async {
      await isar.todos.put(newTodo);
    });
  });

// Classic tearDown method for isar
  tearDown(() async {
    await isar.close();
  });

  test('Add and retrieve todo', () async {
    // Retrieve the test data and assert that it matches the original data
    final existingTodo = await isar.todos.get(1);
    expect(existingTodo?.title, equals('Task 1'));
    expect(existingTodo?.done, equals(false));
  });

  test('Delete todo', () async {
    // Delete the test data and assert that it no longer exists
    await isar.writeTxn(() async {
      await isar.todos.delete(1);
    });

    final existingTodo = await isar.todos.get(1);
    expect(existingTodo, isNull);
  });
}
Associated Context
Type Code Snippet ( .dart )
Associated Tags Brian-at-pieces Setup Write Txn Todo Object File Location Delete Todo dart flutter Test Environment Isar Database flutter
πŸ“ Custom Description This snippet is from lines (1,62) inside the file persisted_todos_sample_test.dart and from project flutter_riverpod_ultra_todo_app.
πŸ’‘ Smart Description This code tests the Isar test snippet to create a new Todo object using an in-memory Isar database, sets up and writes data to isar. It also checks if there are no todos with this title or description provided by another application
πŸ”Ž Suggested Searches How to create a test environment in Isar database?
How to use Todo object using InMemoryIsar ?
What is the purpose of todos/todo.dart and it should be used by an application?
how to write data to ISar instance with Testing for testing purposes
Related Links https://stackoverflow.com/questions/74307526/running-unittests-with-isar-in-flutter
https://docs.flutter.dev/cookbook/testing/unit/introduction
https://riverpod.dev/
https://isar.dev/
Related People Tsavo Knott
Sensitive Information No Sensitive Information Detected
Shareable Link https://tsavo.pieces.cloud/?p=c2c147b5ba
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment