215e3d084b
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
118 lines
2.7 KiB
Bash
118 lines
2.7 KiB
Bash
#!/usr/bin/env bats
|
|
load bats-extra
|
|
load bats-jq
|
|
|
|
assert_key_value() {
|
|
local expected=$1 key=$2
|
|
local result
|
|
result=$(echo "$output" | jq -r --arg key "$key" --argjson val "$expected" '.[$key] == $val')
|
|
[[ $result == "true" ]]
|
|
}
|
|
|
|
@test "new car" {
|
|
## task 1
|
|
run jq -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car
|
|
'
|
|
assert_success
|
|
assert_key_value 100 "battery_percentage"
|
|
assert_key_value 0 "distance_driven_in_meters"
|
|
assert_key_value "null" "nickname"
|
|
}
|
|
|
|
@test "new car with nickname" {
|
|
## task 2
|
|
run jq -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car("Red")
|
|
'
|
|
assert_success
|
|
assert_key_value 100 "battery_percentage"
|
|
assert_key_value 0 "distance_driven_in_meters"
|
|
assert_key_value '"Red"' "nickname"
|
|
}
|
|
|
|
@test "display distance for new car is zero" {
|
|
## task 3
|
|
run jq -r -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car | display_distance
|
|
'
|
|
assert_success
|
|
assert_output '0 meters'
|
|
}
|
|
|
|
@test "display distance for car with some distance" {
|
|
## task 3
|
|
run jq -r -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car
|
|
| .distance_driven_in_meters += 20
|
|
| display_distance
|
|
'
|
|
assert_success
|
|
assert_output '20 meters'
|
|
}
|
|
|
|
@test "display battery for new car is 100%" {
|
|
## task 4
|
|
run jq -r -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car | display_battery
|
|
'
|
|
assert_success
|
|
assert_output 'Battery at 100%'
|
|
}
|
|
|
|
@test "display battery for car with some usage" {
|
|
## task 4
|
|
run jq -r -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car
|
|
| .battery_percentage -= 40
|
|
| display_battery
|
|
'
|
|
assert_success
|
|
assert_output 'Battery at 60%'
|
|
}
|
|
|
|
@test "display battery for car with empty battery" {
|
|
## task 4
|
|
run jq -r -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car
|
|
| .battery_percentage = 0
|
|
| display_battery
|
|
'
|
|
assert_success
|
|
assert_output 'Battery empty'
|
|
}
|
|
|
|
@test "drive a new car" {
|
|
## task 5
|
|
run jq -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car | drive
|
|
'
|
|
assert_success
|
|
assert_key_value 99 "battery_percentage"
|
|
assert_key_value 20 "distance_driven_in_meters"
|
|
}
|
|
|
|
@test "drive a car with a dead battery" {
|
|
## task 6
|
|
run jq -n '
|
|
include "remote-control-car";
|
|
new_remote_control_car
|
|
| drive
|
|
| .battery_percentage = 0
|
|
| drive
|
|
'
|
|
assert_success
|
|
assert_key_value 0 "battery_percentage"
|
|
assert_key_value 20 "distance_driven_in_meters"
|
|
}
|
|
|
|
|
|
# vim: sw=4 ts=8
|