referer_tracking 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +87 -23
  3. data/app/models/referer_tracking/tracking.rb +53 -0
  4. data/db/migrate/20150424090312_log_and_status.rb +6 -0
  5. data/lib/referer_tracking.rb +51 -22
  6. data/lib/referer_tracking/active_record_extensions.rb +11 -0
  7. data/lib/referer_tracking/controller_addons.rb +57 -0
  8. data/lib/referer_tracking/sweeper.rb +4 -66
  9. data/lib/referer_tracking/version.rb +1 -1
  10. data/test/dummy/app/controllers/users_controller.rb +12 -0
  11. data/test/dummy/app/models/user.rb +4 -0
  12. data/test/dummy/config/environments/test.rb +6 -1
  13. data/test/dummy/config/initializers/referer_tracking.rb +0 -2
  14. data/test/dummy/config/routes.rb +4 -1
  15. data/test/dummy/db/development.sqlite3 +0 -0
  16. data/test/dummy/db/schema.rb +17 -15
  17. data/test/dummy/db/test.sqlite3 +0 -0
  18. data/test/dummy/log/development.log +8 -0
  19. data/test/dummy/log/test.log +28156 -281
  20. data/test/dummy/tmp/cache/assets/test/sprockets/2cd8dbafa2066abde725994dae1058c3 +0 -0
  21. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  22. data/test/dummy/tmp/cache/assets/test/sprockets/669c55c2bc3e16bcc6e4ca54b102fda6 +0 -0
  23. data/test/dummy/tmp/cache/assets/test/sprockets/e067a273d5fdb6cc978465b152e662b5 +0 -0
  24. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  25. data/test/dummy/tmp/cache/assets/test/sprockets/fd2dc9334cabdf1812653883c577dfaf +0 -0
  26. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0G3oFbqJ7eFUY0UdwEjScsfwwbPpWiWBNw09qdd1ohI.cache +0 -0
  27. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0Z6bW0B1kuGtkIeYr4ThAL4uqYBz_KTiRnIbWojB7Aw.cache +1 -0
  28. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1H1i5_RyMh4B7slWyR-5HmOLlYMLqwBoIHac9sf2UGU.cache +1 -0
  29. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2i17CO5DMhuAQ23V2NrBSC1m1qGbVEcfTQPOZvRGs8E.cache +1 -0
  30. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/46JXON6AslwNbbvz__9ddRiVifnFuk8ifD2rSIS85-M.cache +0 -0
  31. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4JY-SwetEJ9O6ZGcQcZ26z5Lwa71xMfRmfgrUMivfFY.cache +0 -0
  32. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/523-OCQbCRB1j_tlqIjEssUe6m7reS6feGOWn7hrV4c.cache +0 -0
  33. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8SS1Jdp7AgUHgLl0L-2n3KE2-WflAeaChclAGEW_SFM.cache +1 -0
  34. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8yLF7Pm-8w-1cv3HnmHv6MSOWaTEPh6hBWRdTY7eCrI.cache +1 -0
  35. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9rTAa3n4m_1tnYuo_PQBUe9AHWAx8DmbK07tjEDBJYk.cache +2 -0
  36. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Awt8aE1L6iJxPHDB19XLUcrdBHzK7yH-x57kv_NKojU.cache +0 -0
  37. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Bee-ZlOeMpd0qyQPbZ3i8ZoH7Yhw2coD8YL3-9GViAw.cache +0 -0
  38. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DQ-VfoAVjHpu1y8DR1HQVmz_IAVzAgEOv2UGjbvlMLM.cache +1 -0
  39. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EQ5-Zi3kqng0IGc-dOuC3Nb6AJ7itxt2EhoMRjAZM78.cache +0 -0
  40. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HBa9hNZdUCrVlnn4DcWwu8ujBPsPhHj-SzAxTHx3gyM.cache +0 -0
  41. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JoQJIRS5fitTPBwEToHFffx8wzQh1OGFAu5xDSz11I8.cache +0 -0
  42. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MTXn13WRB7BfO1V3dblDHLOM3_n2bwr2PxtPNg0eo9A.cache +0 -0
  43. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MVvZCkjLbPbkR9gt8wskucEPJHuRZbsq0WzftgYgBrs.cache +1 -0
  44. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NGMpC_EFlJjbA20OjGoJtJfynmG55lVXqEBQElL0J8c.cache +1 -0
  45. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NW6MHRYmTMyI512aPcOJ4s6tgW0o_sXXmgrqQfKzkSs.cache +1 -0
  46. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O2agJjKw-HXlfsSATA2_aeqgAYO4bWrWRd1bcTN5_C0.cache +1 -0
  47. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OVj6tY43u7jqUGurvVYkWx3HFRru4oH1hxmXKnz_itc.cache +1 -0
  48. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PWG7LBu6STtK0n1rFJDQjW5x3J7tQd_Ij06lNYAzym0.cache +1 -0
  49. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PghEL7Jal_M5xfjdzxnW-Jiq-6kt7W49FaF44yRK3Yk.cache +0 -0
  50. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RYnKHL96X2OWT7cQwEm1CEbN-kP9jamPCD8Viq5WOJs.cache +2 -0
  51. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RvE2VrcnvR4vet1dyPKMSOu-qTSXJUVbsONOudiUiqo.cache +0 -0
  52. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YhdJORPRV4WeWGbpN4lF7qM1JemsU0sSBBFSeCjK5Zk.cache +2 -0
  53. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_zleWcY3FPsUHamwtaWVGPFC2ZrfVEdPcPxtZ0ncAKQ.cache +0 -0
  54. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aOYT6AMsiiCTko9bck34eQ_cpji7JFJkcO6Gih7XwY0.cache +0 -0
  55. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e6QsN5AJT0NQ1szDvc8kkfCz6XVVjVWDNHKP6f0YoSo.cache +2 -0
  56. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/esK4x1b0AOlLi9q6KDmOPKMPG6uS7tF2XVFfrQpIgwU.cache +1 -0
  57. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fUBHMp2rRJ2R0D76_G51M7lBmOZpVQzuaSjbitW7IFc.cache +1 -0
  58. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gBSV6LbejlEAByktpuqDpXQOiHSTl-EHI5c0MW6-8rw.cache +1 -0
  59. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/guTw1gpaRgyeuxZQ3eQFePUZcp9d-v1IWXG5qm_PTGY.cache +0 -0
  60. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hM0aSE9SRyMgQSqQY_G3js1_4dSng4Q9vnWpgMqFWTc.cache +0 -0
  61. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hg6DQjmNFxgP1ABwg213wrPGMurhGbyC2SJWF_eR3EM.cache +1 -0
  62. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/i0po6m1De10_m-wY5hbOaMN1dZbKIitPo3bn9EcqeA4.cache +0 -0
  63. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/igBCEQJL_hNTNkZQWbXcg0FX23pPTcv61SiuP8sww4Q.cache +0 -0
  64. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/im21DLPpH4nyd4LX8cmORbNfg7jUx_PEXXMwJA87Qsw.cache +1 -0
  65. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/joYQeCzbCCq4TvDcSpRWsiaR0i4HVRDhLBrQOenKw_U.cache +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jpA0RKjvuqt6qEaIASWc8qU1VB0Aydp6JgbzLhpGUOQ.cache +1 -0
  67. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k__HZRe6MJEx_es4mae2UKNJ7S-xQjjtNvuWfURI2L8.cache +1 -0
  68. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kl1-ITbGxlNpIH_bdRiAd4APIX9fZOYgmo0XXZcrvgo.cache +1 -0
  69. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mUqHquf2Zmd8u6uiyK61Ezlu1TcpGRVaTOWUxxGEi1Q.cache +2 -0
  70. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n8Aje18PD8oQE5TPpOTUD3BGZ7_TmvPPZ5eXDXoq8Gg.cache +1 -0
  71. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ngUc-SbI6D2rZ8MAICdvGgIewOpQ-2Pl0CILWKGcq3U.cache +0 -0
  72. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pwDXjciqVi1_CS4MlD2TH1ZqbzXchkMonNpsttR96Vk.cache +1 -0
  73. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qkq4_FDzkYw-Jgf-PQ1QvZRMOcpJieAhpakErII07uI.cache +2 -0
  74. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qmTv4Or54pJag3e-RuC8J8YBw5WvkzqP36yA1qF7brA.cache +0 -0
  75. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r6gN_QsTAf7c1o4Cst-frjvGHokmbxsEOdSr4mkMEJI.cache +1 -0
  76. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/reN5Eb8r7-aFzpa3gnf0d-hIULaqBhZbU3j6bHL8c54.cache +1 -0
  77. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ss0roaA9M5TQHC9lcaT0WzZ401TWw-pTCBcrTYorKrU.cache +1 -0
  78. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tZ-5zRkNGhZpjLydDPN14TgvqrG-sRsmhjHmD16K9w4.cache +0 -0
  79. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uAeR8lWRY18fsV62fVeVlDfQL-0svUgCWxUntrKiscM.cache +1 -0
  80. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ut0rmLnfJ-Ischq127ylQ8-6EKVPTiko_mqVVAuMli8.cache +0 -0
  81. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vXSDU5apajRzjlgKITJW6ww-R5nViNgTca-WgN2rQjA.cache +1 -0
  82. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/v_Ilb0G5vj-RNZGvNkGntio2WXLwx0dLgXj22KrEF1A.cache +1 -0
  83. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xE2R25fLVYnFI2W6I4LvT03gascYQsI-YR4dr_274d8.cache +0 -0
  84. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xyZgV6TicjUr8zQ2arynATHycCL5HEg4v44PTplSlCE.cache +1 -0
  85. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y9ZtIMFclPh-m6WSjAOTLR1Oz8oUv8IF4DdJDKgCgDE.cache +0 -0
  86. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zhLZKiMTXH3IgicVp2uI18ziLOLaV51MjYysWkjSLrw.cache +0 -0
  87. data/test/integration/referer_tracking/has_tracking_test.rb +31 -0
  88. data/test/integration/referer_tracking/referer_session_test.rb +42 -27
  89. data/test/test_helper.rb +1 -0
  90. data/test/tracking_test.rb +70 -0
  91. metadata +143 -9
  92. data/app/models/referer_tracking/referer_tracking.rb +0 -16
  93. data/test/referer_tracking_test.rb +0 -7
