spec/delta_spec.rb in eternity-0.0.2 vs spec/delta_spec.rb in eternity-0.0.3
- old
+ new
@@ -1,14 +1,14 @@
require 'minitest_helper'
-describe Repository, 'Pull' do
+describe 'Delta' do
let(:repo_1) { Repository.new :test_1 }
let(:repo_2) { Repository.new :test_2 }
let(:repo_3) { Repository.new :test_3 }
- it 'test' do
+ it 'Merge and Checkout' do
repo_1[:countries].insert 'AR', name: 'Argentina'
commit_1 = repo_1.commit author: 'User 1', message: 'Commit 1'
repo_1.push
repo_2.pull
@@ -102,9 +102,118 @@
delta.must_equal 'countries' => {
'UY' => {'action' => 'delete'},
'AR' => {'action' => 'update', 'data' => {'name' => 'Argentina', 'code' => 54, 'capital' => 'CABA'}},
'BR' => {'action' => 'insert', 'data' => {'name' => 'Brasil'}},
'PY' => {'action' => 'insert', 'data' => {'name' => 'Paraguay'}}
+ }
+ end
+
+ it 'Commit -> Pull -> Push (multiple times)' do
+ repo_1[:countries].insert 'AR', name: 'Argentina'
+ repo_1.commit author: 'User 1', message: 'Added Argentina'
+ repo_1.push
+
+ delta = repo_2.pull
+ delta.must_equal 'countries' => {
+ 'AR' => {'action' => 'insert', 'data' => {'name' => 'Argentina'}}
+ }
+
+ repo_2.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina')
+ }
+
+ repo_2[:countries].insert 'BR', name: 'Brasil'
+ repo_2.commit author: 'User 2', message: 'Added Brasil'
+
+ delta = repo_2.pull
+ delta.must_be_empty
+
+ repo_2.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina'),
+ 'BR' => digest(name: 'Brasil')
+ }
+
+ repo_2.push
+
+ repo_1[:countries].insert 'UY', name: 'Uruguay'
+ repo_1.commit author: 'User 1', message: 'Added Uruguay'
+
+ delta = repo_1.pull
+ delta.must_equal 'countries' => {
+ 'BR' => {'action' => 'insert', 'data' => {'name' => 'Brasil'}}
+ }
+
+ repo_1.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina'),
+ 'BR' => digest(name: 'Brasil'),
+ 'UY' => digest(name: 'Uruguay')
+ }
+
+ repo_1.push
+
+ repo_2[:countries].insert 'CL', name: 'Chile'
+ repo_2.commit author: 'User 2', message: 'Added Chile'
+
+ delta = repo_2.pull
+ delta.must_equal 'countries' => {
+ 'UY' => {'action' => 'insert', 'data' => {'name' => 'Uruguay'}}
+ }
+
+ repo_2.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina'),
+ 'BR' => digest(name: 'Brasil'),
+ 'UY' => digest(name: 'Uruguay'),
+ 'CL' => digest(name: 'Chile')
+ }
+
+ repo_2.push
+
+ repo_1[:countries].update 'UY', name: 'Republica Oriental del Uruguay'
+ repo_1.commit author: 'User 1', message: 'Updated Uruguay'
+
+ delta = repo_1.pull
+ delta.must_equal 'countries' => {
+ 'CL' => {'action' => 'insert', 'data' => {'name' => 'Chile'}}
+ }
+
+ repo_1.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina'),
+ 'BR' => digest(name: 'Brasil'),
+ 'UY' => digest(name: 'Republica Oriental del Uruguay'),
+ 'CL' => digest(name: 'Chile')
+ }
+
+ repo_1.push
+
+ repo_2[:countries].delete 'CL'
+ repo_2.commit author: 'User 2', message: 'Deleted Chile'
+
+ delta = repo_2.pull
+ delta.must_equal 'countries' => {
+ 'UY' => {'action' => 'update', 'data' => {'name' => 'Republica Oriental del Uruguay'}}
+ }
+
+ repo_2.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina'),
+ 'BR' => digest(name: 'Brasil'),
+ 'UY' => digest(name: 'Republica Oriental del Uruguay')
+ }
+
+ repo_2.push
+
+ repo_1[:countries].insert 'CO', name: 'Colombia'
+ repo_1.commit author: 'User 1', message: 'Added Colombia'
+
+ delta = repo_1.pull
+ delta.must_equal 'countries' => {
+ 'CL' => {'action' => 'delete'}
+ }
+
+ repo_1.current_commit.must_equal_index 'countries' => {
+ 'AR' => digest(name: 'Argentina'),
+ 'BR' => digest(name: 'Brasil'),
+ 'UY' => digest(name: 'Republica Oriental del Uruguay'),
+ 'CO' => digest(name: 'Colombia')
}
end
end
\ No newline at end of file