clab; – command line address book

By: Lars Wirzenius

2022-09-09 06:24

Table of Contents

  1. 1 Introduction
  2. 2 Empty database
  3. 3 Alice and Bob
  4. 4 Search by tag
  5. 5 Full text search
  6. 6 Reformat address book

Introduction

clab is a command line address book application. It has no interactive features. This document collects its acceptance criteria.

Empty database

given an installed clab
when I run clab lint
then command is successful
when I run clab search Alice
then command is successful
then stdout is exactly ""
when I try to run clab mutt-query Alice
then command fails

Alice and Bob

Next, let's add records for Alice and Bob, and make sure searches find only the right records.

given an installed clab
given file .local/share/clab/address-book.yaml from address-book.yaml
when I run clab lint
then command is successful
when I run clab list
then command is successful
then stdout is valid YAML
then stdout contains "Alice Atherthon"
then stdout contains "Bob Bobbington"
when I run clab search Alice
then command is successful
then stdout is valid YAML
then stdout contains "Alice Atherthon"
then stdout doesn't contain "Bob"
when I run clab mutt-query Alice
then command is successful
then stdout is exactly "clab found matches:\nalice@example.com\tAlice Atherthon\n"
- name: Alice Atherthon
  email:
    work: alice@example.com
  tags: [co-worker]
  last_checked: 2021-09
- name: Bob Bobbington
  email:
    personal: bob@example.com
  last_checked: 2021-09
---
- name: Alice Atherthon
  email:
    work: alice@example.com
  tags:
    - co-worker
  last_checked: 2021-09
- name: Bob Bobbington
  email:
    personal: bob@example.com
  last_checked: 2021-09

Search by tag

This scenario verifies that clab can find entries based on tags.

given an installed clab
given file .local/share/clab/address-book.yaml from address-book.yaml
when I run clab tagged co-worker
then command is successful
then stdout contains "Alice Atherthon"
then stdout doesn't contain "Bob"

Full text search

This scenario verifies that clab does a full text search.

given an installed clab
given file .local/share/clab/address-book.yaml from address-book.yaml
when I run clab search example
then command is successful
then stdout contains "Alice Atherthon"
then stdout contains "Bob"
when I run clab search email
then command is successful
then stdout contains "Alice Atherthon"
then stdout contains "Bob"

Reformat address book

This scenario verifies that clab can reformat the address book in place.

given an installed clab
given file .local/share/clab/address-book.yaml from address-book.yaml
given file reformatted.yaml from address-book-reformatted
when I run clab reformat
then command is successful
then files .local/share/clab/address-book.yaml and reformatted.yaml match