001package org.apache.maven.scm.provider.accurev.command.tag;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *    http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import static org.apache.maven.scm.ScmFileMatcher.assertHasScmFile;
023import static org.hamcrest.Matchers.is;
024import static org.hamcrest.Matchers.notNullValue;
025import static org.junit.Assert.assertThat;
026import static org.mockito.Mockito.when;
027
028import java.io.File;
029import java.util.Collections;
030import java.util.List;
031
032import org.apache.maven.scm.CommandParameter;
033import org.apache.maven.scm.CommandParameters;
034import org.apache.maven.scm.ScmFileSet;
035import org.apache.maven.scm.ScmFileStatus;
036import org.apache.maven.scm.command.tag.TagScmResult;
037import org.apache.maven.scm.provider.accurev.AccuRevInfo;
038import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository;
039import org.apache.maven.scm.provider.accurev.command.AbstractAccuRevCommandTest;
040import org.junit.Test;
041
042public class AccuRevTagCommandTest
043    extends AbstractAccuRevCommandTest
044{
045
046    @Test
047    public void testTag()
048        throws Exception
049    {
050        final ScmFileSet testFileSet = new ScmFileSet( new File( "/my/workspace/project/dir" ) );
051        final File basedir = testFileSet.getBasedir();
052
053        final String basisStream = "basisStream";
054        final AccuRevInfo info = new AccuRevInfo( basedir );
055        info.setBasis( basisStream );
056
057        AccuRevScmProviderRepository repo = new AccuRevScmProviderRepository();
058        repo.setStreamName( "myStream" );
059        repo.setAccuRev( accurev );
060        repo.setProjectPath( "/project/dir" );
061
062        when( accurev.info( basedir )).thenReturn(info);
063        
064        when( accurev.mksnap( "theTagName", basisStream ) ).thenReturn( Boolean.TRUE );
065
066        List<File> taggedFiles = Collections.singletonList( new File( "tagged/file" ) );
067        when( accurev.statTag( "theTagName" ) ).thenReturn( taggedFiles );
068
069        AccuRevTagCommand command = new AccuRevTagCommand( getLogger() );
070
071        CommandParameters commandParameters = new CommandParameters();
072        commandParameters.setString( CommandParameter.TAG_NAME, "theTagName" );
073        TagScmResult result = command.tag( repo, testFileSet, commandParameters );
074
075        assertThat( result.isSuccess(), is( true ) );
076        assertThat( result.getTaggedFiles().size(), is( 1 ) );
077        assertHasScmFile( result.getTaggedFiles(), "tagged/file", ScmFileStatus.TAGGED );
078
079    }
080
081    @Test
082    public void testAccuRevError()
083        throws Exception
084    {
085        final ScmFileSet testFileSet = new ScmFileSet( new File( "/my/workspace/project/dir" ) );
086        final File basedir = testFileSet.getBasedir();
087
088        final String basisStream = "basisStream";
089        final AccuRevInfo info = new AccuRevInfo( basedir );
090        info.setBasis( basisStream );
091
092        AccuRevScmProviderRepository repo = new AccuRevScmProviderRepository();
093        repo.setStreamName( "myStream" );
094        repo.setAccuRev( accurev );
095        repo.setProjectPath( "/project/dir" );
096        when( accurev.info( basedir )).thenReturn(info);
097
098        when( accurev.mksnap( "theTagName", basisStream ) ).thenReturn( Boolean.FALSE );
099        AccuRevTagCommand command = new AccuRevTagCommand( getLogger() );
100
101        CommandParameters commandParameters = new CommandParameters();
102        commandParameters.setString( CommandParameter.TAG_NAME, "theTagName" );
103        TagScmResult result = command.tag( repo, testFileSet, commandParameters );
104
105        assertThat( result.isSuccess(), is( false ) );
106        assertThat( result.getProviderMessage(), notNullValue() );
107
108    }
109
110}