Skip to content

Instantly share code, notes, and snippets.

View nayeemzen's full-sized avatar

Nayeem Zen nayeemzen

View GitHub Profile
@nayeemzen
nayeemzen / jenkins_docker_pipeline_example
Created January 29, 2019 04:41
Example JENKINSFILE running two different versions of Java in docker containers.
pipeline {
agent none
stages {
stage('maven_3_jdk_13') {
agent {
docker {
image 'maven:3-jdk-13'
label 'slave-1'
}
}
@nayeemzen
nayeemzen / functional-query-string-parser.ts
Created October 23, 2018 18:41
Functional programming approach to parsing query strings in Typescript/ES6
// Functional programming approach to parsing query strings in Typescript/ES6.
function parseQueryString(search: string) {
return (search.startsWith('?') ? search.substring(1) : search)
.split('&')
.map(str => {
const eqIdx = str.indexOf('=');
if (eqIdx <= 0 || eqIdx >= str.length - 1) {
return {};
}
class AddressVerifier {
  private MapsClient mapsClient;
public AddressVerifier(MapsClient mapsClient) {
this.mapsClient = mapsClient;
}
public boolean isVerified(String address) {
return mapsClient.isVerified(address);
}
// Now we can have multiple implementations of MapClient interface.
class GoogleMapsClientImpl implements MapsClient {
  private GoogleMapsClient googleMapsClient;
public GoogleMapsClientImpl(GoogleMapsClient client) {
googleMapsClient = client;
}
@Override
interface MapsClient {
 public boolean isVerified();
}
class AddressVerifierTest {
  @Test public void basicTest() {
// We can use a mocking framework to mock the implementation.
GoogleMapsClient mockMapsClient = mock(GoogleMapsClient.class);
when(mockMapsClient.verifyAddress(SOME_INVALID_TEST_ADDRESS)).return(Result.FAILED);
when(mockMapsClient.verifyAddress(SOME_VALID_TEST_ADDRESS)).return(Result.SUCCESS);
AddressVerifier verifier = new AddressVerifier(mockMapsClient);
assertThat(verifier.isVerified(SOME_INVALID_TEST_ADDRESS)).isFalse();
assertThat(verifier.isVerified(SOME_VALID_TEST_ADDRESS)).isTrue();
// WOOOHOOO! OUR TESTS ARE NOW FULLY INDEPENDENT OF GOOGLE MAPS CLIENT! WE TEST OUR OWN CODE, NOT THEIRS!
class AddressVerifier {
private GoogleMapsClient googleMapsClient;
public AddressVerifier(GoogleMapsClient googleMapsClient) {
this.googleMapsClient = googleMapsClient;
}
public boolean isVerified(String address) {
Result verificationResult = googleMapsClient.verifyAddress(address).result;
return verificationResult == Result.SUCCESS;
}
class AddressVerifierTest {
@Test public void basicTest() {
AddressVerifier verifier = new AddressVerifier();
assertThat(verifer.isVerified(SOME_INVALID_TEST_ADDRESS)).isFalse();
assertThat(verifer.isVerified(SOME_VALID_TEST_ADDRESS)).isTrue();
}
}
class AddressVerifier {
private GoogleMapsClient googleMapsClient;
public AddressVerifier() {
googleMapsClient = new GoogleMapsClient();
}
public boolean isVerified(String address) {
Result verificationResult = googleMapsClient.verifyAddress(address).result;
return verificationResult == Result.SUCCESS;
}