#!/bin/sh
#
# Copyright (c) 2016 Jeromy Johnson
# MIT Licensed; see the LICENSE file in this repository.
#

test_description="Test object diff command"

. lib/test-lib.sh

test_init_ipfs

test_expect_success "create some objects for testing diffs" '
	mkdir foo &&
	echo "stuff" > foo/bar &&
	mkdir foo/baz &&
	A=$(ipfs add -r -q foo | tail -n1) &&
	echo "more things" > foo/cat &&
	B=$(ipfs add -r -q foo | tail -n1) &&
	echo "nested" > foo/baz/dog &&
	C=$(ipfs add -r -q foo | tail -n1)
	echo "changed" > foo/bar &&
	D=$(ipfs add -r -q foo | tail -n1)
'

test_expect_success "diff against self is empty" '
	ipfs object diff $A $A > diff_out
'

test_expect_success "identity diff output looks good" '
	printf "" > diff_exp &&
	test_cmp diff_exp diff_out
'

test_expect_success "diff added link works" '
	ipfs object diff $A $B > diff_out
'

test_expect_success "diff added link looks right" '
	echo + QmUSvcqzhdfYM1KLDbM76eLPdS9ANFtkJvFuPYeZt73d7A \"cat\" > diff_exp &&
	test_cmp diff_exp diff_out
'

test_expect_success "verbose diff added link works" '
	ipfs object diff -v $A $B > diff_out
'

test_expect_success "verbose diff added link looks right" '
	echo added new link \"cat\" pointing to QmUSvcqzhdfYM1KLDbM76eLPdS9ANFtkJvFuPYeZt73d7A > diff_exp &&
	test_cmp diff_exp diff_out
'

test_expect_success "diff removed link works" '
	ipfs object diff -v $B $A > diff_out
'

test_expect_success "diff removed link looks right" '
	echo removed link \"cat\" \(was QmUSvcqzhdfYM1KLDbM76eLPdS9ANFtkJvFuPYeZt73d7A\) > diff_exp &&
	test_cmp diff_exp diff_out
'

test_expect_success "diff nested add works" '
	ipfs object diff -v $B $C > diff_out
'

test_expect_success "diff looks right" '
	echo added new link \"baz/dog\" pointing to QmdNJQUTZuDpsUcec7YDuCfRfvw1w4J13DCm7YcU4VMZdS > diff_exp &&
	test_cmp diff_exp diff_out
'

test_expect_success "diff changed link works" '
	ipfs object diff -v $C $D > diff_out
'

test_expect_success "diff looks right" '
	echo changed \"bar\" from QmNgd5cz2jNftnAHBhcRUGdtiaMzb5Rhjqd4etondHHST8 to QmRfFVsjSXkhFxrfWnLpMae2M4GBVsry6VAuYYcji5MiZb > diff_exp &&
	test_cmp diff_exp diff_out
'

test_done
