Skip to content

Commit

Permalink
last changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Maciej Kaszyński committed Nov 25, 2019
1 parent 3234e61 commit ab45db5
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 13 deletions.
Expand Up @@ -5,32 +5,37 @@
import com.mkaszynski.tdd.pricing.dto.SummaryItem;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import static com.mkaszynski.tdd.pricing.Campaign.emptyCampaign;
import static java.util.Collections.emptyList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;

@ExtendWith(MockitoExtension.class)
class BasketServiceScenarioTest {

@Mock
private BasketRepository basketRepository;
@Mock
private ProductRepository productRepository;
@InjectMocks
private BasketService basketService;
private BasketRepository basketRepository = new InMemoryBasketRepo();
private ProductRepository productRepository = new InMemoryProductRepository();

private BasketService basketService = new BasketService(basketRepository, productRepository);


@Test
void shouldStoreOneProduct_whenAddedToEmptyBasket() {
when(productRepository.getProduct("Butter")).thenReturn(butter());
when(basketRepository.getBasket(1L)).thenReturn(emptyBasket());
productRepository.save(new Product("Butter", 220, SelectedProduct.Type.FOOD));

basketService.add(new AddProductCommand(1L, "Butter", 1));
BasketSummary summary = basketService.summary(1L);
basketService.add(new AddProductCommand(0L, "Butter", 1));
BasketSummary summary = basketService.summary(0L);

assertThat(summary.getItems()).containsOnly(new SummaryItem("Butter", 220, 1));
}

@Test
void shouldStoreOneProduct_whenAddedToEmptyBasket1() {
productRepository.save(new Product("Butter", 220, SelectedProduct.Type.FOOD));

basketService.add(new AddProductCommand(0L, "Butter", 1));
BasketSummary summary = basketService.summary(0L);

assertThat(summary.getItems()).containsOnly(new SummaryItem("Butter", 220, 1));
}
Expand All @@ -42,4 +47,5 @@ private Basket emptyBasket() {
private Product butter() {
return new Product("Butter", 220, SelectedProduct.Type.FOOD);
}

}
@@ -0,0 +1,27 @@
package com.mkaszynski.tdd.pricing;

import java.util.HashMap;
import java.util.Map;

import static com.mkaszynski.tdd.pricing.Campaign.emptyCampaign;
import static java.util.Collections.emptyList;

class InMemoryBasketRepo implements BasketRepository {
private Map<Long, Basket> map = new HashMap<>();

@Override
public Basket getBasket(Long basketId) {
return map.getOrDefault(basketId, emptyBasket());
}

@Override
public Long save(Basket basket) {
long id = map.size();
map.put(id, basket);
return id;
}

private Basket emptyBasket() {
return new Basket(1L, emptyList(), emptyCampaign());
}
}
@@ -0,0 +1,19 @@
package com.mkaszynski.tdd.pricing;

import java.util.HashMap;
import java.util.Map;

class InMemoryProductRepository implements ProductRepository {
private Map<String, Product> map = new HashMap<>();

@Override
public Product getProduct(String name) {
return map.get(name);
}

@Override
public String save(Product product) {
map.put(product.getName(), product);
return product.getName();
}
}

0 comments on commit ab45db5

Please sign in to comment.