@@ -0,0 +1 @@
1
+ "%X�p5����9~]~BK�����s��}^���%
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/scaffold.css?type=text/css&pipeline=self&id=4b58d31b40a4e647d64f9e335a16a8420088145db3f94283fade801308d6fccb:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/users.js?type=application/javascript&pipeline=self&id=dd8635d01d2a16bae80cc009881d7230ed060381678722d58f145c114d1222d7:ET
@@ -0,0 +1 @@
1
+ "%�2r*����� ��3�z���4����f#G�
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&id=1ef49bbc37f56f9833ce1c170bd926404828891df170ed7d38974ffe19c2e0f3:ET
@@ -0,0 +1,2 @@
1
+ "%����͹mm�
2
+ a�l�|a56���v�6}��(&5
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&id=9fff6c6a32759b605670e289204c7dcebcf06da5b037b6e169951b25e74f51da:ET
@@ -0,0 +1 @@
1
+ "%��) `���kupwU�w�t�H^WL�J�j
@@ -0,0 +1 @@
1
+ "%֧�NTZq�בH�L��#p3��Jg!��)
@@ -0,0 +1 @@
1
+ "%��B�����șo�$'�A�d��L���xR�U
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=201a80fa0c7af9b424d927da388446b161f955a83a9e5e73e8175f126a609783:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/scaffold.css?type=text/css&pipeline=self&id=01a20573ab8fd49c5d549e7d1c030f32dd56149f204e6bfce0fcaf0f4bdeb8aa:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/users.css?type=text/css&pipeline=self&id=348b814d5c81e12430139198fef08a6a56802c87ed3dea45de372162700ec101:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"mfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery.js;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"mfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery.js;TT
@@ -0,0 +1,2 @@
1
+ "%�=h�C-�\h?u�A��)zڭa�!o
2
+ �ЋI
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/users.js?type=application/javascript&pipeline=self&id=6b6bb109cf11f76ce6a7207aeb6c2ad47c41d0165314e5c5265ff55f5545917a:ET
@@ -0,0 +1 @@
1
+ "%u�0b��^�#�ߜj�E�b��/��e�=
@@ -0,0 +1 @@
1
+ "%9�#�U�-���Jnݶ�W��Gx5>T�u�\x��:�
@@ -0,0 +1 @@
1
+ "%����"m�J���S��E�j!�/�d�]�/[���
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/users.css?type=text/css&pipeline=self&id=ebde941bd6993cde0de0ce8bf4803c7ce4c33e836b28cfd7f40073613dd5a7dc:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery.js?type=application/javascript&pipeline=self&id=9fb6e73d08ad1da139a394028dcc88f21252d2e941861b54920bf8b325634630:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=ab338b2d585dabf3fac146a8888f4e3d5fba2f78a8d1306a565c277606ae3fbf:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery_ujs.js?type=application/javascript&pipeline=self&id=a9cd4c4a302b11ccd2836b90ec1c19322c7d4cc772ec3697a44a5105e3360d9e:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"qfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery_ujs.js;TT
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-3.1.1/vendor/assets/javascripts/jquery.js?type=application/javascript&pipeline=self&id=a998d8e6a97b5e3e58e1896b2b512dec0c08ecd6ae9ef89f479a323032439a01:ET
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&id=c13db5b816ec7eb1935d8c4e4937b3f632613124164e65b9fe238f211b2cabd6:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"qfile-digest:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery_ujs.js;TT
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/.rvm/gems/ruby-2.2.2/gems/jquery-rails-4.0.3/vendor/assets/javascripts/jquery_ujs.js?type=application/javascript&pipeline=self&id=b0a84b9f9a4978eef599f8b71dd21032b44520fdd85fb3a78057c73eea5477f4:ET
@@ -0,0 +1 @@
1
+ "%����r���7-���>j��7؝o�7�a>�
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=2ac9adb17a163c69fb378e89be68cfd755fe843abf3a3f68b0c5e831176ed780:ET
@@ -0,0 +1 @@
1
+ "%��)��~&�mP�C?��EF@ �'���|k��
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=d5820b6a64b00abb7d753822fd3fdffd950a6e89761b6c49d7ab08c34bf5ac77:ET
@@ -0,0 +1 @@
1
+ "%��A�I8���߅�u7�!��H���j���\��|x
@@ -0,0 +1 @@
1
+ I"�file:///home/ohu/koodi/own_gems_programs/referer_tracking/test/dummy/app/assets/javascripts/application.js?type=application/javascript&id=b6d449d19b675a595fcaaf7240aa270ef4e7719283fab02c6290c9c34a86c0d2:ET
@@ -0,0 +1,31 @@
1
+ require "./test/test_helper"
2
+
3
+ class HasTrackingTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ test "should be ok to access tracking through user" do
7
+ u = User.first
8
+ u.create_tracking
9
+ u.tracking_add_log_line('should not error even if nil')
10
+ u.tracking_update_status('active')
11
+
12
+ assert_equal 2, u.tracking.log.lines.count
13
+ assert_equal 'active', u.tracking.status
14
+ end
15
+
16
+ test "should not error on nils" do
17
+ u = User.first
18
+ assert_nil u.tracking
19
+ u.tracking_add_log_line('should not error even if nil')
20
+ end
21
+
22
+ test "should not remove tracking even when removing trackable" do
23
+ u = User.first
24
+ tracking = u.create_tracking
25
+ u.destroy
26
+ assert RefererTracking::Tracking.where(:id => tracking.id).exists?
27
+ end
28
+
29
+
30
+ end
31
+
@@ -1,5 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../test_helper'
2
- #require 'test_helper'
1
+ require "./test/test_helper"
3
2
 
4
3
  class RefererSessionTest < ActionDispatch::IntegrationTest
5
4
  fixtures :all
@@ -9,7 +8,7 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
9
8
  end
10
9
 
11
10
  test "should save referer to session" do
12
- get 'users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
11
+ get '/users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
13
12
  assert_response :success
14
13
 
15
14
  ref = session["referer_tracking"]
@@ -20,11 +19,11 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
20
19
  end
21
20
 
22
21
  test "should not update session in second requests" do
23
- get 'users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
22
+ get '/users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
24
23
  assert_response :success
25
24
 
26
25
  user = User.first
27
- get "users/#{user.id}", {}, {"HTTP_REFERER" => "second_url"}
26
+ get "/users/#{user.id}", {}, {"HTTP_REFERER" => "second_url"}
28
27
 
29
28
  ref = session["referer_tracking"]
30
29
  assert_equal @referer, ref[:session_referer_url], "should not touch referer_url"
@@ -37,26 +36,26 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
37
36
  test "should be able to save models and safe referer_tracking at the same" do
38
37
  RefererTracking.save_cookies = true
39
38
 
40
- get 'users', {'gclib' => 'some_keyword', 'password' => 'secret', 'more' => 'things'}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
39
+ get '/users', {'gclib' => 'some_keyword', 'password' => 'secret', 'more' => 'things'}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
41
40
 
42
41
  assert !cookies['ref_track'].blank?, "should set tracking cookie"
43
42
  cookie_arr = cookies['ref_track'].split("|||")
44
43
  assert_equal 4, cookie_arr.length
45
44
 
46
- @original_count = RefererTracking::RefererTracking.count
45
+ @original_count = RefererTracking::Tracking.count
47
46
 
48
- post 'users', {:user => {:name => 'test name'}},
47
+ post '/users', {:user => {:name => (@name_test = "test name #{rand(9999999)}")}},
49
48
  {"HTTP_USER_AGENT" => (@user_agent = "som user agent"),
50
49
  "HTTP_REFERER" => (@current_request_referer = "localhost.inv/request_from_this_page")}
51
50
 
52
- assert_equal @original_count + 1, RefererTracking::RefererTracking.count, "did not create referer tracking"
51
+ assert_equal @original_count + 1, RefererTracking::Tracking.count, "did not create referer tracking"
53
52
 
54
53
  ref_session = session["referer_tracking"]
55
54
  assert_equal "http://www.example.com/users?gclib=some_keyword&pass=xxxx&more=things", ref_session[:session_first_url]
56
55
 
57
- ref_track = RefererTracking::RefererTracking.order(:created_at).last
58
-
56
+ ref_track = RefererTracking::Tracking.order(:created_at).last
59
57
  assert !ref_track.blank?, "did not create ref tracking"
58
+
60
59
  assert_equal @referer, ref_track.session_referer_url
61
60
  assert_equal ref_session[:session_first_url], ref_track.session_first_url
62
61
 
@@ -77,37 +76,38 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
77
76
  assert !ref_track.session_id.blank?
78
77
  assert !YAML::load(ref_track.cookies_yaml)["_dummy_session"].blank?, "should have saved the cookies in yaml"
79
78
 
80
- user = User.where(:name => 'test name').first
81
79
 
80
+ user = User.where(:name => @name_test).first
81
+ assert user, "Problem in test controller, did not create user right way"
82
+ assert_equal user, ref_track.trackable, "should be connected to created user"
82
83
  assert_equal user.id, ref_track.trackable.id, "models didn't match from ref_track.trackable"
83
-
84
- assert_equal user.referer_tracking.id, ref_track.id, "models didn't match from user.referer_tracking"
84
+ assert_equal user.tracking.id, ref_track.id, "models didn't match from user.referer_tracking"
85
85
 
86
- put "users/#{user.id}", {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
87
- assert_equal @original_count + 1, RefererTracking::RefererTracking.count, "should not create RefererTracking on normal save"
86
+ put "/users/#{user.id}", {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
87
+ assert_equal @original_count + 1, RefererTracking::Tracking.count, "should not create RefererTracking on normal save"
88
88
 
89
89
  end
90
90
 
91
91
 
92
92
  test "error in sweeper should not result error in response" do
93
- get 'users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
93
+ get '/users', {}, {"HTTP_REFERER" => (@referer = "www.some-source-forward.com")}
94
94
 
95
- RefererTracking::RefererTracking.any_instance.stubs(:save).raises(Exception)
95
+ RefererTracking::Tracking.any_instance.stubs(:save).raises(Exception)
96
96
 
97
- post 'users', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
97
+ post '/users', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
98
98
 
99
99
  assert_response :redirect
100
100
  end
101
101
 
102
- test "should try to make urls parseable before saving" do
102
+ test "be ok when url size limit is between encoded chars" do
103
103
  RefererTracking.set_referer_cookies_ref_url_max_length = 50
104
104
  referer_url = "http://test.xd/?url=http%3A%2F%2Ftest.inv%2Ftest%2Ftest"
105
- parseable_url = "http://test.xd/?url=http%3A%2F%2Ftest.inv%2Ftest"
106
- get 'users', {}, {"HTTP_REFERER" => referer_url}
105
+ parseable_url = "http://test.xd/?url=http%3A%2F%2Ftest.inv%2Ftest%2" # first 50 chars, ending %2
106
+ get '/users', {}, {"HTTP_REFERER" => referer_url}
107
107
  assert_response :success
108
108
 
109
- post 'users', {}
110
- resulted_url = RefererTracking::RefererTracking.first.cookie_referer_url
109
+ post '/users', {}
110
+ resulted_url = RefererTracking::Tracking.first.cookie_referer_url
111
111
 
112
112
  assert_equal parseable_url, resulted_url, "should have a parseable referer url"
113
113
  end
@@ -115,14 +115,29 @@ class RefererSessionTest < ActionDispatch::IntegrationTest
115
115
  test "should stop trying and return the original if url appears unparseable" do
116
116
  RefererTracking.set_referer_cookies_ref_url_max_length = 50
117
117
  original_url = "http\im_actually€Not-Aparseable&URL%"
118
- get 'users', {}, {"HTTP_REFERER" => original_url}
118
+ get '/users', {}, {"HTTP_REFERER" => original_url}
119
119
  assert_response :success
120
120
 
121
- post 'users', {}
122
- resulted_url = RefererTracking::RefererTracking.first.cookie_referer_url
121
+ post '/users', {}
122
+ assert_equal 1, RefererTracking::Tracking.count, "should create one item"
123
+ resulted_url = RefererTracking::Tracking.first.cookie_referer_url
123
124
 
124
125
  assert_equal original_url, resulted_url, "should return the original url when unparseable"
125
126
  end
126
127
 
128
+ test "custom referer_tracking save work and still should save only one item per request asdf" do
129
+ RefererTracking.save_cookies = true
130
+
131
+ post '/users/create_with_custom_saving', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
132
+ assert_equal 1, RefererTracking::Tracking.count, "should create one item"
133
+ end
134
+
135
+ test "custom referer_tracking save should not save if item itself is not saved" do
136
+ RefererTracking.save_cookies = true
137
+
138
+ post '/users/build_without_saving', {:user => {:name => 'test name'}}, {"HTTP_USER_AGENT" => (@user_agent = "som user agent")}
139
+ assert_equal 0, RefererTracking::Tracking.count, "should create one item"
140
+ end
141
+
127
142
  end
128
143
 
data/test/test_helper.rb CHANGED
@@ -3,6 +3,7 @@ ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
+ require "mocha/setup"
6
7
 
7
8
  Rails.backtrace_cleaner.remove_silencers!
8
9
 
@@ -0,0 +1,70 @@
1
+ require "./test/test_helper"
2
+
3
+ class TrackingTest < ActiveSupport::TestCase
4
+ test "module test" do
5
+ assert_kind_of Module, RefererTracking
6
+ end
7
+
8
+ test "first_url_combined should return cookie url if given" do
9
+ rt = RefererTracking::Tracking.new
10
+ rt.session_first_url = 'session_url'
11
+ assert_equal 'session_url', rt.first_url_combined
12
+ rt.cookie_first_url = 'cookie_url'
13
+ assert_equal 'cookie_url', rt.first_url_combined
14
+ end
15
+
16
+ test "add_log_line should work ok" do
17
+ rt = RefererTracking::Tracking.create
18
+
19
+ rt.add_log_line 'first_line'
20
+
21
+ rt.add_log_line "second\nline"
22
+
23
+ assert (log = RefererTracking::Tracking.last.log)
24
+ assert_equal 2, log.to_s.lines.count
25
+ assert_match /#{Date.today.to_s(:db)}.*: first_line$/, log.lines.first
26
+ assert_match /#{Date.today.to_s(:db)}.*: second line/, log.lines.last
27
+ end
28
+
29
+ test "status_without_save" do
30
+ rt_created = RefererTracking::Tracking.create
31
+ rt_created.update_status 'active'
32
+ assert !rt_created.changed?
33
+ rt_created.status = 'new_status'
34
+ assert rt_created.changed?
35
+ end
36
+
37
+ test "status change" do
38
+ rt_created = RefererTracking::Tracking.create
39
+ rt_created.update_status 'active'
40
+
41
+ rt = RefererTracking::Tracking.last
42
+ assert_equal 'active', rt.status
43
+ assert_equal 1, rt.log.lines.count
44
+ assert_match /#{Date.today.to_s(:db)}.*: status active$/, rt.log
45
+
46
+ rt.update_status 'active'
47
+ assert_equal 1, rt.log.lines.count, "should not alter anything if status stays the same"
48
+ end
49
+
50
+ test "get_log_lines" do
51
+ rt_created = RefererTracking::Tracking.create
52
+ rt_created.status = 'active'
53
+ rt_created.add_log_line 'first_line common'
54
+ rt_created.add_log_line 'second_line common'
55
+ rt_created.add_log_line 'third thing'
56
+
57
+ rt = RefererTracking::Tracking.last
58
+
59
+ match_arr = rt.get_log_lines(/second/)
60
+ assert_equal 1, match_arr.size
61
+ result_line = match_arr.first
62
+ assert result_line.first > 10.seconds.ago && result_line.first < Time.now
63
+ assert result_line.last
64
+
65
+ match_arr = rt.get_log_lines(/common/)
66
+ assert_equal 2, match_arr.size
67
+ assert_equal 'first_line common', match_arr.first.last
68
+ assert_equal 'second_line common', match_arr.last.last
69
+ end
70
+ end