package com.nimbits.it.basic;
import com.google.common.base.Optional;
import com.nimbits.client.model.category.Category;
import com.nimbits.client.model.category.CategoryModel;
import com.nimbits.client.model.entity.Entity;
import com.nimbits.client.model.point.Point;
import com.nimbits.client.model.point.PointModel;
import com.nimbits.client.model.value.Value;
import com.nimbits.client.model.webhook.HttpMethod;
import com.nimbits.client.model.webhook.WebHook;
import com.nimbits.client.model.webhook.WebHookModel;
import com.nimbits.it.AbstractNimbitsTest;
import org.junit.Before;
import org.junit.Test;
import retrofit.RetrofitError;
import java.util.Random;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class V3FindThingsExamples extends AbstractNimbitsTest {
@Before
public void setUp() throws Exception {
super.setUp();
}
@Test
public void executeTest() throws InterruptedException {
String pointName = UUID.randomUUID().toString();
//create a point under the top level user with a random name
Point point = new PointModel.Builder().name(pointName).parent(user.getId())
.highAlarmOn(true)
.highAlarm(100.00)
.lowAlarmOn(true)
.lowAlarm(0.0)
.create();
Entity newPoint = nimbits.addPoint(user, point);
log("Created : " + newPoint.getName().getValue());
Optional<Point> foundPoint = nimbits.findPointByName(pointName);
if (foundPoint.isPresent()) {
log("verified point");
if (!foundPoint.get().isHighAlarmOn() || !foundPoint.get().isLowAlarmOn()) {
throw new RuntimeException(" Alarm was off when it was set to on!");
}
} else {
throw new RuntimeException("Point not found after being created and searched for");
}
//search for a point that was never created to test absent condition
try {
Optional<Point> shouldNotExist = nimbits.findPointByName(UUID.randomUUID().toString());
} catch (RetrofitError error) {
assertEquals(404, error.getResponse().getStatus());
}
//Record some values with the name only
double testValue = 100.00 * new Random().nextDouble();
Value value = new Value.Builder().doubleValue(testValue).create();
nimbits.recordValue(pointName, value);
Thread.sleep(1000);
Value retrieved = nimbits.getSnapshot(pointName);
assertEquals(value.getDoubleValue(), retrieved.getDoubleValue(), 0.001);
veryifyFindCategory();
veryifyFindWebHook();
}
private void veryifyFindCategory() {
String name = UUID.randomUUID().toString();
try {
Optional<Category> result = nimbits.findCategory("i dont exist");
} catch (RetrofitError error) {
assertEquals(404, error.getResponse().getStatus());
}
Category category = new CategoryModel.Builder().name(name).create();
nimbits.addCategory(user, category);
Optional<Category> verify = nimbits.findCategory(name);
assertTrue(verify.isPresent());
}
private void veryifyFindWebHook() {
String name = UUID.randomUUID().toString();
try {
Optional<WebHook> result = nimbits.findWebHook("i dont exist");
} catch (RetrofitError error) {
assertEquals(404, error.getResponse().getStatus());
}
WebHook webHook = new WebHookModel.Builder()
.name(name)
.method(HttpMethod.GET)
.url("http://www.foo.com")
.create();
nimbits.addWebHook(user, webHook);
Optional<WebHook> verify = nimbits.findWebHook(name);
assertTrue(verify.isPresent());
}
}