/**
* (C) Copyright 2013 Jabylon (http://www.jabylon.org) and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jabylon.rest.ui.wicket.panels;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.tester.WicketTester;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.junit.Before;
import org.junit.Test;
import org.jabylon.properties.PropertiesFactory;
import org.jabylon.properties.PropertyFileDescriptor;
import org.jabylon.properties.Resolvable;
import org.jabylon.properties.Review;
import org.jabylon.properties.ReviewState;
public class ProjectResourcePanelTest {
private ProjectResourcePanel fixture;
@Before
public void createFixture()
{
//needed to setup the Thread Context
new WicketTester();
fixture = new ProjectResourcePanel(PropertiesFactory.eINSTANCE.createResourceFolder(), new PageParameters());
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
*/
@SuppressWarnings("rawtypes")
@Test
public void computeProgressBars() {
Resolvable mock = mock(Resolvable.class);
when(mock.getPercentComplete()).thenReturn(15);
Triplet result = fixture.computeProgressBars(mock);
assertEquals(15, result.getSuccess());
assertEquals(0, result.getWarning());
assertEquals(0, result.getDanger());
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
*/
@Test
public void computeProgressBarsDescriptorZeroKeys() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(0);
when(mock.getPercentComplete()).thenReturn(0);
Triplet result = fixture.computeProgressBars(mock);
assertEquals(0, result.getSuccess());
assertEquals(0, result.getWarning());
assertEquals(0, result.getDanger());
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
*/
@Test
public void computeProgressBarsDescriptorWithReviews() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(100);
when(mock.getPercentComplete()).thenReturn(80);
EList<Review> reviews = newReviewList(10);
when(mock.getReviews()).thenReturn(reviews);
Triplet result = fixture.computeProgressBars(mock);
assertEquals("Must subtract the 'dirty' keys from the total percentage", 70, result.getSuccess());
assertEquals(10, result.getWarning());
assertEquals(0, result.getDanger());
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
*/
@Test
public void computeProgressBarsDescriptorComplete() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(100);
when(mock.getPercentComplete()).thenReturn(100);
EList<Review> reviews = newReviewList(10);
when(mock.getReviews()).thenReturn(reviews);
Triplet result = fixture.computeProgressBars(mock);
assertEquals("Must subtract the 'dirty' keys from the total percentage", 90, result.getSuccess());
assertEquals(10, result.getWarning());
assertEquals(0, result.getDanger());
}
@Test
public void computeProgressBarsDescriptorCompleteWithClosedReviews() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(100);
when(mock.getPercentComplete()).thenReturn(100);
EList<Review> reviews = newReviewList(10);
reviews.get(2).setState(ReviewState.RESOLVED);
reviews.get(8).setState(ReviewState.INVALID);
when(mock.getReviews()).thenReturn(reviews);
Triplet result = fixture.computeProgressBars(mock);
assertEquals("Must subtract count closed reviews as fine", 92, result.getSuccess());
assertEquals(8, result.getWarning());
assertEquals(0, result.getDanger());
}
private EList<Review> newReviewList(int size) {
EList<Review> reviews = new BasicEList<Review>(10);
for (int i = 0; i < size; i++) {
reviews.add(PropertiesFactory.eINSTANCE.createReview());
}
return reviews;
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
*/
@Test
public void computeProgressBarsDescriptorWithMasterAndReviews() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
PropertyFileDescriptor master = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(50);
when(master.getKeys()).thenReturn(100);
when(mock.getMaster()).thenReturn(master);
when(mock.getPercentComplete()).thenReturn(80);
EList<Review> reviews = newReviewList(10);
when(mock.getReviews()).thenReturn(reviews);
Triplet result = fixture.computeProgressBars(mock);
assertEquals("Must subtract the 'dirty' keys from the amount of master keys", 70, result.getSuccess());
assertEquals(10, result.getWarning());
assertEquals(0, result.getDanger());
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
* https://github.com/jutzig/jabylon/issues/122
*/
@Test
public void computeProgressBarsDescriptorWith5PercentMissing() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(0);
when(mock.getPercentComplete()).thenReturn(95);
Triplet result = fixture.computeProgressBars(mock);
assertEquals(95, result.getSuccess());
assertEquals(0, result.getWarning());
assertEquals("with 5% or less it should show danger",5, result.getDanger());
}
/**
* also see https://github.com/jutzig/jabylon/wiki/Progress-Bar-TestCases
* https://github.com/jutzig/jabylon/issues/122
*/
@Test
public void computeProgressBarsDescriptorWith5PercentMissingAndWarnings() {
PropertyFileDescriptor mock = mock(PropertyFileDescriptor.class);
when(mock.getKeys()).thenReturn(100);
when(mock.getPercentComplete()).thenReturn(95);
EList<Review> reviews = newReviewList(10);
when(mock.getReviews()).thenReturn(reviews);
Triplet result = fixture.computeProgressBars(mock);
assertEquals(85, result.getSuccess());
assertEquals(10, result.getWarning());
assertEquals("with 5% or less it should show danger",5, result.getDanger());
}
}