Skip to content

Commit

Permalink
unit test notifiesBidDetailsWhenCurrentPriceMessageReceived()
Browse files Browse the repository at this point in the history
  • Loading branch information
lvguowei committed Feb 17, 2018
1 parent 487cbd4 commit 4758607
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/guowei/lv/AuctionEventListener.java
Expand Up @@ -2,4 +2,6 @@

public interface AuctionEventListener {
void auctionClosed();

void currentPrice(int price, int increment);
}
24 changes: 23 additions & 1 deletion src/main/java/com/guowei/lv/AuctionMessageTranslator.java
Expand Up @@ -4,14 +4,36 @@
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.packet.Message;

import java.util.HashMap;

public class AuctionMessageTranslator implements MessageListener{
private AuctionEventListener listener;

public AuctionMessageTranslator(AuctionEventListener listener) {
this.listener = listener;
}

@Override
public void processMessage(Chat chat, Message message) {
listener.auctionClosed();
HashMap<String, String> event = unpackEventFrom(message);

String type = event.get("Event");
if ("CLOSE".equals(type)) {
listener.auctionClosed();
} else if ("PRICE".equals(type)) {
listener.currentPrice(Integer.parseInt(event.get("CurrentPrice")), Integer.parseInt(event.get("Increment")));
}
}

private HashMap<String, String> unpackEventFrom(Message message) {
HashMap<String, String> event = new HashMap<>();
for (String element : message.getBody().split(";")) {
String[] pair = element.split(":");
event.put(pair[0].trim(), pair[1].trim());
}

return event;
}


}
5 changes: 5 additions & 0 deletions src/main/java/com/guowei/lv/Main.java
Expand Up @@ -78,4 +78,9 @@ private static String auctionId(String itemId, XMPPConnection connection) {
public void auctionClosed() {
SwingUtilities.invokeLater(() -> ui.showStatus(STATUS_LOST));
}

@Override
public void currentPrice(int price, int increment) {

}
}
12 changes: 12 additions & 0 deletions src/test/java/com/guowei/lv/AuctionMessageTranslatorTest.java
Expand Up @@ -15,6 +15,7 @@ public class AuctionMessageTranslatorTest {
private final Mockery context = new Mockery();
private final AuctionEventListener listener = context.mock(AuctionEventListener.class);
private final AuctionMessageTranslator translator = new AuctionMessageTranslator(listener);

@Test
public void notifiesAuctionClosedWhenCloseMessageReceived() {
context.checking(new Expectations() {{
Expand All @@ -24,4 +25,15 @@ public void notifiesAuctionClosedWhenCloseMessageReceived() {
message.setBody("SOLVersion: 1.1; Event: CLOSE;");
translator.processMessage(UNUSED_CHAT, message);
}

@Test
public void notifiesBidDetailsWhenCurrentPriceMessageReceived() {
context.checking(new Expectations() {{
exactly(1).of(listener).currentPrice(192, 7);
}});

Message message = new Message();
message.setBody("SOLVersion: 1.1; Event: PRICE; CurrentPrice: 192; Increment: 7; Bidder: Someone else;");
translator.processMessage(UNUSED_CHAT, message);
}
}
2 changes: 1 addition & 1 deletion src/test/java/com/guowei/lv/FakeAuctionServer.java
Expand Up @@ -46,7 +46,7 @@ public void hasReceivedBid(int bid, String sniperId) throws InterruptedException
}

public void announceClosed() throws XMPPException {
currentChat.sendMessage(new Message());
currentChat.sendMessage("SOLVersion: 1.1; Event: CLOSE;");
}

public void stop() {
Expand Down

0 comments on commit 4758607

Please sign in to comment.