Skip to content
This repository has been archived by the owner on Dec 5, 2020. It is now read-only.

Commit

Permalink
unit tests and puzzle
Browse files Browse the repository at this point in the history
  • Loading branch information
amihaiemil committed Aug 17, 2017
1 parent 3f774ea commit 52bb227
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/amihaiemil/charles/github/Tweet.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
* @author Mihai Andronache ([email protected])
* @version $Id$
* @since 1.0.1
* @todo #241:30min Pull out the system proerties, same as was done
* in the aws layer, to simplify the unit tests.
*/
public final class Tweet extends IntermediaryStep {

Expand Down
80 changes: 80 additions & 0 deletions src/test/java/com/amihaiemil/charles/github/TweetTestCase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/**
* Copyright (c) 2016-2017, Mihai Emil Andronache
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1)Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2)Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3)Neither the name of charles-rest nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package com.amihaiemil.charles.github;

import org.junit.Test;
import org.mockito.Mockito;
import org.slf4j.Logger;

/**
* Unit tests for {@link Tweet}
* @author Mihai Andronache ([email protected])
* @version $Id$
* @since 1.0.1
*/
public final class TweetTestCase {

/**
* Tweet will log a message informing the commander that tweeting is off
* and can be enabled via .charles.yml
* @throws Exception If something goes wrong.
*/
@Test
public void logsWhenTweetingIsOff() throws Exception {
final Command com = Mockito.mock(Command.class);
final CachedRepo repo = Mockito.mock(CachedRepo.class);
Mockito.when(repo.charlesYml()).thenReturn(new CharlesYml.Default());
Mockito.when(com.repo()).thenReturn(repo);

final Logger logger = Mockito.mock(Logger.class);

final Step tweet = new Tweet(new Step.Fake(true));
tweet.perform(com, logger);
Mockito.verify(logger).info("Tweeting is disabled, won't tweet. You can enable tweeting via .charles.yml file.");
}

/**
* Tweet will log a message informing the commander that tweeting is not possible because some
* mandatory system properties are not set,
* @throws Exception If something goes wrong.
*/
@Test
public void logsWhenSysPropsAreMissing() throws Exception {
final Command com = Mockito.mock(Command.class);
final CachedRepo repo = Mockito.mock(CachedRepo.class);
final CharlesYml yml = Mockito.mock(CharlesYml.class);
Mockito.when(yml.tweet()).thenReturn(true);
Mockito.when(repo.charlesYml()).thenReturn(yml);
Mockito.when(com.repo()).thenReturn(repo);

final Logger logger = Mockito.mock(Logger.class);

final Step tweet = new Tweet(new Step.Fake(true));
tweet.perform(com, logger);
Mockito.verify(logger).warn("One of the 4 tweeter system properties is missing! Cannot tweet!");
}

}

1 comment on commit 52bb227

@0pdd
Copy link

@0pdd 0pdd commented on 52bb227 Aug 17, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 241-12bd8c89 discovered in src/main/java/com/amihaiemil/charles/github/Tweet.java and submitted as #243.

Please sign in to comment.