1 Introduction
clab
is a command line address book application. It has no
interactive features. This document collects its acceptance criteria.
2 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
3 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
4 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"
5 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"
6 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