Skip to content

Instantly share code, notes, and snippets.

View tomekw's full-sized avatar
🥇
🏅

Tomek Wałkuski tomekw

🥇
🏅
View GitHub Profile
@tomekw
tomekw / test_channel_spec.rb
Last active January 10, 2022 20:51
Unit testing ActionCable channels with RSpec
# app/channels/hello_channel.rb
class HelloChannel < ActionCable::Channel::Base
def say_hello(data)
times_to_say_hello = data.fetch("times_to_say_hello")
hello = "Hello, #{current_profile.name}!"
times_to_say_hello.times do
ActionCable.server.broadcast(current_profile.id, hello)
end
end
// file: src/main/kotlin/com/_98elements/Calculator.kt
package com._98elements
object Calculator {
fun add(a: Int, b: Int) = a + b
fun divide(a: Int, b: Int) = a / b
}
$ ./gradlew test
> Task :test FAILED
com._98elements.CalculatorSpec > adds 2 to 2 FAILED
org.opentest4j.AssertionFailedError at CalculatorSpec.kt:11
3 tests completed, 1 failed
FAILURE: Build failed with an exception.
$ ./gradlew test
BUILD SUCCESSFUL in 2s
3 actionable tasks: 2 executed, 1 up-to-date
// build.gradle
buildscript {
// use specific Kotlin version
ext.kotlin_version = '1.2.61'
}
plugins {
// install Kotlin JVM gradle plugin
id 'org.jetbrains.kotlin.jvm' version '1.2.61'
// settings.gradle
rootProject.name = 'calculator'
// file: src/test/kotlin/com/_98elements/CalculatorSpec.kt
package com._98elements
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.assertThrows
import org.spekframework.spek2.Spek
import org.spekframework.spek2.style.specification.describe
object CalculatorSpec: Spek({

Keybase proof

I hereby claim:

  • I am tomekw on github.
  • I am tomekw (https://keybase.io/tomekw) on keybase.
  • I have a public key whose fingerprint is E3DF 760E C16C 936E B949 11C2 081B 19A1 2D4C 4A8E

To claim this, I am signing this object:

@tomekw
tomekw / bubblebabble_ruby
Created September 21, 2016 09:28
Whiskey Tango Foxtrot
> require "digest/bubblebabble"
=> true
> Digest::SHA256.bubblebabble("_tomekw")
=> "xihag-nivyk-lucah-zekek-segyg-dimib-zeken-mepov-cilet-cegah-coteg-vipit-mybyg-cehor-kerec-gylyf-vaxux"
@tomekw
tomekw / the-programming-language-i-want.md
Created September 12, 2016 08:24
The programming language I want
  • statically-typed
  • strongly-typed
  • only one way to do one thing
  • no "syntax shortcuts" (cryptic operators, etc.)
  • immutability (value "classes", collections)
  • pattern matching
  • higher-order functions
  • readable syntax (lisp-case a.k.a. kebab-case indentifiers, do...end, def, etc.)
  • no need for an IDE
  • native binaries (optionally statically-linked)