test_time.sh
#!/bin/bash
# Test skraak time command
# Usage: ./test_time.sh
# No database required
source "$(dirname "$0")/test_lib.sh"
echo "=== Testing skraak time ==="
echo ""
check_binary
# Test 1: Get current time
echo "Test 1: Get current time"
result=$($PROJECT_DIR/skraak time 2>&1)
time_val=$(echo "$result" | jq -r '.time // empty')
timezone=$(echo "$result" | jq -r '.timezone // empty')
unix_ts=$(echo "$result" | jq -r '.unix // empty')
if [ -n "$time_val" ] && [ -n "$timezone" ] && [ -n "$unix_ts" ]; then
echo -e "${GREEN}✓${NC} time returns all fields"
echo " Time: $time_val"
echo " Timezone: $timezone"
echo " Unix: $unix_ts"
((TESTS_RUN++)) || true
((TESTS_PASSED++)) || true
else
echo -e "${RED}✗${NC} time missing fields"
echo " Output: $result"
((TESTS_RUN++)) || true
((TESTS_FAILED++)) || true
fi
# Test 2: Unix timestamp is a valid number
echo ""
echo "Test 2: Unix timestamp is numeric and recent"
if [ "$unix_ts" -gt 1700000000 ] 2>/dev/null; then
echo -e "${GREEN}✓${NC} Unix timestamp is reasonable ($unix_ts)"
((TESTS_RUN++)) || true
((TESTS_PASSED++)) || true
else
echo -e "${RED}✗${NC} Unix timestamp looks wrong ($unix_ts)"
((TESTS_RUN++)) || true
((TESTS_FAILED++)) || true
fi
# Test 3: Time is valid RFC3339
echo ""
echo "Test 3: Time is valid RFC3339 format"
if echo "$time_val" | grep -qE '^[0-9]{4}-[0-9]{2}-[0-9]{2}T'; then
echo -e "${GREEN}✓${NC} Time is RFC3339 format"
((TESTS_RUN++)) || true
((TESTS_PASSED++)) || true
else
echo -e "${RED}✗${NC} Time format unexpected: $time_val"
((TESTS_RUN++)) || true
((TESTS_FAILED++)) || true
fi
echo ""
print_summary