5.0 Source Code
Committing 5.0 Source Code
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.unicenta;
|
||||
|
||||
import com.unicenta.pos.util.FlatLookAndFeel;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class PackageScanTest {
|
||||
|
||||
@Test
|
||||
public void shouldScanPackage() {
|
||||
Assert.assertEquals(67, new FlatLookAndFeel().getLafs().size());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.unicenta.data.loader;
|
||||
|
||||
import com.unicenta.plugins.Application;
|
||||
import com.unicenta.plugins.metrics.Metrics;
|
||||
import com.unicenta.pos.forms.AppLocal;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
|
||||
public class StaticSentenceTest {
|
||||
|
||||
final static String UPDATE_SQL = "UPDATE closedcash SET DATEEND = {ts '2022-01-20 14:18:09.840'}, NOSALES = 0 WHERE HOST = 'store1' AND MONEY = '932cdfea-1822-4d07-9dc8-a788adeabfec'";
|
||||
final static String JOIN_SQL = "SELECT T.TICKETID, T.TICKETTYPE, R.DATENEW, P.NAME, C.NAME, SUM(PM.TOTAL), T.STATUS, PM.notes FROM receipts R JOIN tickets T ON R.ID = T.ID LEFT OUTER JOIN payments PM ON R.ID = PM.RECEIPT LEFT OUTER JOIN customers C ON C.ID = T.CUSTOMER LEFT OUTER JOIN people P ON T.PERSON = P.ID WHERE (T.TICKETTYPE = 0 AND R.DATENEW >= R JOIN tickets T ON R.ID = T.ID LEFT OUTER JOIN payments PM ON R.ID = PM.RECEIPT LEFT OUTER JOIN customers C ON C.ID = T.CUSTOMER LEFT OUTER JOIN people P ON T.PERSON = P.ID WHERE (T.TICKETTYPE = 0 AND R.DATENEW >= {ts '2023-02-12 00:00:00.000') GROUP BY T.ID, T.TICKETID, T.TICKETTYPE, R.DATENEW, P.NAME, C.NAME, PM.notes ORDER BY R.DATENEW DESC, T.TICKETID";
|
||||
Session session;
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
session = Mockito.mock(Session.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldConvertUpdateToSQLite() throws Exception {
|
||||
Mockito.when(session.getURL()).thenReturn("jdbc:sqlite://home/temp/.unicenta/unicentaopos");
|
||||
StaticSentence staticSentence = new StaticSentence(session, "");
|
||||
String fixSqliteDate = staticSentence.fixSqliteDate(UPDATE_SQL);
|
||||
assert !fixSqliteDate.contains("{");
|
||||
assert fixSqliteDate.contains("UPDATE");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldConvertJoinToSQLite() throws Exception {
|
||||
Mockito.when(session.getURL()).thenReturn("jdbc:sqlite://home/temp/.unicenta/unicentaopos");
|
||||
StaticSentence staticSentence = new StaticSentence(session, "");
|
||||
String fixSqliteDate = staticSentence.fixSqliteDate(JOIN_SQL);
|
||||
assert !fixSqliteDate.contains("{");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.unicenta.pos.ticket;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TicketInfoTest {
|
||||
|
||||
@Test
|
||||
public void shouldGroupFourOfTheSameProduct() {
|
||||
TicketInfo ticket = addTwoOfTheSameProduct(null);
|
||||
Assert.assertEquals(2, ticket.getLinesCount());
|
||||
runScript(ticket);
|
||||
Assert.assertEquals(3, ticket.getLinesCount());
|
||||
TicketInfo updatedTicket = addTwoOfTheSameProduct(ticket);
|
||||
Assert.assertEquals(5, updatedTicket.getLinesCount());
|
||||
runScript(updatedTicket);
|
||||
Assert.assertEquals(6, updatedTicket.getLinesCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldGroupTwoOfTheSameProduct() {
|
||||
TicketInfo ticket = addTwoOfTheSameProduct(null);
|
||||
Assert.assertEquals(2, ticket.getLinesCount());
|
||||
runScript(ticket);
|
||||
Assert.assertEquals(3, ticket.getLinesCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldGroupDiscountTwoDifferentProducts() {
|
||||
TicketInfo ticket = twoDifferentProducts();
|
||||
Assert.assertEquals(2, ticket.getLinesCount());
|
||||
runScript(ticket);
|
||||
Assert.assertEquals(3, ticket.getLinesCount());
|
||||
}
|
||||
|
||||
private void runScript(TicketInfo ticket) {
|
||||
TicketLineInfo line = ticket.getLine(1);
|
||||
int count = Integer.parseInt(line.getProperty("COUNT", "0"));
|
||||
Double newPrice1 = new Double(line.getProperty("PRICE", "0"));
|
||||
String groupName = line.getProperty("GROUP", "0");
|
||||
int productCount = 0;
|
||||
int discountsAlreadyApplied = 0;
|
||||
|
||||
for (TicketLineInfo ticketLine : ticket.getLines()) {
|
||||
boolean grouped = groupName.equals(ticketLine.getProperty("GROUP", "0"));
|
||||
boolean multi = count > 0;
|
||||
if (multi && grouped) {
|
||||
productCount++;
|
||||
}
|
||||
if (ticketLine.getProductName().contains("Buy")) {
|
||||
discountsAlreadyApplied = discountsAlreadyApplied + count;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (count == (productCount - discountsAlreadyApplied)) {
|
||||
|
||||
double newPrice2 = -(line.getPriceTax() * productCount) + newPrice1;
|
||||
|
||||
TicketLineInfo updatedTicketLine = new TicketLineInfo("Buy " + productCount + " for £" + (line.getProperty("PRICE")),
|
||||
line.getProductTaxCategoryID(),
|
||||
"",
|
||||
1,
|
||||
0,
|
||||
line.getTaxInfo());
|
||||
ticket.insertLine(ticket.getLinesCount(),updatedTicketLine);
|
||||
}
|
||||
}
|
||||
|
||||
private TicketInfo twoDifferentProducts() {
|
||||
TicketInfo ticket = new TicketInfo();
|
||||
|
||||
ArrayList<TicketLineInfo> ticketLines = new ArrayList<>();
|
||||
TaxInfo stdTax = new TaxInfo("1", "STD", "001", null, null, 10, false, 1);
|
||||
|
||||
TicketLineInfo ticketLineInfo1 = new TicketLineInfo("1234", "test1", "001", "", 1, 10, stdTax);
|
||||
ticketLineInfo1.getProductID();
|
||||
ticketLineInfo1.setProperty("GROUP", "BOGO");
|
||||
ticketLineInfo1.setProperty("COUNT", "2");
|
||||
ticketLineInfo1.setProperty("PRICE", "5");
|
||||
|
||||
TicketLineInfo ticketLineInfo2 = new TicketLineInfo("1235", "test2", "001", "", 1, 10, stdTax);
|
||||
ticketLineInfo2.setProperty("GROUP", "BOGO");
|
||||
ticketLineInfo2.setProperty("COUNT", "2");
|
||||
ticketLineInfo2.setProperty("PRICE", "5");
|
||||
|
||||
ticketLines.add(ticketLineInfo1);
|
||||
ticketLines.add(ticketLineInfo2);
|
||||
ticket.setLines(ticketLines);
|
||||
|
||||
return ticket;
|
||||
}
|
||||
|
||||
private TicketInfo addTwoOfTheSameProduct(TicketInfo ticket) {
|
||||
|
||||
if (ticket == null) {
|
||||
ticket = new TicketInfo();
|
||||
}
|
||||
List<TicketLineInfo> ticketLines = ticket.getLines();
|
||||
if (ticketLines == null) {
|
||||
ticketLines = new ArrayList<>();
|
||||
}
|
||||
|
||||
TaxInfo stdTax = new TaxInfo("1", "STD", "001", null, null, 10, false, 1);
|
||||
|
||||
TicketLineInfo ticketLineInfo1 = new TicketLineInfo("1234", "test1", "001", "", 1, 10, stdTax);
|
||||
ticketLineInfo1.getProductID();
|
||||
ticketLineInfo1.setProperty("GROUP", "BOGO");
|
||||
ticketLineInfo1.setProperty("COUNT", "2");
|
||||
ticketLineInfo1.setProperty("PRICE", "5");
|
||||
|
||||
ticketLines.add(ticketLineInfo1);
|
||||
ticketLines.add(ticketLineInfo1);
|
||||
ticket.setLines(ticketLines);
|
||||
|
||||
return ticket;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user