save_file_spec.rb revision afd1d888784385307c9c0544597a513c2008d342
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenrequire 'spec_helper'
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainendescribe 'Repository saving a file' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen let(:user) { FactoryGirl.create :user }
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen let(:repository) { FactoryGirl.create :repository, user: user }
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen let(:target_path) { 'save_file.clif' }
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen let(:message) { 'test message' }
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen let(:content) { "(Cat x)\n" }
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen let(:file_path) do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen tmpfile = Tempfile.new('repository_test')
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen tmpfile.write(content)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen tmpfile.close
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen tmpfile
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen end
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen context 'saving a file' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen it 'should not have an ontology yet' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen expect(repository.ontologies.count).to eq(0)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen end
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen context "that doesn't exist" do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen before do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen @version = repository.save_file(file_path, target_path, message, user)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen end
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen it 'create the file in the git repository' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen expect(repository.git.path_exists?(target_path)).to be_true
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen end
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen it 'create the file with correct contents in the git repository' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen expect(repository.git.get_file(target_path).content).to eq(content)
ccc895c0358108d2304239063e940b7d75f364abTimo Sirainen end
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen it 'create a new ontology' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen expect(repository.ontologies.count).to eq(1)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen end
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen it 'create a new ontology with a default name' do
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen expect(repository.ontologies.first.name).to eq('Save_file')
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen end
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen it 'create a new ontology with only one version pointing to the commit' do
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen o = repository.ontologies.first
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen expect(o.versions.count).to eq(1)
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen expect(o.versions.first[:commit_oid]).to eq(@version.commit_oid)
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen end
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen it 'create a new ontology with only one version belonging to the right user' do
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen v = repository.ontologies.first.versions.first
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen expect(v.user).to eq(user)
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen end
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen end
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen end
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainenend
5137d2d80255938a0f5fb8f3c1a21b34cf11ada3Timo Sirainen